summaryrefslogtreecommitdiffstats
path: root/js/src/tests/test262
diff options
context:
space:
mode:
authorMatt A. Tobin <mattatobin@localhost.localdomain>2018-02-02 04:16:08 -0500
committerMatt A. Tobin <mattatobin@localhost.localdomain>2018-02-02 04:16:08 -0500
commit5f8de423f190bbb79a62f804151bc24824fa32d8 (patch)
tree10027f336435511475e392454359edea8e25895d /js/src/tests/test262
parent49ee0794b5d912db1f95dce6eb52d781dc210db5 (diff)
downloadUXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar
UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar.gz
UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar.lz
UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar.xz
UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.zip
Add m-esr52 at 52.6.0
Diffstat (limited to 'js/src/tests/test262')
-rw-r--r--js/src/tests/test262/HG-INFO7
-rw-r--r--js/src/tests/test262/LICENSE28
-rw-r--r--js/src/tests/test262/browser.js11
-rw-r--r--js/src/tests/test262/built-ins/Object/getOwnPropertyDescriptors/duplicate-keys.js38
-rw-r--r--js/src/tests/test262/built-ins/Object/getOwnPropertyDescriptors/exception-not-object-coercible.js16
-rw-r--r--js/src/tests/test262/built-ins/Object/getOwnPropertyDescriptors/function-length.js16
-rw-r--r--js/src/tests/test262/built-ins/Object/getOwnPropertyDescriptors/function-name.js20
-rw-r--r--js/src/tests/test262/built-ins/Object/getOwnPropertyDescriptors/function-property-descriptor.js14
-rw-r--r--js/src/tests/test262/built-ins/Object/getOwnPropertyDescriptors/inherited-properties-omitted.js43
-rw-r--r--js/src/tests/test262/built-ins/Object/getOwnPropertyDescriptors/normal-object.js13
-rw-r--r--js/src/tests/test262/built-ins/Object/getOwnPropertyDescriptors/observable-operations.js34
-rw-r--r--js/src/tests/test262/built-ins/Object/getOwnPropertyDescriptors/primitive-booleans.js16
-rw-r--r--js/src/tests/test262/built-ins/Object/getOwnPropertyDescriptors/primitive-numbers.js15
-rw-r--r--js/src/tests/test262/built-ins/Object/getOwnPropertyDescriptors/primitive-strings.js33
-rw-r--r--js/src/tests/test262/built-ins/Object/getOwnPropertyDescriptors/primitive-symbols.js13
-rw-r--r--js/src/tests/test262/built-ins/Object/getOwnPropertyDescriptors/proxy-undefined-descriptor.js32
-rw-r--r--js/src/tests/test262/built-ins/Object/getOwnPropertyDescriptors/shell.js27
-rw-r--r--js/src/tests/test262/built-ins/Object/getOwnPropertyDescriptors/symbols-included.js38
-rw-r--r--js/src/tests/test262/built-ins/Object/getOwnPropertyDescriptors/tamper-with-global-object.js21
-rw-r--r--js/src/tests/test262/built-ins/Object/getOwnPropertyDescriptors/tamper-with-object-keys.js22
-rw-r--r--js/src/tests/test262/built-ins/Object/shell.js0
-rw-r--r--js/src/tests/test262/built-ins/shell.js0
-rw-r--r--js/src/tests/test262/ch06/6.1.js21
-rw-r--r--js/src/tests/test262/ch06/browser.js0
-rw-r--r--js/src/tests/test262/ch06/shell.js0
-rw-r--r--js/src/tests/test262/ch07/7.2/S7.2_A1.1_T1.js40
-rw-r--r--js/src/tests/test262/ch07/7.2/S7.2_A1.1_T2.js22
-rw-r--r--js/src/tests/test262/ch07/7.2/S7.2_A1.2_T1.js40
-rw-r--r--js/src/tests/test262/ch07/7.2/S7.2_A1.2_T2.js23
-rw-r--r--js/src/tests/test262/ch07/7.2/S7.2_A1.3_T1.js40
-rw-r--r--js/src/tests/test262/ch07/7.2/S7.2_A1.3_T2.js23
-rw-r--r--js/src/tests/test262/ch07/7.2/S7.2_A1.4_T1.js22
-rw-r--r--js/src/tests/test262/ch07/7.2/S7.2_A1.4_T2.js23
-rw-r--r--js/src/tests/test262/ch07/7.2/S7.2_A1.5_T1.js22
-rw-r--r--js/src/tests/test262/ch07/7.2/S7.2_A1.5_T2.js23
-rw-r--r--js/src/tests/test262/ch07/7.2/S7.2_A2.1_T1.js20
-rw-r--r--js/src/tests/test262/ch07/7.2/S7.2_A2.1_T2.js15
-rw-r--r--js/src/tests/test262/ch07/7.2/S7.2_A2.2_T1.js20
-rw-r--r--js/src/tests/test262/ch07/7.2/S7.2_A2.2_T2.js15
-rw-r--r--js/src/tests/test262/ch07/7.2/S7.2_A2.3_T1.js20
-rw-r--r--js/src/tests/test262/ch07/7.2/S7.2_A2.3_T2.js15
-rw-r--r--js/src/tests/test262/ch07/7.2/S7.2_A2.4_T1.js20
-rw-r--r--js/src/tests/test262/ch07/7.2/S7.2_A2.4_T2.js15
-rw-r--r--js/src/tests/test262/ch07/7.2/S7.2_A2.5_T1.js15
-rw-r--r--js/src/tests/test262/ch07/7.2/S7.2_A2.5_T2.js15
-rw-r--r--js/src/tests/test262/ch07/7.2/S7.2_A3.1_T1.js20
-rw-r--r--js/src/tests/test262/ch07/7.2/S7.2_A3.1_T2.js17
-rw-r--r--js/src/tests/test262/ch07/7.2/S7.2_A3.2_T1.js20
-rw-r--r--js/src/tests/test262/ch07/7.2/S7.2_A3.2_T2.js17
-rw-r--r--js/src/tests/test262/ch07/7.2/S7.2_A3.3_T1.js20
-rw-r--r--js/src/tests/test262/ch07/7.2/S7.2_A3.3_T2.js17
-rw-r--r--js/src/tests/test262/ch07/7.2/S7.2_A3.4_T1.js20
-rw-r--r--js/src/tests/test262/ch07/7.2/S7.2_A3.4_T2.js17
-rw-r--r--js/src/tests/test262/ch07/7.2/S7.2_A3.5_T1.js20
-rw-r--r--js/src/tests/test262/ch07/7.2/S7.2_A3.5_T2.js17
-rw-r--r--js/src/tests/test262/ch07/7.2/S7.2_A4.1_T1.js20
-rw-r--r--js/src/tests/test262/ch07/7.2/S7.2_A4.1_T2.js17
-rw-r--r--js/src/tests/test262/ch07/7.2/S7.2_A4.2_T1.js20
-rw-r--r--js/src/tests/test262/ch07/7.2/S7.2_A4.2_T2.js17
-rw-r--r--js/src/tests/test262/ch07/7.2/S7.2_A4.3_T1.js20
-rw-r--r--js/src/tests/test262/ch07/7.2/S7.2_A4.3_T2.js17
-rw-r--r--js/src/tests/test262/ch07/7.2/S7.2_A4.4_T1.js20
-rw-r--r--js/src/tests/test262/ch07/7.2/S7.2_A4.4_T2.js17
-rw-r--r--js/src/tests/test262/ch07/7.2/S7.2_A4.5_T1.js20
-rw-r--r--js/src/tests/test262/ch07/7.2/S7.2_A4.5_T2.js17
-rw-r--r--js/src/tests/test262/ch07/7.2/S7.2_A5_T1.js13
-rw-r--r--js/src/tests/test262/ch07/7.2/S7.2_A5_T2.js13
-rw-r--r--js/src/tests/test262/ch07/7.2/S7.2_A5_T3.js13
-rw-r--r--js/src/tests/test262/ch07/7.2/S7.2_A5_T4.js13
-rw-r--r--js/src/tests/test262/ch07/7.2/S7.2_A5_T5.js13
-rw-r--r--js/src/tests/test262/ch07/7.2/browser.js0
-rw-r--r--js/src/tests/test262/ch07/7.2/shell.js0
-rw-r--r--js/src/tests/test262/ch07/7.3/7.3-1.js16
-rw-r--r--js/src/tests/test262/ch07/7.3/7.3-10.js20
-rw-r--r--js/src/tests/test262/ch07/7.3/7.3-11.js19
-rw-r--r--js/src/tests/test262/ch07/7.3/7.3-12.js19
-rw-r--r--js/src/tests/test262/ch07/7.3/7.3-13.js19
-rw-r--r--js/src/tests/test262/ch07/7.3/7.3-14.js19
-rw-r--r--js/src/tests/test262/ch07/7.3/7.3-15.js16
-rw-r--r--js/src/tests/test262/ch07/7.3/7.3-2.js16
-rw-r--r--js/src/tests/test262/ch07/7.3/7.3-3.js20
-rw-r--r--js/src/tests/test262/ch07/7.3/7.3-4.js20
-rw-r--r--js/src/tests/test262/ch07/7.3/7.3-5.js16
-rw-r--r--js/src/tests/test262/ch07/7.3/7.3-6.js16
-rw-r--r--js/src/tests/test262/ch07/7.3/7.3-7.js21
-rw-r--r--js/src/tests/test262/ch07/7.3/7.3-8.js21
-rw-r--r--js/src/tests/test262/ch07/7.3/7.3-9.js20
-rw-r--r--js/src/tests/test262/ch07/7.3/S7.3_A1.1_T1.js40
-rw-r--r--js/src/tests/test262/ch07/7.3/S7.3_A1.1_T2.js19
-rw-r--r--js/src/tests/test262/ch07/7.3/S7.3_A1.2_T1.js40
-rw-r--r--js/src/tests/test262/ch07/7.3/S7.3_A1.2_T2.js19
-rw-r--r--js/src/tests/test262/ch07/7.3/S7.3_A1.3.js23
-rw-r--r--js/src/tests/test262/ch07/7.3/S7.3_A1.4.js25
-rw-r--r--js/src/tests/test262/ch07/7.3/S7.3_A2.1_T1.js16
-rw-r--r--js/src/tests/test262/ch07/7.3/S7.3_A2.1_T2.js17
-rw-r--r--js/src/tests/test262/ch07/7.3/S7.3_A2.2_T1.js16
-rw-r--r--js/src/tests/test262/ch07/7.3/S7.3_A2.2_T2.js17
-rw-r--r--js/src/tests/test262/ch07/7.3/S7.3_A2.3.js16
-rw-r--r--js/src/tests/test262/ch07/7.3/S7.3_A2.4.js16
-rw-r--r--js/src/tests/test262/ch07/7.3/S7.3_A3.1_T1.js14
-rw-r--r--js/src/tests/test262/ch07/7.3/S7.3_A3.1_T2.js14
-rw-r--r--js/src/tests/test262/ch07/7.3/S7.3_A3.1_T3.js15
-rw-r--r--js/src/tests/test262/ch07/7.3/S7.3_A3.2_T1.js14
-rw-r--r--js/src/tests/test262/ch07/7.3/S7.3_A3.2_T2.js14
-rw-r--r--js/src/tests/test262/ch07/7.3/S7.3_A3.2_T3.js15
-rw-r--r--js/src/tests/test262/ch07/7.3/S7.3_A3.3_T1.js14
-rw-r--r--js/src/tests/test262/ch07/7.3/S7.3_A3.3_T2.js14
-rw-r--r--js/src/tests/test262/ch07/7.3/S7.3_A3.4_T1.js14
-rw-r--r--js/src/tests/test262/ch07/7.3/S7.3_A3.4_T2.js14
-rw-r--r--js/src/tests/test262/ch07/7.3/S7.3_A4_T1.js20
-rw-r--r--js/src/tests/test262/ch07/7.3/S7.3_A4_T2.js20
-rw-r--r--js/src/tests/test262/ch07/7.3/S7.3_A4_T3.js20
-rw-r--r--js/src/tests/test262/ch07/7.3/S7.3_A4_T4.js20
-rw-r--r--js/src/tests/test262/ch07/7.3/S7.3_A5.1_T1.js20
-rw-r--r--js/src/tests/test262/ch07/7.3/S7.3_A5.1_T2.js22
-rw-r--r--js/src/tests/test262/ch07/7.3/S7.3_A5.2_T1.js20
-rw-r--r--js/src/tests/test262/ch07/7.3/S7.3_A5.2_T2.js22
-rw-r--r--js/src/tests/test262/ch07/7.3/S7.3_A5.3.js20
-rw-r--r--js/src/tests/test262/ch07/7.3/S7.3_A5.4.js20
-rw-r--r--js/src/tests/test262/ch07/7.3/S7.3_A6_T1.js13
-rw-r--r--js/src/tests/test262/ch07/7.3/S7.3_A6_T2.js13
-rw-r--r--js/src/tests/test262/ch07/7.3/S7.3_A6_T3.js13
-rw-r--r--js/src/tests/test262/ch07/7.3/S7.3_A6_T4.js13
-rw-r--r--js/src/tests/test262/ch07/7.3/S7.3_A7_T1.js57
-rw-r--r--js/src/tests/test262/ch07/7.3/S7.3_A7_T2.js57
-rw-r--r--js/src/tests/test262/ch07/7.3/S7.3_A7_T3.js57
-rw-r--r--js/src/tests/test262/ch07/7.3/S7.3_A7_T4.js57
-rw-r--r--js/src/tests/test262/ch07/7.3/S7.3_A7_T5.js57
-rw-r--r--js/src/tests/test262/ch07/7.3/S7.3_A7_T6.js57
-rw-r--r--js/src/tests/test262/ch07/7.3/S7.3_A7_T7.js57
-rw-r--r--js/src/tests/test262/ch07/7.3/S7.3_A7_T8.js57
-rw-r--r--js/src/tests/test262/ch07/7.3/browser.js0
-rw-r--r--js/src/tests/test262/ch07/7.3/shell.js0
-rw-r--r--js/src/tests/test262/ch07/7.4/S7.4_A1_T1.js44
-rw-r--r--js/src/tests/test262/ch07/7.4/S7.4_A1_T2.js13
-rw-r--r--js/src/tests/test262/ch07/7.4/S7.4_A2_T1.js78
-rw-r--r--js/src/tests/test262/ch07/7.4/S7.4_A2_T2.js13
-rw-r--r--js/src/tests/test262/ch07/7.4/S7.4_A3.js20
-rw-r--r--js/src/tests/test262/ch07/7.4/S7.4_A4_T1.js16
-rw-r--r--js/src/tests/test262/ch07/7.4/S7.4_A4_T2.js15
-rw-r--r--js/src/tests/test262/ch07/7.4/S7.4_A4_T3.js16
-rw-r--r--js/src/tests/test262/ch07/7.4/S7.4_A4_T4.js16
-rw-r--r--js/src/tests/test262/ch07/7.4/S7.4_A4_T5.js14
-rw-r--r--js/src/tests/test262/ch07/7.4/S7.4_A4_T6.js14
-rw-r--r--js/src/tests/test262/ch07/7.4/S7.4_A4_T7.js17
-rw-r--r--js/src/tests/test262/ch07/7.4/S7.4_A5.js49
-rw-r--r--js/src/tests/test262/ch07/7.4/S7.4_A6.js57
-rw-r--r--js/src/tests/test262/ch07/7.4/browser.js0
-rw-r--r--js/src/tests/test262/ch07/7.4/shell.js0
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6-1.js20
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6-10.js20
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6-11.js20
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6-12.js20
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6-13.js20
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6-14.js20
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6-15.js20
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6-16.js20
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6-17.js20
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6-18.js20
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6-19.js20
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6-2.js20
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6-20.js20
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6-21.js20
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6-22.js20
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6-23.js20
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6-24.js20
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6-25.js20
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6-26.js20
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6-27.js20
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6-28.js20
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6-29.js20
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6-3.js20
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6-30.js20
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6-31.js20
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6-32.js20
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6-33.js20
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6-34.js20
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6-35.js20
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6-36.js20
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6-4.js20
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6-5.js20
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6-6.js20
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6-7.js20
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6-8.js20
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6-9.js20
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-1-1.js34
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-1-10.js34
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-1-11.js34
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-1-12.js34
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-1-13.js34
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-1-14.js34
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-1-15.js34
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-1-16.js34
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-1-2.js34
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-1-3.js34
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-1-4.js34
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-1-5.js34
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-1-6.js34
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-1-7.js34
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-1-8.js34
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-1-9.js34
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-2-1.js33
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-2-10.js33
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-2-11.js33
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-2-12.js33
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-2-13.js33
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-2-14.js33
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-2-15.js33
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-2-16.js33
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-2-2.js33
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-2-3.js33
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-2-4.js33
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-2-5.js33
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-2-6.js33
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-2-7.js33
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-2-8.js33
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-2-9.js33
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-3-1.js33
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-3-10.js33
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-3-11.js33
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-3-12.js33
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-3-13.js33
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-3-14.js33
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-3-15.js33
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-3-16.js33
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-3-2.js33
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-3-3.js33
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-3-4.js33
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-3-5.js33
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-3-6.js33
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-3-7.js33
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-3-8.js33
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-3-9.js33
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-4-1.js50
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-4-10.js50
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-4-11.js50
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-4-12.js50
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-4-13.js50
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-4-14.js50
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-4-15.js50
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-4-16.js50
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-4-2.js50
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-4-3.js50
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-4-4.js50
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-4-5.js50
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-4-6.js50
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-4-7.js50
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-4-8.js50
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-4-9.js50
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-5-1.js30
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-5-10.js30
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-5-11.js30
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-5-12.js30
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-5-13.js30
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-5-14.js30
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-5-15.js30
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-5-16.js30
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-5-2.js30
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-5-3.js30
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-5-4.js30
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-5-5.js30
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-5-6.js30
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-5-7.js30
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-5-8.js30
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-5-9.js30
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-6-1.js29
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-6-10.js29
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-6-11.js29
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-6-12.js29
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-6-13.js29
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-6-14.js29
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-6-15.js29
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-6-16.js29
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-6-2.js29
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-6-3.js29
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-6-4.js29
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-6-5.js29
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-6-6.js29
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-6-7.js29
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-6-8.js29
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-6-9.js29
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-7-1.js29
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-7-10.js29
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-7-11.js29
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-7-12.js29
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-7-13.js29
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-7-14.js29
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-7-15.js29
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-7-16.js29
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-7-2.js29
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-7-3.js29
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-7-4.js29
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-7-5.js29
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-7-6.js29
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-7-7.js29
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-7-8.js29
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-7-9.js29
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-8-1.js46
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-8-10.js46
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-8-11.js46
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-8-12.js46
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-8-13.js46
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-8-14.js46
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-8-15.js46
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-8-16.js46
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-8-2.js46
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-8-3.js46
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-8-4.js46
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-8-5.js46
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-8-6.js46
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-8-7.js46
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-8-8.js46
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-8-9.js46
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.1/S7.6.1.1_A1.1.js13
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.1/S7.6.1.1_A1.10.js13
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.1/S7.6.1.1_A1.11.js13
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.1/S7.6.1.1_A1.12.js13
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.1/S7.6.1.1_A1.13.js13
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.1/S7.6.1.1_A1.14.js13
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.1/S7.6.1.1_A1.15.js13
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.1/S7.6.1.1_A1.16.js13
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.1/S7.6.1.1_A1.17.js13
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.1/S7.6.1.1_A1.18.js13
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.1/S7.6.1.1_A1.19.js13
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.1/S7.6.1.1_A1.2.js13
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.1/S7.6.1.1_A1.20.js13
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.1/S7.6.1.1_A1.21.js13
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.1/S7.6.1.1_A1.22.js13
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.1/S7.6.1.1_A1.23.js13
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.1/S7.6.1.1_A1.24.js13
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.1/S7.6.1.1_A1.25.js13
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.1/S7.6.1.1_A1.3.js13
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.1/S7.6.1.1_A1.4.js13
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.1/S7.6.1.1_A1.5.js13
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.1/S7.6.1.1_A1.6.js13
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.1/S7.6.1.1_A1.7.js13
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.1/S7.6.1.1_A1.8.js13
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.1/S7.6.1.1_A1.9.js13
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.1/browser.js0
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.1/shell.js0
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2-1gs.js16
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/7.6.1-17-s.js23
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/7.6.1-18-s.js23
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/7.6.1-19-s.js22
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/7.6.1-20-s.js22
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/7.6.1-21-s.js25
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/7.6.1-22-s.js25
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/7.6.1-23-s.js25
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/7.6.1-24-s.js25
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/7.6.1-25-s.js25
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/7.6.1.2-1-s.js23
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/7.6.1.2-10-s.js18
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/7.6.1.2-11-s.js18
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/7.6.1.2-12-s.js18
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/7.6.1.2-13-s.js18
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/7.6.1.2-14-s.js18
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/7.6.1.2-16-s.js18
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/7.6.1.2-2-s.js25
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/7.6.1.2-3-s.js25
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/7.6.1.2-4-s.js25
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/7.6.1.2-5-s.js25
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/7.6.1.2-6-s.js25
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/7.6.1.2-7-s.js25
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/7.6.1.2-8-s.js25
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/7.6.1.2-9-s.js25
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/S7.6.1.2_A1.1.js12
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/S7.6.1.2_A1.10.js13
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/S7.6.1.2_A1.11.js13
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/S7.6.1.2_A1.12.js12
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/S7.6.1.2_A1.13.js12
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/S7.6.1.2_A1.14.js12
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/S7.6.1.2_A1.15.js15
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/S7.6.1.2_A1.15ns.js13
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/S7.6.1.2_A1.16.js13
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/S7.6.1.2_A1.17.js12
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/S7.6.1.2_A1.18.js16
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/S7.6.1.2_A1.18ns.js15
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/S7.6.1.2_A1.19.js12
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/S7.6.1.2_A1.2.js12
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/S7.6.1.2_A1.20.js12
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/S7.6.1.2_A1.21.js15
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/S7.6.1.2_A1.21ns.js13
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/S7.6.1.2_A1.22.js15
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/S7.6.1.2_A1.22ns.js13
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/S7.6.1.2_A1.23.js16
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/S7.6.1.2_A1.23ns.js13
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/S7.6.1.2_A1.24.js15
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/S7.6.1.2_A1.24ns.js13
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/S7.6.1.2_A1.25.js12
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/S7.6.1.2_A1.26.js15
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/S7.6.1.2_A1.26ns.js13
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/S7.6.1.2_A1.27.js13
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/S7.6.1.2_A1.28.js12
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/S7.6.1.2_A1.29.js12
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/S7.6.1.2_A1.3.js12
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/S7.6.1.2_A1.30.js12
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/S7.6.1.2_A1.31.js12
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/S7.6.1.2_A1.4.js12
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/S7.6.1.2_A1.5.js13
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/S7.6.1.2_A1.6.js13
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/S7.6.1.2_A1.7.js13
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/S7.6.1.2_A1.8.js12
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/S7.6.1.2_A1.9.js13
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/browser.js0
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/shell.js0
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/S7.6.1_A1.1.js13
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/S7.6.1_A1.2.js13
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/S7.6.1_A1.3.js13
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/S7.6.1_A2.js121
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/browser.js0
-rw-r--r--js/src/tests/test262/ch07/7.6/7.6.1/shell.js0
-rw-r--r--js/src/tests/test262/ch07/7.6/S7.6_A1.2_T1.js16
-rw-r--r--js/src/tests/test262/ch07/7.6/S7.6_A1.2_T2.js16
-rw-r--r--js/src/tests/test262/ch07/7.6/S7.6_A1.2_T3.js22
-rw-r--r--js/src/tests/test262/ch07/7.6/S7.6_A1.3_T1.js16
-rw-r--r--js/src/tests/test262/ch07/7.6/S7.6_A1.3_T2.js16
-rw-r--r--js/src/tests/test262/ch07/7.6/S7.6_A1.3_T3.js22
-rw-r--r--js/src/tests/test262/ch07/7.6/S7.6_A2.1_T1.js75
-rw-r--r--js/src/tests/test262/ch07/7.6/S7.6_A2.1_T2.js75
-rw-r--r--js/src/tests/test262/ch07/7.6/S7.6_A2.1_T3.js75
-rw-r--r--js/src/tests/test262/ch07/7.6/S7.6_A2.1_T4.js50
-rw-r--r--js/src/tests/test262/ch07/7.6/S7.6_A4.1_T1.js116
-rw-r--r--js/src/tests/test262/ch07/7.6/S7.6_A4.1_T2.js117
-rw-r--r--js/src/tests/test262/ch07/7.6/S7.6_A4.2_T1.js144
-rw-r--r--js/src/tests/test262/ch07/7.6/S7.6_A4.2_T2.js144
-rw-r--r--js/src/tests/test262/ch07/7.6/S7.6_A4.3_T1.js52
-rw-r--r--js/src/tests/test262/ch07/7.6/browser.js0
-rw-r--r--js/src/tests/test262/ch07/7.6/shell.js0
-rw-r--r--js/src/tests/test262/ch07/7.7/S7.7_A1.js22
-rw-r--r--js/src/tests/test262/ch07/7.7/S7.7_A2_T1.js13
-rw-r--r--js/src/tests/test262/ch07/7.7/S7.7_A2_T10.js13
-rw-r--r--js/src/tests/test262/ch07/7.7/S7.7_A2_T2.js13
-rw-r--r--js/src/tests/test262/ch07/7.7/S7.7_A2_T3.js13
-rw-r--r--js/src/tests/test262/ch07/7.7/S7.7_A2_T4.js13
-rw-r--r--js/src/tests/test262/ch07/7.7/S7.7_A2_T5.js14
-rw-r--r--js/src/tests/test262/ch07/7.7/S7.7_A2_T6.js13
-rw-r--r--js/src/tests/test262/ch07/7.7/S7.7_A2_T7.js13
-rw-r--r--js/src/tests/test262/ch07/7.7/S7.7_A2_T8.js13
-rw-r--r--js/src/tests/test262/ch07/7.7/S7.7_A2_T9.js13
-rw-r--r--js/src/tests/test262/ch07/7.7/browser.js0
-rw-r--r--js/src/tests/test262/ch07/7.7/shell.js0
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.1/S7.8.1_A1_T1.js15
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.1/S7.8.1_A1_T2.js16
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.1/browser.js0
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.1/shell.js0
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.2/S7.8.2_A1_T1.js15
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.2/S7.8.2_A1_T2.js16
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.2/browser.js0
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.2/shell.js0
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.3/7.8.3-1-s.js22
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.3/7.8.3-1gs.js16
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.3/7.8.3-2-s.js22
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.3/7.8.3-2gs.js17
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.3/7.8.3-3-s.js22
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.3/7.8.3-3gs.js15
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.3/7.8.3-4-s.js22
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.3/7.8.3-5-s.js22
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.3/7.8.3-6-s.js22
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.3/7.8.3-7-s.js22
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A1.1_T1.js60
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A1.1_T2.js55
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A1.2_T1.js60
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A1.2_T2.js60
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A1.2_T3.js60
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A1.2_T4.js60
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A1.2_T5.js60
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A1.2_T6.js60
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A1.2_T7.js60
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A1.2_T8.js60
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A2.1_T1.js60
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A2.1_T2.js60
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A2.1_T3.js60
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A2.2_T1.js60
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A2.2_T2.js60
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A2.2_T3.js60
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A2.2_T4.js60
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A2.2_T5.js60
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A2.2_T6.js60
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A2.2_T7.js60
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A2.2_T8.js60
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A3.1_T1.js60
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A3.1_T2.js55
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A3.2_T1.js60
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A3.2_T2.js60
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A3.2_T3.js60
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A3.3_T1.js60
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A3.3_T2.js60
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A3.3_T3.js60
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A3.3_T4.js60
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A3.3_T5.js60
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A3.3_T6.js60
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A3.3_T7.js60
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A3.3_T8.js60
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A3.4_T1.js60
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A3.4_T2.js60
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A3.4_T3.js60
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A3.4_T4.js60
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A3.4_T5.js60
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A3.4_T6.js60
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A3.4_T7.js60
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A3.4_T8.js60
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A4.1_T1.js14
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A4.1_T2.js14
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A4.1_T3.js14
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A4.1_T4.js14
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A4.1_T5.js14
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A4.1_T6.js14
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A4.1_T7.js14
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A4.1_T8.js14
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A4.2_T1.js60
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A4.2_T2.js60
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A4.2_T3.js60
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A4.2_T4.js60
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A4.2_T5.js60
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A4.2_T6.js60
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A4.2_T7.js60
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A4.2_T8.js60
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A5.1_T1.js90
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A5.1_T2.js90
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A5.1_T3.js55
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A5.1_T4.js55
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A5.1_T5.js55
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A5.1_T6.js55
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A5.1_T7.js40
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A5.1_T8.js40
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A6.1_T1.js14
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A6.1_T2.js14
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A6.2_T1.js14
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A6.2_T2.js14
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.3/browser.js0
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.3/shell.js0
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.4/7.8.4-1-s.js24
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.4/7.8.4-10-s.js24
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.4/7.8.4-11-s.js26
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.4/7.8.4-12-s.js26
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.4/7.8.4-13-s.js26
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.4/7.8.4-14-s.js26
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.4/7.8.4-15-s.js26
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.4/7.8.4-16-s.js26
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.4/7.8.4-17-s.js26
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.4/7.8.4-18-s.js26
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.4/7.8.4-19-s.js26
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.4/7.8.4-1gs.js14
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.4/7.8.4-2-s.js24
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.4/7.8.4-20-s.js26
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.4/7.8.4-21-s.js26
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.4/7.8.4-22-s.js26
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.4/7.8.4-23-s.js26
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.4/7.8.4-24-s.js26
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.4/7.8.4-25-s.js26
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.4/7.8.4-26-s.js26
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.4/7.8.4-27-s.js26
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.4/7.8.4-28-s.js26
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.4/7.8.4-29-s.js26
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.4/7.8.4-3-s.js24
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.4/7.8.4-30-s.js24
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.4/7.8.4-31-s.js24
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.4/7.8.4-32-s.js24
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.4/7.8.4-33-s.js24
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.4/7.8.4-4-s.js24
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.4/7.8.4-5-s.js24
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.4/7.8.4-6-s.js24
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.4/7.8.4-7-s.js24
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.4/7.8.4-8-s.js24
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.4/7.8.4-9-s.js24
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.4/S7.8.4_A1.1_T1.js14
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.4/S7.8.4_A1.1_T2.js15
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.4/S7.8.4_A1.2_T1.js14
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.4/S7.8.4_A1.2_T2.js15
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.4/S7.8.4_A2.1_T1.js19
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.4/S7.8.4_A2.1_T2.js19
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.4/S7.8.4_A2.2_T1.js19
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.4/S7.8.4_A2.2_T2.js19
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.4/S7.8.4_A2.3_T1.js19
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.4/S7.8.4_A3.1_T1.js14
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.4/S7.8.4_A3.1_T2.js14
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.4/S7.8.4_A3.2_T1.js14
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.4/S7.8.4_A3.2_T2.js14
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.4/S7.8.4_A4.1_T1.js40
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.4/S7.8.4_A4.1_T2.js35
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.4/S7.8.4_A4.2_T1.js19
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.4/S7.8.4_A4.2_T2.js115
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.4/S7.8.4_A4.2_T3.js19
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.4/S7.8.4_A4.2_T4.js86
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.4/S7.8.4_A4.2_T5.js19
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.4/S7.8.4_A4.2_T6.js144
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.4/S7.8.4_A4.2_T7.js19
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.4/S7.8.4_A4.2_T8.js144
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.4/S7.8.4_A4.3_T1.js17
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.4/S7.8.4_A4.3_T2.js17
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.4/S7.8.4_A4.3_T7.js36
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.4/S7.8.4_A5.1_T1.js15
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.4/S7.8.4_A5.1_T2.js15
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.4/S7.8.4_A5.1_T3.js15
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.4/S7.8.4_A6.1_T1.js90
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.4/S7.8.4_A6.1_T2.js19
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.4/S7.8.4_A6.1_T3.js19
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.4/S7.8.4_A6.3_T1.js85
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.4/S7.8.4_A7.1_T1.js90
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.4/S7.8.4_A7.1_T2.js19
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.4/S7.8.4_A7.1_T3.js19
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.4/S7.8.4_A7.1_T4.js14
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.4/S7.8.4_A7.2_T1.js14
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.4/S7.8.4_A7.2_T2.js14
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.4/S7.8.4_A7.2_T3.js14
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.4/S7.8.4_A7.2_T4.js14
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.4/S7.8.4_A7.2_T5.js14
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.4/S7.8.4_A7.2_T6.js14
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.4/S7.8.4_A7.3_T1.js85
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.4/browser.js0
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.4/shell.js0
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.5/7.8.5-1.js20
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.5/7.8.5-1gs.js15
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.5/7.8.5-2gs.js13
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A1.1_T1.js36
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A1.1_T2.js55
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A1.2_T1.js14
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A1.2_T2.js14
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A1.2_T3.js15
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A1.2_T4.js15
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A1.3_T1.js15
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A1.3_T2.js21
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A1.3_T3.js15
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A1.3_T4.js21
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A1.3_T5.js21
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A1.3_T6.js21
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A1.4_T1.js31
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A1.4_T2.js55
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A1.5_T1.js15
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A1.5_T2.js21
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A1.5_T3.js15
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A1.5_T4.js21
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A1.5_T5.js21
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A1.5_T6.js21
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A2.1_T1.js36
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A2.1_T2.js56
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A2.2_T1.js14
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A2.2_T2.js14
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A2.3_T1.js15
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A2.3_T2.js21
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A2.3_T3.js15
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A2.3_T4.js21
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A2.3_T5.js21
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A2.3_T6.js21
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A2.4_T1.js31
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A2.4_T2.js55
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A2.5_T1.js15
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A2.5_T2.js21
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A2.5_T3.js15
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A2.5_T4.js21
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A2.5_T5.js21
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A2.5_T6.js21
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A3.1_T1.js26
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A3.1_T2.js26
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A3.1_T3.js26
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A3.1_T4.js26
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A3.1_T5.js26
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A3.1_T6.js26
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A3.1_T7.js17
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A3.1_T8.js17
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A3.1_T9.js17
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A4.1.js17
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A4.2.js20
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.5/browser.js0
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.5/shell.js0
-rw-r--r--js/src/tests/test262/ch07/7.8/browser.js0
-rw-r--r--js/src/tests/test262/ch07/7.8/shell.js0
-rw-r--r--js/src/tests/test262/ch07/7.9/7.9.2/S7.9.2_A1_T1.js14
-rw-r--r--js/src/tests/test262/ch07/7.9/7.9.2/S7.9.2_A1_T2.js14
-rw-r--r--js/src/tests/test262/ch07/7.9/7.9.2/S7.9.2_A1_T3.js15
-rw-r--r--js/src/tests/test262/ch07/7.9/7.9.2/S7.9.2_A1_T4.js20
-rw-r--r--js/src/tests/test262/ch07/7.9/7.9.2/S7.9.2_A1_T5.js18
-rw-r--r--js/src/tests/test262/ch07/7.9/7.9.2/S7.9.2_A1_T6.js16
-rw-r--r--js/src/tests/test262/ch07/7.9/7.9.2/S7.9.2_A1_T7.js23
-rw-r--r--js/src/tests/test262/ch07/7.9/7.9.2/browser.js0
-rw-r--r--js/src/tests/test262/ch07/7.9/7.9.2/shell.js0
-rw-r--r--js/src/tests/test262/ch07/7.9/S7.9_A1.js38
-rw-r--r--js/src/tests/test262/ch07/7.9/S7.9_A10_T1.js13
-rw-r--r--js/src/tests/test262/ch07/7.9/S7.9_A10_T10.js14
-rw-r--r--js/src/tests/test262/ch07/7.9/S7.9_A10_T11.js15
-rw-r--r--js/src/tests/test262/ch07/7.9/S7.9_A10_T12.js17
-rw-r--r--js/src/tests/test262/ch07/7.9/S7.9_A10_T2.js14
-rw-r--r--js/src/tests/test262/ch07/7.9/S7.9_A10_T3.js13
-rw-r--r--js/src/tests/test262/ch07/7.9/S7.9_A10_T4.js14
-rw-r--r--js/src/tests/test262/ch07/7.9/S7.9_A10_T5.js15
-rw-r--r--js/src/tests/test262/ch07/7.9/S7.9_A10_T6.js15
-rw-r--r--js/src/tests/test262/ch07/7.9/S7.9_A10_T7.js13
-rw-r--r--js/src/tests/test262/ch07/7.9/S7.9_A10_T8.js14
-rw-r--r--js/src/tests/test262/ch07/7.9/S7.9_A10_T9.js14
-rw-r--r--js/src/tests/test262/ch07/7.9/S7.9_A11_T1.js17
-rw-r--r--js/src/tests/test262/ch07/7.9/S7.9_A11_T10.js17
-rw-r--r--js/src/tests/test262/ch07/7.9/S7.9_A11_T11.js18
-rw-r--r--js/src/tests/test262/ch07/7.9/S7.9_A11_T2.js18
-rw-r--r--js/src/tests/test262/ch07/7.9/S7.9_A11_T3.js18
-rw-r--r--js/src/tests/test262/ch07/7.9/S7.9_A11_T4.js15
-rw-r--r--js/src/tests/test262/ch07/7.9/S7.9_A11_T5.js17
-rw-r--r--js/src/tests/test262/ch07/7.9/S7.9_A11_T6.js18
-rw-r--r--js/src/tests/test262/ch07/7.9/S7.9_A11_T7.js18
-rw-r--r--js/src/tests/test262/ch07/7.9/S7.9_A11_T8.js19
-rw-r--r--js/src/tests/test262/ch07/7.9/S7.9_A11_T9.js18
-rw-r--r--js/src/tests/test262/ch07/7.9/S7.9_A2.js32
-rw-r--r--js/src/tests/test262/ch07/7.9/S7.9_A3.js29
-rw-r--r--js/src/tests/test262/ch07/7.9/S7.9_A4.js19
-rw-r--r--js/src/tests/test262/ch07/7.9/S7.9_A5.1_T1.js17
-rw-r--r--js/src/tests/test262/ch07/7.9/S7.9_A5.2_T1.js24
-rw-r--r--js/src/tests/test262/ch07/7.9/S7.9_A5.3_T1.js17
-rw-r--r--js/src/tests/test262/ch07/7.9/S7.9_A5.4_T1.js23
-rw-r--r--js/src/tests/test262/ch07/7.9/S7.9_A5.5_T1.js20
-rw-r--r--js/src/tests/test262/ch07/7.9/S7.9_A5.5_T2.js17
-rw-r--r--js/src/tests/test262/ch07/7.9/S7.9_A5.5_T3.js17
-rw-r--r--js/src/tests/test262/ch07/7.9/S7.9_A5.5_T4.js22
-rw-r--r--js/src/tests/test262/ch07/7.9/S7.9_A5.5_T5.js30
-rw-r--r--js/src/tests/test262/ch07/7.9/S7.9_A5.6_T1.js36
-rw-r--r--js/src/tests/test262/ch07/7.9/S7.9_A5.6_T2.js37
-rw-r--r--js/src/tests/test262/ch07/7.9/S7.9_A5.7_T1.js19
-rw-r--r--js/src/tests/test262/ch07/7.9/S7.9_A5.8_T1.js52
-rw-r--r--js/src/tests/test262/ch07/7.9/S7.9_A5.9_T1.js52
-rw-r--r--js/src/tests/test262/ch07/7.9/S7.9_A6.1_T1.js16
-rw-r--r--js/src/tests/test262/ch07/7.9/S7.9_A6.1_T10.js17
-rw-r--r--js/src/tests/test262/ch07/7.9/S7.9_A6.1_T11.js18
-rw-r--r--js/src/tests/test262/ch07/7.9/S7.9_A6.1_T12.js18
-rw-r--r--js/src/tests/test262/ch07/7.9/S7.9_A6.1_T13.js18
-rw-r--r--js/src/tests/test262/ch07/7.9/S7.9_A6.1_T2.js17
-rw-r--r--js/src/tests/test262/ch07/7.9/S7.9_A6.1_T3.js17
-rw-r--r--js/src/tests/test262/ch07/7.9/S7.9_A6.1_T4.js18
-rw-r--r--js/src/tests/test262/ch07/7.9/S7.9_A6.1_T5.js19
-rw-r--r--js/src/tests/test262/ch07/7.9/S7.9_A6.1_T6.js16
-rw-r--r--js/src/tests/test262/ch07/7.9/S7.9_A6.1_T7.js17
-rw-r--r--js/src/tests/test262/ch07/7.9/S7.9_A6.1_T8.js17
-rw-r--r--js/src/tests/test262/ch07/7.9/S7.9_A6.1_T9.js17
-rw-r--r--js/src/tests/test262/ch07/7.9/S7.9_A6.2_T1.js19
-rw-r--r--js/src/tests/test262/ch07/7.9/S7.9_A6.2_T10.js20
-rw-r--r--js/src/tests/test262/ch07/7.9/S7.9_A6.2_T2.js20
-rw-r--r--js/src/tests/test262/ch07/7.9/S7.9_A6.2_T3.js19
-rw-r--r--js/src/tests/test262/ch07/7.9/S7.9_A6.2_T4.js20
-rw-r--r--js/src/tests/test262/ch07/7.9/S7.9_A6.2_T5.js19
-rw-r--r--js/src/tests/test262/ch07/7.9/S7.9_A6.2_T6.js20
-rw-r--r--js/src/tests/test262/ch07/7.9/S7.9_A6.2_T7.js20
-rw-r--r--js/src/tests/test262/ch07/7.9/S7.9_A6.2_T8.js20
-rw-r--r--js/src/tests/test262/ch07/7.9/S7.9_A6.2_T9.js19
-rw-r--r--js/src/tests/test262/ch07/7.9/S7.9_A6.3_T1.js19
-rw-r--r--js/src/tests/test262/ch07/7.9/S7.9_A6.3_T2.js20
-rw-r--r--js/src/tests/test262/ch07/7.9/S7.9_A6.3_T3.js21
-rw-r--r--js/src/tests/test262/ch07/7.9/S7.9_A6.3_T4.js20
-rw-r--r--js/src/tests/test262/ch07/7.9/S7.9_A6.3_T5.js20
-rw-r--r--js/src/tests/test262/ch07/7.9/S7.9_A6.3_T6.js21
-rw-r--r--js/src/tests/test262/ch07/7.9/S7.9_A6.3_T7.js22
-rw-r--r--js/src/tests/test262/ch07/7.9/S7.9_A6.4_T1.js16
-rw-r--r--js/src/tests/test262/ch07/7.9/S7.9_A6.4_T2.js16
-rw-r--r--js/src/tests/test262/ch07/7.9/S7.9_A7_T1.js14
-rw-r--r--js/src/tests/test262/ch07/7.9/S7.9_A7_T2.js14
-rw-r--r--js/src/tests/test262/ch07/7.9/S7.9_A7_T3.js15
-rw-r--r--js/src/tests/test262/ch07/7.9/S7.9_A7_T4.js15
-rw-r--r--js/src/tests/test262/ch07/7.9/S7.9_A7_T5.js17
-rw-r--r--js/src/tests/test262/ch07/7.9/S7.9_A7_T6.js15
-rw-r--r--js/src/tests/test262/ch07/7.9/S7.9_A7_T7.js16
-rw-r--r--js/src/tests/test262/ch07/7.9/S7.9_A7_T8.js15
-rw-r--r--js/src/tests/test262/ch07/7.9/S7.9_A7_T9.js16
-rw-r--r--js/src/tests/test262/ch07/7.9/S7.9_A8_T1.js13
-rw-r--r--js/src/tests/test262/ch07/7.9/S7.9_A8_T2.js16
-rw-r--r--js/src/tests/test262/ch07/7.9/S7.9_A8_T3.js13
-rw-r--r--js/src/tests/test262/ch07/7.9/S7.9_A8_T4.js16
-rw-r--r--js/src/tests/test262/ch07/7.9/S7.9_A8_T5.js13
-rw-r--r--js/src/tests/test262/ch07/7.9/S7.9_A9_T1.js14
-rw-r--r--js/src/tests/test262/ch07/7.9/S7.9_A9_T2.js14
-rw-r--r--js/src/tests/test262/ch07/7.9/S7.9_A9_T5.js16
-rw-r--r--js/src/tests/test262/ch07/7.9/S7.9_A9_T6.js15
-rw-r--r--js/src/tests/test262/ch07/7.9/S7.9_A9_T7.js16
-rw-r--r--js/src/tests/test262/ch07/7.9/S7.9_A9_T8.js15
-rw-r--r--js/src/tests/test262/ch07/7.9/S7.9_A9_T9.js14
-rw-r--r--js/src/tests/test262/ch07/7.9/browser.js0
-rw-r--r--js/src/tests/test262/ch07/7.9/shell.js0
-rw-r--r--js/src/tests/test262/ch07/browser.js0
-rw-r--r--js/src/tests/test262/ch07/shell.js0
-rw-r--r--js/src/tests/test262/ch08/8.1/S8.1_A1_T1.js13
-rw-r--r--js/src/tests/test262/ch08/8.1/S8.1_A1_T2.js25
-rw-r--r--js/src/tests/test262/ch08/8.1/S8.1_A2_T1.js36
-rw-r--r--js/src/tests/test262/ch08/8.1/S8.1_A2_T2.js27
-rw-r--r--js/src/tests/test262/ch08/8.1/S8.1_A3.js16
-rw-r--r--js/src/tests/test262/ch08/8.1/S8.1_A4.js16
-rw-r--r--js/src/tests/test262/ch08/8.1/S8.1_A5.js23
-rw-r--r--js/src/tests/test262/ch08/8.1/browser.js0
-rw-r--r--js/src/tests/test262/ch08/8.1/shell.js0
-rw-r--r--js/src/tests/test262/ch08/8.12/8.12.1/8.12.1-1_1.js17
-rw-r--r--js/src/tests/test262/ch08/8.12/8.12.1/8.12.1-1_10.js18
-rw-r--r--js/src/tests/test262/ch08/8.12/8.12.1/8.12.1-1_11.js18
-rw-r--r--js/src/tests/test262/ch08/8.12/8.12.1/8.12.1-1_12.js19
-rw-r--r--js/src/tests/test262/ch08/8.12/8.12.1/8.12.1-1_13.js19
-rw-r--r--js/src/tests/test262/ch08/8.12/8.12.1/8.12.1-1_14.js19
-rw-r--r--js/src/tests/test262/ch08/8.12/8.12.1/8.12.1-1_15.js19
-rw-r--r--js/src/tests/test262/ch08/8.12/8.12.1/8.12.1-1_16.js19
-rw-r--r--js/src/tests/test262/ch08/8.12/8.12.1/8.12.1-1_17.js19
-rw-r--r--js/src/tests/test262/ch08/8.12/8.12.1/8.12.1-1_18.js19
-rw-r--r--js/src/tests/test262/ch08/8.12/8.12.1/8.12.1-1_19.js19
-rw-r--r--js/src/tests/test262/ch08/8.12/8.12.1/8.12.1-1_2.js17
-rw-r--r--js/src/tests/test262/ch08/8.12/8.12.1/8.12.1-1_20.js17
-rw-r--r--js/src/tests/test262/ch08/8.12/8.12.1/8.12.1-1_21.js17
-rw-r--r--js/src/tests/test262/ch08/8.12/8.12.1/8.12.1-1_22.js17
-rw-r--r--js/src/tests/test262/ch08/8.12/8.12.1/8.12.1-1_23.js18
-rw-r--r--js/src/tests/test262/ch08/8.12/8.12.1/8.12.1-1_24.js18
-rw-r--r--js/src/tests/test262/ch08/8.12/8.12.1/8.12.1-1_25.js18
-rw-r--r--js/src/tests/test262/ch08/8.12/8.12.1/8.12.1-1_26.js18
-rw-r--r--js/src/tests/test262/ch08/8.12/8.12.1/8.12.1-1_27.js18
-rw-r--r--js/src/tests/test262/ch08/8.12/8.12.1/8.12.1-1_28.js18
-rw-r--r--js/src/tests/test262/ch08/8.12/8.12.1/8.12.1-1_29.js18
-rw-r--r--js/src/tests/test262/ch08/8.12/8.12.1/8.12.1-1_3.js18
-rw-r--r--js/src/tests/test262/ch08/8.12/8.12.1/8.12.1-1_30.js18
-rw-r--r--js/src/tests/test262/ch08/8.12/8.12.1/8.12.1-1_31.js18
-rw-r--r--js/src/tests/test262/ch08/8.12/8.12.1/8.12.1-1_32.js18
-rw-r--r--js/src/tests/test262/ch08/8.12/8.12.1/8.12.1-1_33.js18
-rw-r--r--js/src/tests/test262/ch08/8.12/8.12.1/8.12.1-1_34.js18
-rw-r--r--js/src/tests/test262/ch08/8.12/8.12.1/8.12.1-1_35.js18
-rw-r--r--js/src/tests/test262/ch08/8.12/8.12.1/8.12.1-1_36.js18
-rw-r--r--js/src/tests/test262/ch08/8.12/8.12.1/8.12.1-1_37.js18
-rw-r--r--js/src/tests/test262/ch08/8.12/8.12.1/8.12.1-1_38.js19
-rw-r--r--js/src/tests/test262/ch08/8.12/8.12.1/8.12.1-1_39.js19
-rw-r--r--js/src/tests/test262/ch08/8.12/8.12.1/8.12.1-1_4.js18
-rw-r--r--js/src/tests/test262/ch08/8.12/8.12.1/8.12.1-1_40.js19
-rw-r--r--js/src/tests/test262/ch08/8.12/8.12.1/8.12.1-1_41.js19
-rw-r--r--js/src/tests/test262/ch08/8.12/8.12.1/8.12.1-1_42.js19
-rw-r--r--js/src/tests/test262/ch08/8.12/8.12.1/8.12.1-1_43.js19
-rw-r--r--js/src/tests/test262/ch08/8.12/8.12.1/8.12.1-1_44.js19
-rw-r--r--js/src/tests/test262/ch08/8.12/8.12.1/8.12.1-1_45.js19
-rw-r--r--js/src/tests/test262/ch08/8.12/8.12.1/8.12.1-1_46.js19
-rw-r--r--js/src/tests/test262/ch08/8.12/8.12.1/8.12.1-1_47.js19
-rw-r--r--js/src/tests/test262/ch08/8.12/8.12.1/8.12.1-1_48.js19
-rw-r--r--js/src/tests/test262/ch08/8.12/8.12.1/8.12.1-1_49.js19
-rw-r--r--js/src/tests/test262/ch08/8.12/8.12.1/8.12.1-1_5.js18
-rw-r--r--js/src/tests/test262/ch08/8.12/8.12.1/8.12.1-1_6.js18
-rw-r--r--js/src/tests/test262/ch08/8.12/8.12.1/8.12.1-1_7.js18
-rw-r--r--js/src/tests/test262/ch08/8.12/8.12.1/8.12.1-1_8.js18
-rw-r--r--js/src/tests/test262/ch08/8.12/8.12.1/8.12.1-1_9.js18
-rw-r--r--js/src/tests/test262/ch08/8.12/8.12.1/browser.js0
-rw-r--r--js/src/tests/test262/ch08/8.12/8.12.1/shell.js0
-rw-r--r--js/src/tests/test262/ch08/8.12/8.12.3/S8.12.3_A1.js32
-rw-r--r--js/src/tests/test262/ch08/8.12/8.12.3/S8.12.3_A2.js28
-rw-r--r--js/src/tests/test262/ch08/8.12/8.12.3/S8.12.3_A3.js60
-rw-r--r--js/src/tests/test262/ch08/8.12/8.12.3/browser.js0
-rw-r--r--js/src/tests/test262/ch08/8.12/8.12.3/shell.js0
-rw-r--r--js/src/tests/test262/ch08/8.12/8.12.4/8.14.4-8-b_1.js19
-rw-r--r--js/src/tests/test262/ch08/8.12/8.12.4/8.14.4-8-b_2.js26
-rw-r--r--js/src/tests/test262/ch08/8.12/8.12.4/S8.12.4_A1.js17
-rw-r--r--js/src/tests/test262/ch08/8.12/8.12.4/browser.js0
-rw-r--r--js/src/tests/test262/ch08/8.12/8.12.4/shell.js0
-rw-r--r--js/src/tests/test262/ch08/8.12/8.12.5/8.12.5-3-b_1.js40
-rw-r--r--js/src/tests/test262/ch08/8.12/8.12.5/8.12.5-3-b_2.js44
-rw-r--r--js/src/tests/test262/ch08/8.12/8.12.5/8.12.5-5-b_1.js39
-rw-r--r--js/src/tests/test262/ch08/8.12/8.12.5/S8.12.5_A1.js38
-rw-r--r--js/src/tests/test262/ch08/8.12/8.12.5/S8.12.5_A2.js49
-rw-r--r--js/src/tests/test262/ch08/8.12/8.12.5/browser.js0
-rw-r--r--js/src/tests/test262/ch08/8.12/8.12.5/shell.js0
-rw-r--r--js/src/tests/test262/ch08/8.12/8.12.6/S8.12.6_A1.js20
-rw-r--r--js/src/tests/test262/ch08/8.12/8.12.6/S8.12.6_A2_T1.js21
-rw-r--r--js/src/tests/test262/ch08/8.12/8.12.6/S8.12.6_A2_T2.js43
-rw-r--r--js/src/tests/test262/ch08/8.12/8.12.6/S8.12.6_A3.js44
-rw-r--r--js/src/tests/test262/ch08/8.12/8.12.6/browser.js0
-rw-r--r--js/src/tests/test262/ch08/8.12/8.12.6/shell.js0
-rw-r--r--js/src/tests/test262/ch08/8.12/8.12.7/S8.12.7_A1.js29
-rw-r--r--js/src/tests/test262/ch08/8.12/8.12.7/S8.12.7_A2_T1.js39
-rw-r--r--js/src/tests/test262/ch08/8.12/8.12.7/S8.12.7_A2_T2.js40
-rw-r--r--js/src/tests/test262/ch08/8.12/8.12.7/S8.12.7_A3.js49
-rw-r--r--js/src/tests/test262/ch08/8.12/8.12.7/browser.js0
-rw-r--r--js/src/tests/test262/ch08/8.12/8.12.7/shell.js0
-rw-r--r--js/src/tests/test262/ch08/8.12/8.12.8/S8.12.8_A1.js26
-rw-r--r--js/src/tests/test262/ch08/8.12/8.12.8/S8.12.8_A2.js26
-rw-r--r--js/src/tests/test262/ch08/8.12/8.12.8/S8.12.8_A3.js28
-rw-r--r--js/src/tests/test262/ch08/8.12/8.12.8/S8.12.8_A4.js24
-rw-r--r--js/src/tests/test262/ch08/8.12/8.12.8/browser.js0
-rw-r--r--js/src/tests/test262/ch08/8.12/8.12.8/shell.js0
-rw-r--r--js/src/tests/test262/ch08/8.12/8.12.9/8.12.9-9-b-i_1.js23
-rw-r--r--js/src/tests/test262/ch08/8.12/8.12.9/8.12.9-9-b-i_2.js25
-rw-r--r--js/src/tests/test262/ch08/8.12/8.12.9/8.12.9-9-c-i_1.js23
-rw-r--r--js/src/tests/test262/ch08/8.12/8.12.9/8.12.9-9-c-i_2.js25
-rw-r--r--js/src/tests/test262/ch08/8.12/8.12.9/browser.js0
-rw-r--r--js/src/tests/test262/ch08/8.12/8.12.9/shell.js0
-rw-r--r--js/src/tests/test262/ch08/8.12/browser.js0
-rw-r--r--js/src/tests/test262/ch08/8.12/shell.js0
-rw-r--r--js/src/tests/test262/ch08/8.2/S8.2_A1_T1.js17
-rw-r--r--js/src/tests/test262/ch08/8.2/S8.2_A1_T2.js17
-rw-r--r--js/src/tests/test262/ch08/8.2/S8.2_A2.js15
-rw-r--r--js/src/tests/test262/ch08/8.2/S8.2_A3.js23
-rw-r--r--js/src/tests/test262/ch08/8.2/browser.js0
-rw-r--r--js/src/tests/test262/ch08/8.2/shell.js0
-rw-r--r--js/src/tests/test262/ch08/8.3/S8.3_A1_T1.js30
-rw-r--r--js/src/tests/test262/ch08/8.3/S8.3_A1_T2.js75
-rw-r--r--js/src/tests/test262/ch08/8.3/S8.3_A2.1.js13
-rw-r--r--js/src/tests/test262/ch08/8.3/S8.3_A2.2.js13
-rw-r--r--js/src/tests/test262/ch08/8.3/S8.3_A3.js42
-rw-r--r--js/src/tests/test262/ch08/8.3/browser.js0
-rw-r--r--js/src/tests/test262/ch08/8.3/shell.js0
-rw-r--r--js/src/tests/test262/ch08/8.4/S8.4_A1.js46
-rw-r--r--js/src/tests/test262/ch08/8.4/S8.4_A10.js37
-rw-r--r--js/src/tests/test262/ch08/8.4/S8.4_A11.js16
-rw-r--r--js/src/tests/test262/ch08/8.4/S8.4_A12.js19
-rw-r--r--js/src/tests/test262/ch08/8.4/S8.4_A13_T1.js13
-rw-r--r--js/src/tests/test262/ch08/8.4/S8.4_A13_T2.js13
-rw-r--r--js/src/tests/test262/ch08/8.4/S8.4_A13_T3.js13
-rw-r--r--js/src/tests/test262/ch08/8.4/S8.4_A14_T1.js13
-rw-r--r--js/src/tests/test262/ch08/8.4/S8.4_A14_T2.js13
-rw-r--r--js/src/tests/test262/ch08/8.4/S8.4_A14_T3.js13
-rw-r--r--js/src/tests/test262/ch08/8.4/S8.4_A2.js28
-rw-r--r--js/src/tests/test262/ch08/8.4/S8.4_A3.js19
-rw-r--r--js/src/tests/test262/ch08/8.4/S8.4_A4.js19
-rw-r--r--js/src/tests/test262/ch08/8.4/S8.4_A5.js20
-rw-r--r--js/src/tests/test262/ch08/8.4/S8.4_A6.1.js19
-rw-r--r--js/src/tests/test262/ch08/8.4/S8.4_A6.2.js19
-rw-r--r--js/src/tests/test262/ch08/8.4/S8.4_A7.1.js13
-rw-r--r--js/src/tests/test262/ch08/8.4/S8.4_A7.2.js13
-rw-r--r--js/src/tests/test262/ch08/8.4/S8.4_A7.3.js13
-rw-r--r--js/src/tests/test262/ch08/8.4/S8.4_A7.4.js13
-rw-r--r--js/src/tests/test262/ch08/8.4/S8.4_A8.js44
-rw-r--r--js/src/tests/test262/ch08/8.4/S8.4_A9_T1.js37
-rw-r--r--js/src/tests/test262/ch08/8.4/S8.4_A9_T2.js62
-rw-r--r--js/src/tests/test262/ch08/8.4/S8.4_A9_T3.js46
-rw-r--r--js/src/tests/test262/ch08/8.4/browser.js0
-rw-r--r--js/src/tests/test262/ch08/8.4/shell.js0
-rw-r--r--js/src/tests/test262/ch08/8.5/8.5.1.js64
-rw-r--r--js/src/tests/test262/ch08/8.5/S8.5_A1.js21
-rw-r--r--js/src/tests/test262/ch08/8.5/S8.5_A10.js14
-rw-r--r--js/src/tests/test262/ch08/8.5/S8.5_A11_T1.js17
-rw-r--r--js/src/tests/test262/ch08/8.5/S8.5_A11_T2.js38
-rw-r--r--js/src/tests/test262/ch08/8.5/S8.5_A12.1.js23
-rw-r--r--js/src/tests/test262/ch08/8.5/S8.5_A12.2.js17
-rw-r--r--js/src/tests/test262/ch08/8.5/S8.5_A13_T2.js27
-rw-r--r--js/src/tests/test262/ch08/8.5/S8.5_A14_T1.js20
-rw-r--r--js/src/tests/test262/ch08/8.5/S8.5_A14_T2.js20
-rw-r--r--js/src/tests/test262/ch08/8.5/S8.5_A2.1.js19
-rw-r--r--js/src/tests/test262/ch08/8.5/S8.5_A2.2.js19
-rw-r--r--js/src/tests/test262/ch08/8.5/S8.5_A3.js28
-rw-r--r--js/src/tests/test262/ch08/8.5/S8.5_A4.js15
-rw-r--r--js/src/tests/test262/ch08/8.5/S8.5_A5.js57
-rw-r--r--js/src/tests/test262/ch08/8.5/S8.5_A6.js28
-rw-r--r--js/src/tests/test262/ch08/8.5/S8.5_A7.js28
-rw-r--r--js/src/tests/test262/ch08/8.5/S8.5_A8.js21
-rw-r--r--js/src/tests/test262/ch08/8.5/S8.5_A9.js17
-rw-r--r--js/src/tests/test262/ch08/8.5/browser.js0
-rw-r--r--js/src/tests/test262/ch08/8.5/shell.js0
-rw-r--r--js/src/tests/test262/ch08/8.6/8.6.1/S8.6.1_A1.js17
-rw-r--r--js/src/tests/test262/ch08/8.6/8.6.1/S8.6.1_A2.js17
-rw-r--r--js/src/tests/test262/ch08/8.6/8.6.1/S8.6.1_A3.js27
-rw-r--r--js/src/tests/test262/ch08/8.6/8.6.1/browser.js0
-rw-r--r--js/src/tests/test262/ch08/8.6/8.6.1/shell.js0
-rw-r--r--js/src/tests/test262/ch08/8.6/8.6.2/S8.6.2_A1.js73
-rw-r--r--js/src/tests/test262/ch08/8.6/8.6.2/S8.6.2_A2.js37
-rw-r--r--js/src/tests/test262/ch08/8.6/8.6.2/S8.6.2_A3.js19
-rw-r--r--js/src/tests/test262/ch08/8.6/8.6.2/S8.6.2_A4.js53
-rw-r--r--js/src/tests/test262/ch08/8.6/8.6.2/S8.6.2_A5_T1.js32
-rw-r--r--js/src/tests/test262/ch08/8.6/8.6.2/S8.6.2_A5_T2.js32
-rw-r--r--js/src/tests/test262/ch08/8.6/8.6.2/S8.6.2_A5_T3.js31
-rw-r--r--js/src/tests/test262/ch08/8.6/8.6.2/S8.6.2_A5_T4.js32
-rw-r--r--js/src/tests/test262/ch08/8.6/8.6.2/S8.6.2_A6.js28
-rw-r--r--js/src/tests/test262/ch08/8.6/8.6.2/S8.6.2_A7.js17
-rw-r--r--js/src/tests/test262/ch08/8.6/8.6.2/S8.6.2_A8.js22
-rw-r--r--js/src/tests/test262/ch08/8.6/8.6.2/browser.js0
-rw-r--r--js/src/tests/test262/ch08/8.6/8.6.2/shell.js0
-rw-r--r--js/src/tests/test262/ch08/8.6/S8.6_A2_T1.js23
-rw-r--r--js/src/tests/test262/ch08/8.6/S8.6_A2_T2.js28
-rw-r--r--js/src/tests/test262/ch08/8.6/S8.6_A3_T1.js23
-rw-r--r--js/src/tests/test262/ch08/8.6/S8.6_A3_T2.js28
-rw-r--r--js/src/tests/test262/ch08/8.6/S8.6_A4_T1.js57
-rw-r--r--js/src/tests/test262/ch08/8.6/browser.js0
-rw-r--r--js/src/tests/test262/ch08/8.6/shell.js0
-rw-r--r--js/src/tests/test262/ch08/8.7/8.7.2/8.7.2-1-s.js22
-rw-r--r--js/src/tests/test262/ch08/8.7/8.7.2/8.7.2-2-s.js18
-rw-r--r--js/src/tests/test262/ch08/8.7/8.7.2/8.7.2-3-1-s.js19
-rw-r--r--js/src/tests/test262/ch08/8.7/8.7.2/8.7.2-3-a-1gs.js15
-rw-r--r--js/src/tests/test262/ch08/8.7/8.7.2/8.7.2-3-a-2gs.js16
-rw-r--r--js/src/tests/test262/ch08/8.7/8.7.2/8.7.2-3-s.js27
-rw-r--r--js/src/tests/test262/ch08/8.7/8.7.2/8.7.2-4-s.js28
-rw-r--r--js/src/tests/test262/ch08/8.7/8.7.2/8.7.2-5-s.js25
-rw-r--r--js/src/tests/test262/ch08/8.7/8.7.2/8.7.2-6-s.js24
-rw-r--r--js/src/tests/test262/ch08/8.7/8.7.2/8.7.2-7-s.js25
-rw-r--r--js/src/tests/test262/ch08/8.7/8.7.2/8.7.2-8-s.js21
-rw-r--r--js/src/tests/test262/ch08/8.7/8.7.2/browser.js0
-rw-r--r--js/src/tests/test262/ch08/8.7/8.7.2/shell.js0
-rw-r--r--js/src/tests/test262/ch08/8.7/S8.7.1_A1.js28
-rw-r--r--js/src/tests/test262/ch08/8.7/S8.7.1_A2.js29
-rw-r--r--js/src/tests/test262/ch08/8.7/S8.7.2_A1_T1.js13
-rw-r--r--js/src/tests/test262/ch08/8.7/S8.7.2_A1_T2.js13
-rw-r--r--js/src/tests/test262/ch08/8.7/S8.7.2_A2.js28
-rw-r--r--js/src/tests/test262/ch08/8.7/S8.7.2_A3.js27
-rw-r--r--js/src/tests/test262/ch08/8.7/S8.7_A1.js30
-rw-r--r--js/src/tests/test262/ch08/8.7/S8.7_A2.js42
-rw-r--r--js/src/tests/test262/ch08/8.7/S8.7_A3.js29
-rw-r--r--js/src/tests/test262/ch08/8.7/S8.7_A4.js28
-rw-r--r--js/src/tests/test262/ch08/8.7/S8.7_A5_T1.js54
-rw-r--r--js/src/tests/test262/ch08/8.7/S8.7_A5_T2.js54
-rw-r--r--js/src/tests/test262/ch08/8.7/S8.7_A6.js27
-rw-r--r--js/src/tests/test262/ch08/8.7/S8.7_A7.js35
-rw-r--r--js/src/tests/test262/ch08/8.7/browser.js0
-rw-r--r--js/src/tests/test262/ch08/8.7/shell.js0
-rw-r--r--js/src/tests/test262/ch08/8.8/S8.8_A2_T1.js19
-rw-r--r--js/src/tests/test262/ch08/8.8/S8.8_A2_T2.js19
-rw-r--r--js/src/tests/test262/ch08/8.8/S8.8_A2_T3.js19
-rw-r--r--js/src/tests/test262/ch08/8.8/browser.js0
-rw-r--r--js/src/tests/test262/ch08/8.8/shell.js0
-rw-r--r--js/src/tests/test262/ch08/browser.js0
-rw-r--r--js/src/tests/test262/ch08/shell.js0
-rw-r--r--js/src/tests/test262/ch09/9.1/S9.1_A1_T1.js23
-rw-r--r--js/src/tests/test262/ch09/9.1/S9.1_A1_T2.js23
-rw-r--r--js/src/tests/test262/ch09/9.1/S9.1_A1_T3.js23
-rw-r--r--js/src/tests/test262/ch09/9.1/S9.1_A1_T4.js23
-rw-r--r--js/src/tests/test262/ch09/9.1/browser.js0
-rw-r--r--js/src/tests/test262/ch09/9.1/shell.js0
-rw-r--r--js/src/tests/test262/ch09/9.2/S9.2_A1_T1.js30
-rw-r--r--js/src/tests/test262/ch09/9.2/S9.2_A1_T2.js25
-rw-r--r--js/src/tests/test262/ch09/9.2/S9.2_A2_T1.js15
-rw-r--r--js/src/tests/test262/ch09/9.2/S9.2_A2_T2.js15
-rw-r--r--js/src/tests/test262/ch09/9.2/S9.2_A3_T1.js20
-rw-r--r--js/src/tests/test262/ch09/9.2/S9.2_A3_T2.js20
-rw-r--r--js/src/tests/test262/ch09/9.2/S9.2_A4_T1.js25
-rw-r--r--js/src/tests/test262/ch09/9.2/S9.2_A4_T2.js25
-rw-r--r--js/src/tests/test262/ch09/9.2/S9.2_A4_T3.js51
-rw-r--r--js/src/tests/test262/ch09/9.2/S9.2_A4_T4.js51
-rw-r--r--js/src/tests/test262/ch09/9.2/S9.2_A5_T1.js15
-rw-r--r--js/src/tests/test262/ch09/9.2/S9.2_A5_T2.js15
-rw-r--r--js/src/tests/test262/ch09/9.2/S9.2_A5_T3.js20
-rw-r--r--js/src/tests/test262/ch09/9.2/S9.2_A5_T4.js20
-rw-r--r--js/src/tests/test262/ch09/9.2/S9.2_A6_T1.js105
-rw-r--r--js/src/tests/test262/ch09/9.2/S9.2_A6_T2.js105
-rw-r--r--js/src/tests/test262/ch09/9.2/browser.js0
-rw-r--r--js/src/tests/test262/ch09/9.2/shell.js0
-rw-r--r--js/src/tests/test262/ch09/9.3/9.3.1/S9.3.1_A1.js19
-rw-r--r--js/src/tests/test262/ch09/9.3/9.3.1/S9.3.1_A10.js17
-rw-r--r--js/src/tests/test262/ch09/9.3/9.3.1/S9.3.1_A11.js23
-rw-r--r--js/src/tests/test262/ch09/9.3/9.3.1/S9.3.1_A12.js22
-rw-r--r--js/src/tests/test262/ch09/9.3/9.3.1/S9.3.1_A13.js26
-rw-r--r--js/src/tests/test262/ch09/9.3/9.3.1/S9.3.1_A14.js15
-rw-r--r--js/src/tests/test262/ch09/9.3/9.3.1/S9.3.1_A15.js15
-rw-r--r--js/src/tests/test262/ch09/9.3/9.3.1/S9.3.1_A16.js25
-rw-r--r--js/src/tests/test262/ch09/9.3/9.3.1/S9.3.1_A17.js25
-rw-r--r--js/src/tests/test262/ch09/9.3/9.3.1/S9.3.1_A18.js25
-rw-r--r--js/src/tests/test262/ch09/9.3/9.3.1/S9.3.1_A19.js25
-rw-r--r--js/src/tests/test262/ch09/9.3/9.3.1/S9.3.1_A2.js289
-rw-r--r--js/src/tests/test262/ch09/9.3/9.3.1/S9.3.1_A20.js25
-rw-r--r--js/src/tests/test262/ch09/9.3/9.3.1/S9.3.1_A21.js25
-rw-r--r--js/src/tests/test262/ch09/9.3/9.3.1/S9.3.1_A22.js25
-rw-r--r--js/src/tests/test262/ch09/9.3/9.3.1/S9.3.1_A23.js25
-rw-r--r--js/src/tests/test262/ch09/9.3/9.3.1/S9.3.1_A24.js25
-rw-r--r--js/src/tests/test262/ch09/9.3/9.3.1/S9.3.1_A25.js25
-rw-r--r--js/src/tests/test262/ch09/9.3/9.3.1/S9.3.1_A26.js30
-rw-r--r--js/src/tests/test262/ch09/9.3/9.3.1/S9.3.1_A27.js30
-rw-r--r--js/src/tests/test262/ch09/9.3/9.3.1/S9.3.1_A28.js30
-rw-r--r--js/src/tests/test262/ch09/9.3/9.3.1/S9.3.1_A29.js30
-rw-r--r--js/src/tests/test262/ch09/9.3/9.3.1/S9.3.1_A30.js30
-rw-r--r--js/src/tests/test262/ch09/9.3/9.3.1/S9.3.1_A31.js30
-rw-r--r--js/src/tests/test262/ch09/9.3/9.3.1/S9.3.1_A32.js38
-rw-r--r--js/src/tests/test262/ch09/9.3/9.3.1/S9.3.1_A3_T1.js30
-rw-r--r--js/src/tests/test262/ch09/9.3/9.3.1/S9.3.1_A3_T2.js34
-rw-r--r--js/src/tests/test262/ch09/9.3/9.3.1/S9.3.1_A4_T1.js50
-rw-r--r--js/src/tests/test262/ch09/9.3/9.3.1/S9.3.1_A4_T2.js54
-rw-r--r--js/src/tests/test262/ch09/9.3/9.3.1/S9.3.1_A5_T1.js61
-rw-r--r--js/src/tests/test262/ch09/9.3/9.3.1/S9.3.1_A5_T2.js146
-rw-r--r--js/src/tests/test262/ch09/9.3/9.3.1/S9.3.1_A5_T3.js65
-rw-r--r--js/src/tests/test262/ch09/9.3/9.3.1/S9.3.1_A6_T1.js31
-rw-r--r--js/src/tests/test262/ch09/9.3/9.3.1/S9.3.1_A6_T2.js36
-rw-r--r--js/src/tests/test262/ch09/9.3/9.3.1/S9.3.1_A7.js17
-rw-r--r--js/src/tests/test262/ch09/9.3/9.3.1/S9.3.1_A8.js21
-rw-r--r--js/src/tests/test262/ch09/9.3/9.3.1/S9.3.1_A9.js24
-rw-r--r--js/src/tests/test262/ch09/9.3/9.3.1/browser.js0
-rw-r--r--js/src/tests/test262/ch09/9.3/9.3.1/shell.js0
-rw-r--r--js/src/tests/test262/ch09/9.3/S9.3_A1_T1.js25
-rw-r--r--js/src/tests/test262/ch09/9.3/S9.3_A1_T2.js25
-rw-r--r--js/src/tests/test262/ch09/9.3/S9.3_A2_T1.js19
-rw-r--r--js/src/tests/test262/ch09/9.3/S9.3_A2_T2.js19
-rw-r--r--js/src/tests/test262/ch09/9.3/S9.3_A3_T1.js24
-rw-r--r--js/src/tests/test262/ch09/9.3/S9.3_A3_T2.js24
-rw-r--r--js/src/tests/test262/ch09/9.3/S9.3_A4.1_T1.js40
-rw-r--r--js/src/tests/test262/ch09/9.3/S9.3_A4.1_T2.js40
-rw-r--r--js/src/tests/test262/ch09/9.3/S9.3_A4.2_T1.js54
-rw-r--r--js/src/tests/test262/ch09/9.3/S9.3_A4.2_T2.js54
-rw-r--r--js/src/tests/test262/ch09/9.3/S9.3_A5_T1.js126
-rw-r--r--js/src/tests/test262/ch09/9.3/S9.3_A5_T2.js126
-rw-r--r--js/src/tests/test262/ch09/9.3/browser.js0
-rw-r--r--js/src/tests/test262/ch09/9.3/shell.js0
-rw-r--r--js/src/tests/test262/ch09/9.4/S9.4_A1.js20
-rw-r--r--js/src/tests/test262/ch09/9.4/S9.4_A2.js21
-rw-r--r--js/src/tests/test262/ch09/9.4/S9.4_A3_T1.js83
-rw-r--r--js/src/tests/test262/ch09/9.4/S9.4_A3_T2.js41
-rw-r--r--js/src/tests/test262/ch09/9.4/browser.js0
-rw-r--r--js/src/tests/test262/ch09/9.4/shell.js0
-rw-r--r--js/src/tests/test262/ch09/9.5/S9.5_A1_T1.js52
-rw-r--r--js/src/tests/test262/ch09/9.5/S9.5_A2.1_T1.js50
-rw-r--r--js/src/tests/test262/ch09/9.5/S9.5_A2.1_T2.js30
-rw-r--r--js/src/tests/test262/ch09/9.5/S9.5_A2.2_T1.js70
-rw-r--r--js/src/tests/test262/ch09/9.5/S9.5_A2.2_T2.js70
-rw-r--r--js/src/tests/test262/ch09/9.5/S9.5_A2.3_T1.js42
-rw-r--r--js/src/tests/test262/ch09/9.5/S9.5_A2.3_T2.js40
-rw-r--r--js/src/tests/test262/ch09/9.5/S9.5_A3.1_T1.js20
-rw-r--r--js/src/tests/test262/ch09/9.5/S9.5_A3.1_T2.js20
-rw-r--r--js/src/tests/test262/ch09/9.5/S9.5_A3.1_T3.js20
-rw-r--r--js/src/tests/test262/ch09/9.5/S9.5_A3.1_T4.js79
-rw-r--r--js/src/tests/test262/ch09/9.5/S9.5_A3.2_T1.js20
-rw-r--r--js/src/tests/test262/ch09/9.5/S9.5_A3.2_T2.js20
-rw-r--r--js/src/tests/test262/ch09/9.5/browser.js0
-rw-r--r--js/src/tests/test262/ch09/9.5/shell.js0
-rw-r--r--js/src/tests/test262/ch09/9.6/S9.6_A1.js54
-rw-r--r--js/src/tests/test262/ch09/9.6/S9.6_A2.1.js40
-rw-r--r--js/src/tests/test262/ch09/9.6/S9.6_A2.2.js70
-rw-r--r--js/src/tests/test262/ch09/9.6/S9.6_A3.1_T1.js20
-rw-r--r--js/src/tests/test262/ch09/9.6/S9.6_A3.1_T2.js20
-rw-r--r--js/src/tests/test262/ch09/9.6/S9.6_A3.1_T3.js20
-rw-r--r--js/src/tests/test262/ch09/9.6/S9.6_A3.1_T4.js79
-rw-r--r--js/src/tests/test262/ch09/9.6/S9.6_A3.2_T1.js20
-rw-r--r--js/src/tests/test262/ch09/9.6/browser.js0
-rw-r--r--js/src/tests/test262/ch09/9.6/shell.js0
-rw-r--r--js/src/tests/test262/ch09/9.7/S9.7_A1.js54
-rw-r--r--js/src/tests/test262/ch09/9.7/S9.7_A2.1.js55
-rw-r--r--js/src/tests/test262/ch09/9.7/S9.7_A2.2.js70
-rw-r--r--js/src/tests/test262/ch09/9.7/S9.7_A3.1_T1.js20
-rw-r--r--js/src/tests/test262/ch09/9.7/S9.7_A3.1_T2.js20
-rw-r--r--js/src/tests/test262/ch09/9.7/S9.7_A3.1_T3.js20
-rw-r--r--js/src/tests/test262/ch09/9.7/S9.7_A3.1_T4.js79
-rw-r--r--js/src/tests/test262/ch09/9.7/S9.7_A3.2_T1.js20
-rw-r--r--js/src/tests/test262/ch09/9.7/browser.js0
-rw-r--r--js/src/tests/test262/ch09/9.7/shell.js0
-rw-r--r--js/src/tests/test262/ch09/9.8/9.8.1/S9.8.1_A1.js25
-rw-r--r--js/src/tests/test262/ch09/9.8/9.8.1/S9.8.1_A10.js60
-rw-r--r--js/src/tests/test262/ch09/9.8/9.8.1/S9.8.1_A2.js20
-rw-r--r--js/src/tests/test262/ch09/9.8/9.8.1/S9.8.1_A3.js21
-rw-r--r--js/src/tests/test262/ch09/9.8/9.8.1/S9.8.1_A4.js30
-rw-r--r--js/src/tests/test262/ch09/9.8/9.8.1/S9.8.1_A6.js93
-rw-r--r--js/src/tests/test262/ch09/9.8/9.8.1/S9.8.1_A7.js23
-rw-r--r--js/src/tests/test262/ch09/9.8/9.8.1/S9.8.1_A8.js54
-rw-r--r--js/src/tests/test262/ch09/9.8/9.8.1/S9.8.1_A9_T1.js73
-rw-r--r--js/src/tests/test262/ch09/9.8/9.8.1/S9.8.1_A9_T2.js73
-rw-r--r--js/src/tests/test262/ch09/9.8/9.8.1/browser.js0
-rw-r--r--js/src/tests/test262/ch09/9.8/9.8.1/shell.js0
-rw-r--r--js/src/tests/test262/ch09/9.8/S9.8_A1_T1.js25
-rw-r--r--js/src/tests/test262/ch09/9.8/S9.8_A1_T2.js25
-rw-r--r--js/src/tests/test262/ch09/9.8/S9.8_A2_T1.js15
-rw-r--r--js/src/tests/test262/ch09/9.8/S9.8_A2_T2.js15
-rw-r--r--js/src/tests/test262/ch09/9.8/S9.8_A3_T1.js21
-rw-r--r--js/src/tests/test262/ch09/9.8/S9.8_A3_T2.js21
-rw-r--r--js/src/tests/test262/ch09/9.8/S9.8_A4_T1.js22
-rw-r--r--js/src/tests/test262/ch09/9.8/S9.8_A4_T2.js22
-rw-r--r--js/src/tests/test262/ch09/9.8/S9.8_A5_T1.js93
-rw-r--r--js/src/tests/test262/ch09/9.8/S9.8_A5_T2.js92
-rw-r--r--js/src/tests/test262/ch09/9.8/browser.js0
-rw-r--r--js/src/tests/test262/ch09/9.8/shell.js0
-rw-r--r--js/src/tests/test262/ch09/9.9/S9.9_A1.js33
-rw-r--r--js/src/tests/test262/ch09/9.9/S9.9_A2.js33
-rw-r--r--js/src/tests/test262/ch09/9.9/S9.9_A3.js41
-rw-r--r--js/src/tests/test262/ch09/9.9/S9.9_A4.js178
-rw-r--r--js/src/tests/test262/ch09/9.9/S9.9_A5.js71
-rw-r--r--js/src/tests/test262/ch09/9.9/S9.9_A6.js40
-rw-r--r--js/src/tests/test262/ch09/9.9/browser.js0
-rw-r--r--js/src/tests/test262/ch09/9.9/shell.js0
-rw-r--r--js/src/tests/test262/ch09/browser.js0
-rw-r--r--js/src/tests/test262/ch09/shell.js0
-rw-r--r--js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-1-s.js18
-rw-r--r--js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-10-s.js18
-rw-r--r--js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-11-s.js23
-rw-r--r--js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-12-s.js17
-rw-r--r--js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-13-s.js17
-rw-r--r--js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-14-s.js22
-rw-r--r--js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-15-s.js26
-rw-r--r--js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-16-s.js24
-rw-r--r--js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-17-s.js30
-rw-r--r--js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-18-s.js31
-rw-r--r--js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-19-s.js25
-rw-r--r--js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-2-s.js23
-rw-r--r--js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-20-s.js21
-rw-r--r--js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-21-s.js21
-rw-r--r--js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-22-s.js24
-rw-r--r--js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-23-s.js20
-rw-r--r--js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-24-s.js20
-rw-r--r--js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-25-s.js29
-rw-r--r--js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-26-s.js32
-rw-r--r--js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-27-s.js24
-rw-r--r--js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-28-s.js27
-rw-r--r--js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-29-s.js19
-rw-r--r--js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-2gs.js16
-rw-r--r--js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-3-s.js19
-rw-r--r--js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-30-s.js22
-rw-r--r--js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-31-s.js18
-rw-r--r--js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-32-s.js18
-rw-r--r--js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-4-s.js18
-rw-r--r--js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-5-s.js23
-rw-r--r--js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-5gs.js16
-rw-r--r--js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-6-s.js19
-rw-r--r--js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-7-s.js18
-rw-r--r--js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-8-s.js23
-rw-r--r--js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-8gs.js17
-rw-r--r--js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-9-s.js18
-rw-r--r--js/src/tests/test262/ch10/10.1/10.1.1/browser.js0
-rw-r--r--js/src/tests/test262/ch10/10.1/10.1.1/shell.js0
-rw-r--r--js/src/tests/test262/ch10/10.1/S10.1.1_A1_T1.js18
-rw-r--r--js/src/tests/test262/ch10/10.1/S10.1.1_A1_T2.js28
-rw-r--r--js/src/tests/test262/ch10/10.1/S10.1.1_A1_T3.js16
-rw-r--r--js/src/tests/test262/ch10/10.1/S10.1.1_A2_T1.js20
-rw-r--r--js/src/tests/test262/ch10/10.1/S10.1.6_A1_T1.js20
-rw-r--r--js/src/tests/test262/ch10/10.1/S10.1.6_A1_T2.js33
-rw-r--r--js/src/tests/test262/ch10/10.1/S10.1.6_A1_T3.js20
-rw-r--r--js/src/tests/test262/ch10/10.1/S10.1.7_A1_T1.js15
-rw-r--r--js/src/tests/test262/ch10/10.1/browser.js0
-rw-r--r--js/src/tests/test262/ch10/10.1/shell.js0
-rw-r--r--js/src/tests/test262/ch10/10.2/10.2.1/10.2.1.1/10.2.1.1.3/10.2.1.1.3-4-16-s.js23
-rw-r--r--js/src/tests/test262/ch10/10.2/10.2.1/10.2.1.1/10.2.1.1.3/10.2.1.1.3-4-18-s.js22
-rw-r--r--js/src/tests/test262/ch10/10.2/10.2.1/10.2.1.1/10.2.1.1.3/10.2.1.1.3-4-22-s.js24
-rw-r--r--js/src/tests/test262/ch10/10.2/10.2.1/10.2.1.1/10.2.1.1.3/10.2.1.1.3-4-27-s.js24
-rw-r--r--js/src/tests/test262/ch10/10.2/10.2.1/10.2.1.1/10.2.1.1.3/browser.js0
-rw-r--r--js/src/tests/test262/ch10/10.2/10.2.1/10.2.1.1/10.2.1.1.3/shell.js0
-rw-r--r--js/src/tests/test262/ch10/10.2/10.2.1/10.2.1.1/browser.js0
-rw-r--r--js/src/tests/test262/ch10/10.2/10.2.1/10.2.1.1/shell.js0
-rw-r--r--js/src/tests/test262/ch10/10.2/10.2.1/S10.2.1_A1.js29
-rw-r--r--js/src/tests/test262/ch10/10.2/10.2.1/S10.2.1_A2.js37
-rw-r--r--js/src/tests/test262/ch10/10.2/10.2.1/S10.2.1_A3.js21
-rw-r--r--js/src/tests/test262/ch10/10.2/10.2.1/S10.2.1_A4_T1.js49
-rw-r--r--js/src/tests/test262/ch10/10.2/10.2.1/S10.2.1_A4_T2.js41
-rw-r--r--js/src/tests/test262/ch10/10.2/10.2.1/S10.2.1_A5.1_T1.js35
-rw-r--r--js/src/tests/test262/ch10/10.2/10.2.1/S10.2.1_A5.1_T2.js35
-rw-r--r--js/src/tests/test262/ch10/10.2/10.2.1/S10.2.1_A5.2_T1.js34
-rw-r--r--js/src/tests/test262/ch10/10.2/10.2.1/browser.js0
-rw-r--r--js/src/tests/test262/ch10/10.2/10.2.1/shell.js0
-rw-r--r--js/src/tests/test262/ch10/10.2/10.2.2/S10.2.2_A1_T1.js26
-rw-r--r--js/src/tests/test262/ch10/10.2/10.2.2/S10.2.2_A1_T2.js25
-rw-r--r--js/src/tests/test262/ch10/10.2/10.2.2/S10.2.2_A1_T3.js28
-rw-r--r--js/src/tests/test262/ch10/10.2/10.2.2/S10.2.2_A1_T4.js27
-rw-r--r--js/src/tests/test262/ch10/10.2/10.2.2/S10.2.2_A1_T5.js31
-rw-r--r--js/src/tests/test262/ch10/10.2/10.2.2/S10.2.2_A1_T6.js30
-rw-r--r--js/src/tests/test262/ch10/10.2/10.2.2/S10.2.2_A1_T7.js32
-rw-r--r--js/src/tests/test262/ch10/10.2/10.2.2/S10.2.2_A1_T8.js32
-rw-r--r--js/src/tests/test262/ch10/10.2/10.2.2/S10.2.2_A1_T9.js27
-rw-r--r--js/src/tests/test262/ch10/10.2/10.2.2/browser.js0
-rw-r--r--js/src/tests/test262/ch10/10.2/10.2.2/shell.js0
-rw-r--r--js/src/tests/test262/ch10/10.2/10.2.3/S10.2.3_A1.1_T1.js26
-rw-r--r--js/src/tests/test262/ch10/10.2/10.2.3/S10.2.3_A1.1_T2.js56
-rw-r--r--js/src/tests/test262/ch10/10.2/10.2.3/S10.2.3_A1.1_T3.js87
-rw-r--r--js/src/tests/test262/ch10/10.2/10.2.3/S10.2.3_A1.1_T4.js16
-rw-r--r--js/src/tests/test262/ch10/10.2/10.2.3/S10.2.3_A1.2_T1.js30
-rw-r--r--js/src/tests/test262/ch10/10.2/10.2.3/S10.2.3_A1.2_T2.js60
-rw-r--r--js/src/tests/test262/ch10/10.2/10.2.3/S10.2.3_A1.2_T3.js90
-rw-r--r--js/src/tests/test262/ch10/10.2/10.2.3/S10.2.3_A1.2_T4.js20
-rw-r--r--js/src/tests/test262/ch10/10.2/10.2.3/S10.2.3_A1.3_T1.js30
-rw-r--r--js/src/tests/test262/ch10/10.2/10.2.3/S10.2.3_A1.3_T2.js60
-rw-r--r--js/src/tests/test262/ch10/10.2/10.2.3/S10.2.3_A1.3_T3.js90
-rw-r--r--js/src/tests/test262/ch10/10.2/10.2.3/S10.2.3_A1.3_T4.js20
-rw-r--r--js/src/tests/test262/ch10/10.2/10.2.3/S10.2.3_A2.1_T1.js21
-rw-r--r--js/src/tests/test262/ch10/10.2/10.2.3/S10.2.3_A2.1_T2.js33
-rw-r--r--js/src/tests/test262/ch10/10.2/10.2.3/S10.2.3_A2.1_T3.js45
-rw-r--r--js/src/tests/test262/ch10/10.2/10.2.3/S10.2.3_A2.1_T4.js17
-rw-r--r--js/src/tests/test262/ch10/10.2/10.2.3/S10.2.3_A2.2_T1.js25
-rw-r--r--js/src/tests/test262/ch10/10.2/10.2.3/S10.2.3_A2.2_T2.js37
-rw-r--r--js/src/tests/test262/ch10/10.2/10.2.3/S10.2.3_A2.2_T3.js49
-rw-r--r--js/src/tests/test262/ch10/10.2/10.2.3/S10.2.3_A2.2_T4.js21
-rw-r--r--js/src/tests/test262/ch10/10.2/10.2.3/S10.2.3_A2.3_T1.js24
-rw-r--r--js/src/tests/test262/ch10/10.2/10.2.3/S10.2.3_A2.3_T2.js36
-rw-r--r--js/src/tests/test262/ch10/10.2/10.2.3/S10.2.3_A2.3_T3.js48
-rw-r--r--js/src/tests/test262/ch10/10.2/10.2.3/S10.2.3_A2.3_T4.js20
-rw-r--r--js/src/tests/test262/ch10/10.2/10.2.3/browser.js0
-rw-r--r--js/src/tests/test262/ch10/10.2/10.2.3/shell.js0
-rw-r--r--js/src/tests/test262/ch10/10.2/browser.js0
-rw-r--r--js/src/tests/test262/ch10/10.2/shell.js0
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.1/S10.4.1_A1_T1.js22
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.1/S10.4.1_A1_T2.js22
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.1/browser.js0
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.1/shell.js0
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.2/10.4.2-1-1.js26
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.2/10.4.2-1-2.js31
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.2/10.4.2-1-3.js34
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.2/10.4.2-1-4.js29
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.2/10.4.2-1-5.js27
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.2/10.4.2-2-c-1.js20
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.2/10.4.2-2-s.js18
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.2/10.4.2-3-c-1-s.js21
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.2/10.4.2-3-c-2-s.js22
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.2/10.4.2.1-1gs.js17
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.2/10.4.2.1-2-s.js19
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.2/10.4.2.1-4-s.js18
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.2/S10.4.2.1_A1.js17
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.2/S10.4.2_A1.1_T1.js28
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.2/S10.4.2_A1.1_T10.js28
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.2/S10.4.2_A1.1_T11.js29
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.2/S10.4.2_A1.1_T2.js29
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.2/S10.4.2_A1.1_T3.js28
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.2/S10.4.2_A1.1_T4.js29
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.2/S10.4.2_A1.1_T5.js29
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.2/S10.4.2_A1.1_T6.js29
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.2/S10.4.2_A1.1_T7.js29
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.2/S10.4.2_A1.1_T8.js29
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.2/S10.4.2_A1.1_T9.js29
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.2/S10.4.2_A1.2_T1.js31
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.2/S10.4.2_A1.2_T10.js32
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.2/S10.4.2_A1.2_T11.js34
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.2/S10.4.2_A1.2_T2.js32
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.2/S10.4.2_A1.2_T3.js32
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.2/S10.4.2_A1.2_T4.js33
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.2/S10.4.2_A1.2_T5.js34
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.2/S10.4.2_A1.2_T6.js34
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.2/S10.4.2_A1.2_T7.js35
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.2/S10.4.2_A1.2_T8.js34
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.2/S10.4.2_A1.2_T9.js34
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.2/browser.js0
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.2/shell.js0
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-1-s.js29
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-10-s.js19
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-100-s.js22
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-100gs.js20
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-101-s.js22
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-101gs.js20
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-102-s.js23
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-102gs.js20
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-103.js18
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-104.js20
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-105.js21
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-106.js20
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-10gs.js18
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-11-s.js18
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-11gs.js18
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-12-s.js18
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-12gs.js17
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-13-s.js17
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-13gs.js16
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-14-s.js16
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-14gs.js15
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-15-s.js17
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-15gs.js16
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-16-s.js16
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-16gs.js15
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-17-s.js16
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-17gs.js15
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-18gs.js14
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-19-s.js17
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-19gs.js16
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-2-s.js29
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-20-s.js16
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-20gs.js15
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-21-s.js19
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-21gs.js19
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-22-s.js20
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-22gs.js19
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-23-s.js20
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-23gs.js18
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-24-s.js19
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-24gs.js18
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-25-s.js19
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-25gs.js19
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-26-s.js19
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-26gs.js18
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-27-s.js22
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-27gs.js21
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-28-s.js22
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-28gs.js21
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-29-s.js21
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-29gs.js20
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-3-s.js27
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-30-s.js22
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-30gs.js21
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-31-s.js22
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-31gs.js21
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-32-s.js21
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-32gs.js20
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-33-s.js21
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-33gs.js20
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-34-s.js21
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-34gs.js20
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-35-s.js20
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-35gs.js19
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-36-s.js22
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-36gs.js21
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-37-s.js22
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-37gs.js21
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-38-s.js21
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-38gs.js20
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-39-s.js22
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-39gs.js21
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-4-s.js29
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-40-s.js22
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-40gs.js21
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-41-s.js21
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-41gs.js20
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-42-s.js21
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-42gs.js20
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-43-s.js21
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-43gs.js20
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-44-s.js20
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-44gs.js19
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-45-s.js22
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-45gs.js21
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-46-s.js22
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-46gs.js21
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-47-s.js21
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-47gs.js20
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-48-s.js22
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-48gs.js21
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-49-s.js22
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-49gs.js21
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-5-s.js32
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-50-s.js21
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-50gs.js20
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-51-s.js21
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-51gs.js20
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-52-s.js21
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-52gs.js20
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-53-s.js20
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-53gs.js19
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-54-s.js17
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-54gs.js16
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-55-s.js16
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-55gs.js15
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-56-s.js19
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-56gs.js18
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-57-s.js18
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-57gs.js17
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-58-s.js18
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-58gs.js17
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-59-s.js17
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-59gs.js16
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-60-s.js20
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-60gs.js19
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-61-s.js19
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-61gs.js18
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-62-s.js17
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-62gs.js16
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-63-s.js16
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-63gs.js15
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-64-s.js16
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-64gs.js15
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-65-s.js16
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-65gs.js15
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-66-s.js16
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-66gs.js15
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-67-s.js16
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-67gs.js15
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-68-s.js16
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-68gs.js15
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-69-s.js17
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-69gs.js16
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-7-s.js20
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-70-s.js16
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-70gs.js15
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-71-s.js16
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-71gs.js15
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-72-s.js16
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-72gs.js15
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-73-s.js16
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-73gs.js15
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-74-s.js17
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-74gs.js16
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-75-s.js16
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-75gs.js15
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-76-s.js16
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-76gs.js15
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-77-s.js16
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-77gs.js15
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-78-s.js16
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-78gs.js15
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-79-s.js17
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-79gs.js16
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-7gs.js18
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-8-s.js20
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-80-s.js16
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-80gs.js15
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-81-s.js17
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-81gs.js16
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-82-s.js16
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-82gs.js15
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-83-s.js16
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-83gs.js15
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-84-s.js16
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-84gs.js15
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-85-s.js16
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-85gs.js15
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-86-s.js16
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-86gs.js15
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-87-s.js16
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-87gs.js15
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-88-s.js17
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-88gs.js16
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-89-s.js16
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-89gs.js15
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-8gs.js18
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-9-s.js19
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-90-s.js16
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-90gs.js15
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-91-s.js16
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-91gs.js15
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-92-s.js16
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-92gs.js15
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-93-s.js17
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-93gs.js16
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-94-s.js16
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-94gs.js15
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-95-s.js16
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-95gs.js15
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-96-s.js16
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-96gs.js15
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-97-s.js16
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-97gs.js15
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-98-s.js17
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-98gs.js16
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-99-s.js16
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-99gs.js15
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-9gs.js18
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/S10.4.3_A1.js16
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/browser.js0
-rw-r--r--js/src/tests/test262/ch10/10.4/10.4.3/shell.js0
-rw-r--r--js/src/tests/test262/ch10/10.4/S10.4A1.1_T2.js33
-rw-r--r--js/src/tests/test262/ch10/10.4/S10.4_A1.1_T1.js31
-rw-r--r--js/src/tests/test262/ch10/10.4/browser.js0
-rw-r--r--js/src/tests/test262/ch10/10.4/shell.js0
-rw-r--r--js/src/tests/test262/ch10/10.5/10.5-1-s.js24
-rw-r--r--js/src/tests/test262/ch10/10.5/10.5-1gs.js20
-rw-r--r--js/src/tests/test262/ch10/10.5/10.5-7-b-1-s.js23
-rw-r--r--js/src/tests/test262/ch10/10.5/10.5-7-b-2-s.js23
-rw-r--r--js/src/tests/test262/ch10/10.5/10.5-7-b-3-s.js23
-rw-r--r--js/src/tests/test262/ch10/10.5/10.5-7-b-4-s.js24
-rw-r--r--js/src/tests/test262/ch10/10.5/browser.js0
-rw-r--r--js/src/tests/test262/ch10/10.5/shell.js0
-rw-r--r--js/src/tests/test262/ch10/10.6/10.6-10-c-ii-1-s.js22
-rw-r--r--js/src/tests/test262/ch10/10.6/10.6-10-c-ii-1.js21
-rw-r--r--js/src/tests/test262/ch10/10.6/10.6-10-c-ii-2-s.js23
-rw-r--r--js/src/tests/test262/ch10/10.6/10.6-10-c-ii-2.js22
-rw-r--r--js/src/tests/test262/ch10/10.6/10.6-11-b-1.js54
-rw-r--r--js/src/tests/test262/ch10/10.6/10.6-12-1.js21
-rw-r--r--js/src/tests/test262/ch10/10.6/10.6-12-2.js22
-rw-r--r--js/src/tests/test262/ch10/10.6/10.6-13-1.js21
-rw-r--r--js/src/tests/test262/ch10/10.6/10.6-13-a-1.js45
-rw-r--r--js/src/tests/test262/ch10/10.6/10.6-13-a-2.js35
-rw-r--r--js/src/tests/test262/ch10/10.6/10.6-13-a-3.js36
-rw-r--r--js/src/tests/test262/ch10/10.6/10.6-13-b-1-s.js24
-rw-r--r--js/src/tests/test262/ch10/10.6/10.6-13-b-2-s.js19
-rw-r--r--js/src/tests/test262/ch10/10.6/10.6-13-b-3-s.js26
-rw-r--r--js/src/tests/test262/ch10/10.6/10.6-13-c-1-s.js24
-rw-r--r--js/src/tests/test262/ch10/10.6/10.6-13-c-2-s.js19
-rw-r--r--js/src/tests/test262/ch10/10.6/10.6-13-c-3-s.js24
-rw-r--r--js/src/tests/test262/ch10/10.6/10.6-14-1-s.js20
-rw-r--r--js/src/tests/test262/ch10/10.6/10.6-14-b-1-s.js28
-rw-r--r--js/src/tests/test262/ch10/10.6/10.6-14-b-4-s.js27
-rw-r--r--js/src/tests/test262/ch10/10.6/10.6-14-c-1-s.js28
-rw-r--r--js/src/tests/test262/ch10/10.6/10.6-14-c-4-s.js27
-rw-r--r--js/src/tests/test262/ch10/10.6/10.6-1gs.js17
-rw-r--r--js/src/tests/test262/ch10/10.6/10.6-2gs.js19
-rw-r--r--js/src/tests/test262/ch10/10.6/10.6-5-1.js16
-rw-r--r--js/src/tests/test262/ch10/10.6/10.6-6-1.js17
-rw-r--r--js/src/tests/test262/ch10/10.6/10.6-6-2.js20
-rw-r--r--js/src/tests/test262/ch10/10.6/10.6-6-3.js16
-rw-r--r--js/src/tests/test262/ch10/10.6/10.6-6-4.js16
-rw-r--r--js/src/tests/test262/ch10/10.6/10.6-7-1.js53
-rw-r--r--js/src/tests/test262/ch10/10.6/S10.6_A1.js35
-rw-r--r--js/src/tests/test262/ch10/10.6/S10.6_A2.js36
-rw-r--r--js/src/tests/test262/ch10/10.6/S10.6_A3_T1.js35
-rw-r--r--js/src/tests/test262/ch10/10.6/S10.6_A3_T2.js49
-rw-r--r--js/src/tests/test262/ch10/10.6/S10.6_A3_T3.js40
-rw-r--r--js/src/tests/test262/ch10/10.6/S10.6_A3_T4.js42
-rw-r--r--js/src/tests/test262/ch10/10.6/S10.6_A4.js38
-rw-r--r--js/src/tests/test262/ch10/10.6/S10.6_A5_T1.js35
-rw-r--r--js/src/tests/test262/ch10/10.6/S10.6_A5_T2.js49
-rw-r--r--js/src/tests/test262/ch10/10.6/S10.6_A5_T3.js39
-rw-r--r--js/src/tests/test262/ch10/10.6/S10.6_A5_T4.js41
-rw-r--r--js/src/tests/test262/ch10/10.6/S10.6_A6.js67
-rw-r--r--js/src/tests/test262/ch10/10.6/S10.6_A7.js20
-rw-r--r--js/src/tests/test262/ch10/10.6/browser.js0
-rw-r--r--js/src/tests/test262/ch10/10.6/shell.js0
-rw-r--r--js/src/tests/test262/ch10/browser.js0
-rw-r--r--js/src/tests/test262/ch10/shell.js0
-rw-r--r--js/src/tests/test262/ch11/11.1/11.1.1/11.1.1-1gs.js16
-rw-r--r--js/src/tests/test262/ch11/11.1/11.1.1/S11.1.1_A1.js13
-rw-r--r--js/src/tests/test262/ch11/11.1/11.1.1/S11.1.1_A3.1.js25
-rw-r--r--js/src/tests/test262/ch11/11.1/11.1.1/S11.1.1_A3.2.js24
-rw-r--r--js/src/tests/test262/ch11/11.1/11.1.1/S11.1.1_A4.1.js24
-rw-r--r--js/src/tests/test262/ch11/11.1/11.1.1/S11.1.1_A4.2.js25
-rw-r--r--js/src/tests/test262/ch11/11.1/11.1.1/browser.js0
-rw-r--r--js/src/tests/test262/ch11/11.1/11.1.1/shell.js0
-rw-r--r--js/src/tests/test262/ch11/11.1/11.1.2/S11.1.2_A1_T1.js27
-rw-r--r--js/src/tests/test262/ch11/11.1/11.1.2/S11.1.2_A1_T2.js21
-rw-r--r--js/src/tests/test262/ch11/11.1/11.1.2/browser.js0
-rw-r--r--js/src/tests/test262/ch11/11.1/11.1.2/shell.js0
-rw-r--r--js/src/tests/test262/ch11/11.1/11.1.4/11.1.4-0.js18
-rw-r--r--js/src/tests/test262/ch11/11.1/11.1.4/11.1.4_4-5-1.js32
-rw-r--r--js/src/tests/test262/ch11/11.1/11.1.4/11.1.4_5-6-1.js32
-rw-r--r--js/src/tests/test262/ch11/11.1/11.1.4/S11.1.4_A1.1.js32
-rw-r--r--js/src/tests/test262/ch11/11.1/11.1.4/S11.1.4_A1.2.js32
-rw-r--r--js/src/tests/test262/ch11/11.1/11.1.4/S11.1.4_A1.3.js57
-rw-r--r--js/src/tests/test262/ch11/11.1/11.1.4/S11.1.4_A1.4.js57
-rw-r--r--js/src/tests/test262/ch11/11.1/11.1.4/S11.1.4_A1.5.js57
-rw-r--r--js/src/tests/test262/ch11/11.1/11.1.4/S11.1.4_A1.6.js57
-rw-r--r--js/src/tests/test262/ch11/11.1/11.1.4/S11.1.4_A1.7.js57
-rw-r--r--js/src/tests/test262/ch11/11.1/11.1.4/S11.1.4_A2.js128
-rw-r--r--js/src/tests/test262/ch11/11.1/11.1.4/browser.js0
-rw-r--r--js/src/tests/test262/ch11/11.1/11.1.4/shell.js0
-rw-r--r--js/src/tests/test262/ch11/11.1/11.1.5/11.1.5-0-1.js27
-rw-r--r--js/src/tests/test262/ch11/11.1/11.1.5/11.1.5-0-2.js32
-rw-r--r--js/src/tests/test262/ch11/11.1/11.1.5/11.1.5-1-s.js23
-rw-r--r--js/src/tests/test262/ch11/11.1/11.1.5/11.1.5-1gs.js14
-rw-r--r--js/src/tests/test262/ch11/11.1/11.1.5/11.1.5-2-s.js23
-rw-r--r--js/src/tests/test262/ch11/11.1/11.1.5/11.1.5-2gs.js14
-rw-r--r--js/src/tests/test262/ch11/11.1/11.1.5/11.1.5-3-s.js22
-rw-r--r--js/src/tests/test262/ch11/11.1/11.1.5/11.1.5-4-s.js22
-rw-r--r--js/src/tests/test262/ch11/11.1/11.1.5/11.1.5_3-3-1.js31
-rw-r--r--js/src/tests/test262/ch11/11.1/11.1.5/11.1.5_4-4-a-2.js23
-rw-r--r--js/src/tests/test262/ch11/11.1/11.1.5/11.1.5_4-4-a-3.js23
-rw-r--r--js/src/tests/test262/ch11/11.1/11.1.5/11.1.5_4-5-1.js32
-rw-r--r--js/src/tests/test262/ch11/11.1/11.1.5/11.1.5_5-4-1.js27
-rw-r--r--js/src/tests/test262/ch11/11.1/11.1.5/11.1.5_6-2-1-s.js30
-rw-r--r--js/src/tests/test262/ch11/11.1/11.1.5/11.1.5_6-2-2-s.js29
-rw-r--r--js/src/tests/test262/ch11/11.1/11.1.5/11.1.5_6-3-1.js25
-rw-r--r--js/src/tests/test262/ch11/11.1/11.1.5/11.1.5_6-3-2.js23
-rw-r--r--js/src/tests/test262/ch11/11.1/11.1.5/11.1.5_7-2-1-s.js30
-rw-r--r--js/src/tests/test262/ch11/11.1/11.1.5/11.1.5_7-2-2-s.js30
-rw-r--r--js/src/tests/test262/ch11/11.1/11.1.5/11.1.5_7-3-1.js25
-rw-r--r--js/src/tests/test262/ch11/11.1/11.1.5/11.1.5_7-3-2.js23
-rw-r--r--js/src/tests/test262/ch11/11.1/11.1.5/S11.1.5_A1.1.js32
-rw-r--r--js/src/tests/test262/ch11/11.1/11.1.5/S11.1.5_A1.2.js38
-rw-r--r--js/src/tests/test262/ch11/11.1/11.1.5/S11.1.5_A1.3.js37
-rw-r--r--js/src/tests/test262/ch11/11.1/11.1.5/S11.1.5_A1.4.js37
-rw-r--r--js/src/tests/test262/ch11/11.1/11.1.5/S11.1.5_A2.js94
-rw-r--r--js/src/tests/test262/ch11/11.1/11.1.5/S11.1.5_A3.js27
-rw-r--r--js/src/tests/test262/ch11/11.1/11.1.5/S11.1.5_A4.1.js13
-rw-r--r--js/src/tests/test262/ch11/11.1/11.1.5/S11.1.5_A4.2.js12
-rw-r--r--js/src/tests/test262/ch11/11.1/11.1.5/S11.1.5_A4.3.js34
-rw-r--r--js/src/tests/test262/ch11/11.1/11.1.5/browser.js0
-rw-r--r--js/src/tests/test262/ch11/11.1/11.1.5/shell.js0
-rw-r--r--js/src/tests/test262/ch11/11.1/11.1.6/S11.1.6_A1.js60
-rw-r--r--js/src/tests/test262/ch11/11.1/11.1.6/S11.1.6_A2.js31
-rw-r--r--js/src/tests/test262/ch11/11.1/11.1.6/S11.1.6_A3_T1.js23
-rw-r--r--js/src/tests/test262/ch11/11.1/11.1.6/S11.1.6_A3_T2.js23
-rw-r--r--js/src/tests/test262/ch11/11.1/11.1.6/S11.1.6_A3_T3.js28
-rw-r--r--js/src/tests/test262/ch11/11.1/11.1.6/S11.1.6_A3_T4.js27
-rw-r--r--js/src/tests/test262/ch11/11.1/11.1.6/S11.1.6_A3_T5.js22
-rw-r--r--js/src/tests/test262/ch11/11.1/11.1.6/S11.1.6_A3_T6.js20
-rw-r--r--js/src/tests/test262/ch11/11.1/11.1.6/browser.js0
-rw-r--r--js/src/tests/test262/ch11/11.1/11.1.6/shell.js0
-rw-r--r--js/src/tests/test262/ch11/11.1/browser.js0
-rw-r--r--js/src/tests/test262/ch11/11.1/shell.js0
-rw-r--r--js/src/tests/test262/ch11/11.10/11.10.1/S11.10.1_A1.js61
-rw-r--r--js/src/tests/test262/ch11/11.10/11.10.1/S11.10.1_A2.1_T1.js43
-rw-r--r--js/src/tests/test262/ch11/11.10/11.10.1/S11.10.1_A2.1_T2.js21
-rw-r--r--js/src/tests/test262/ch11/11.10/11.10.1/S11.10.1_A2.1_T3.js22
-rw-r--r--js/src/tests/test262/ch11/11.10/11.10.1/S11.10.1_A2.2_T1.js71
-rw-r--r--js/src/tests/test262/ch11/11.10/11.10.1/S11.10.1_A2.3_T1.js26
-rw-r--r--js/src/tests/test262/ch11/11.10/11.10.1/S11.10.1_A2.4_T1.js23
-rw-r--r--js/src/tests/test262/ch11/11.10/11.10.1/S11.10.1_A2.4_T2.js26
-rw-r--r--js/src/tests/test262/ch11/11.10/11.10.1/S11.10.1_A2.4_T3.js28
-rw-r--r--js/src/tests/test262/ch11/11.10/11.10.1/S11.10.1_A3_T1.1.js30
-rw-r--r--js/src/tests/test262/ch11/11.10/11.10.1/S11.10.1_A3_T1.2.js31
-rw-r--r--js/src/tests/test262/ch11/11.10/11.10.1/S11.10.1_A3_T1.3.js40
-rw-r--r--js/src/tests/test262/ch11/11.10/11.10.1/S11.10.1_A3_T1.4.js30
-rw-r--r--js/src/tests/test262/ch11/11.10/11.10.1/S11.10.1_A3_T1.5.js31
-rw-r--r--js/src/tests/test262/ch11/11.10/11.10.1/S11.10.1_A3_T2.1.js50
-rw-r--r--js/src/tests/test262/ch11/11.10/11.10.1/S11.10.1_A3_T2.2.js60
-rw-r--r--js/src/tests/test262/ch11/11.10/11.10.1/S11.10.1_A3_T2.3.js30
-rw-r--r--js/src/tests/test262/ch11/11.10/11.10.1/S11.10.1_A3_T2.4.js30
-rw-r--r--js/src/tests/test262/ch11/11.10/11.10.1/S11.10.1_A3_T2.5.js50
-rw-r--r--js/src/tests/test262/ch11/11.10/11.10.1/S11.10.1_A3_T2.6.js30
-rw-r--r--js/src/tests/test262/ch11/11.10/11.10.1/S11.10.1_A3_T2.7.js30
-rw-r--r--js/src/tests/test262/ch11/11.10/11.10.1/S11.10.1_A3_T2.8.js30
-rw-r--r--js/src/tests/test262/ch11/11.10/11.10.1/S11.10.1_A3_T2.9.js30
-rw-r--r--js/src/tests/test262/ch11/11.10/11.10.1/browser.js0
-rw-r--r--js/src/tests/test262/ch11/11.10/11.10.1/shell.js0
-rw-r--r--js/src/tests/test262/ch11/11.10/11.10.2/S11.10.2_A1.js61
-rw-r--r--js/src/tests/test262/ch11/11.10/11.10.2/S11.10.2_A2.1_T1.js44
-rw-r--r--js/src/tests/test262/ch11/11.10/11.10.2/S11.10.2_A2.1_T2.js21
-rw-r--r--js/src/tests/test262/ch11/11.10/11.10.2/S11.10.2_A2.1_T3.js21
-rw-r--r--js/src/tests/test262/ch11/11.10/11.10.2/S11.10.2_A2.2_T1.js71
-rw-r--r--js/src/tests/test262/ch11/11.10/11.10.2/S11.10.2_A2.3_T1.js26
-rw-r--r--js/src/tests/test262/ch11/11.10/11.10.2/S11.10.2_A2.4_T1.js24
-rw-r--r--js/src/tests/test262/ch11/11.10/11.10.2/S11.10.2_A2.4_T2.js26
-rw-r--r--js/src/tests/test262/ch11/11.10/11.10.2/S11.10.2_A2.4_T3.js29
-rw-r--r--js/src/tests/test262/ch11/11.10/11.10.2/S11.10.2_A3_T1.1.js30
-rw-r--r--js/src/tests/test262/ch11/11.10/11.10.2/S11.10.2_A3_T1.2.js31
-rw-r--r--js/src/tests/test262/ch11/11.10/11.10.2/S11.10.2_A3_T1.3.js40
-rw-r--r--js/src/tests/test262/ch11/11.10/11.10.2/S11.10.2_A3_T1.4.js30
-rw-r--r--js/src/tests/test262/ch11/11.10/11.10.2/S11.10.2_A3_T1.5.js31
-rw-r--r--js/src/tests/test262/ch11/11.10/11.10.2/S11.10.2_A3_T2.1.js50
-rw-r--r--js/src/tests/test262/ch11/11.10/11.10.2/S11.10.2_A3_T2.2.js60
-rw-r--r--js/src/tests/test262/ch11/11.10/11.10.2/S11.10.2_A3_T2.3.js30
-rw-r--r--js/src/tests/test262/ch11/11.10/11.10.2/S11.10.2_A3_T2.4.js30
-rw-r--r--js/src/tests/test262/ch11/11.10/11.10.2/S11.10.2_A3_T2.5.js50
-rw-r--r--js/src/tests/test262/ch11/11.10/11.10.2/S11.10.2_A3_T2.6.js30
-rw-r--r--js/src/tests/test262/ch11/11.10/11.10.2/S11.10.2_A3_T2.7.js30
-rw-r--r--js/src/tests/test262/ch11/11.10/11.10.2/S11.10.2_A3_T2.8.js30
-rw-r--r--js/src/tests/test262/ch11/11.10/11.10.2/S11.10.2_A3_T2.9.js30
-rw-r--r--js/src/tests/test262/ch11/11.10/11.10.2/browser.js0
-rw-r--r--js/src/tests/test262/ch11/11.10/11.10.2/shell.js0
-rw-r--r--js/src/tests/test262/ch11/11.10/11.10.3/S11.10.3_A1.js61
-rw-r--r--js/src/tests/test262/ch11/11.10/11.10.3/S11.10.3_A2.1_T1.js43
-rw-r--r--js/src/tests/test262/ch11/11.10/11.10.3/S11.10.3_A2.1_T2.js21
-rw-r--r--js/src/tests/test262/ch11/11.10/11.10.3/S11.10.3_A2.1_T3.js21
-rw-r--r--js/src/tests/test262/ch11/11.10/11.10.3/S11.10.3_A2.2_T1.js71
-rw-r--r--js/src/tests/test262/ch11/11.10/11.10.3/S11.10.3_A2.3_T1.js26
-rw-r--r--js/src/tests/test262/ch11/11.10/11.10.3/S11.10.3_A2.4_T1.js22
-rw-r--r--js/src/tests/test262/ch11/11.10/11.10.3/S11.10.3_A2.4_T2.js26
-rw-r--r--js/src/tests/test262/ch11/11.10/11.10.3/S11.10.3_A2.4_T3.js27
-rw-r--r--js/src/tests/test262/ch11/11.10/11.10.3/S11.10.3_A3_T1.1.js30
-rw-r--r--js/src/tests/test262/ch11/11.10/11.10.3/S11.10.3_A3_T1.2.js31
-rw-r--r--js/src/tests/test262/ch11/11.10/11.10.3/S11.10.3_A3_T1.3.js40
-rw-r--r--js/src/tests/test262/ch11/11.10/11.10.3/S11.10.3_A3_T1.4.js30
-rw-r--r--js/src/tests/test262/ch11/11.10/11.10.3/S11.10.3_A3_T1.5.js31
-rw-r--r--js/src/tests/test262/ch11/11.10/11.10.3/S11.10.3_A3_T2.1.js50
-rw-r--r--js/src/tests/test262/ch11/11.10/11.10.3/S11.10.3_A3_T2.2.js60
-rw-r--r--js/src/tests/test262/ch11/11.10/11.10.3/S11.10.3_A3_T2.3.js30
-rw-r--r--js/src/tests/test262/ch11/11.10/11.10.3/S11.10.3_A3_T2.4.js30
-rw-r--r--js/src/tests/test262/ch11/11.10/11.10.3/S11.10.3_A3_T2.5.js50
-rw-r--r--js/src/tests/test262/ch11/11.10/11.10.3/S11.10.3_A3_T2.6.js30
-rw-r--r--js/src/tests/test262/ch11/11.10/11.10.3/S11.10.3_A3_T2.7.js30
-rw-r--r--js/src/tests/test262/ch11/11.10/11.10.3/S11.10.3_A3_T2.8.js30
-rw-r--r--js/src/tests/test262/ch11/11.10/11.10.3/S11.10.3_A3_T2.9.js30
-rw-r--r--js/src/tests/test262/ch11/11.10/11.10.3/browser.js0
-rw-r--r--js/src/tests/test262/ch11/11.10/11.10.3/shell.js0
-rw-r--r--js/src/tests/test262/ch11/11.10/browser.js0
-rw-r--r--js/src/tests/test262/ch11/11.10/shell.js0
-rw-r--r--js/src/tests/test262/ch11/11.11/11.11.1/S11.11.1_A1.js61
-rw-r--r--js/src/tests/test262/ch11/11.11/11.11.1/S11.11.1_A2.1_T1.js64
-rw-r--r--js/src/tests/test262/ch11/11.11/11.11.1/S11.11.1_A2.1_T2.js21
-rw-r--r--js/src/tests/test262/ch11/11.11/11.11.1/S11.11.1_A2.1_T3.js21
-rw-r--r--js/src/tests/test262/ch11/11.11/11.11.1/S11.11.1_A2.1_T4.js15
-rw-r--r--js/src/tests/test262/ch11/11.11/11.11.1/S11.11.1_A2.4_T1.js23
-rw-r--r--js/src/tests/test262/ch11/11.11/11.11.1/S11.11.1_A2.4_T2.js26
-rw-r--r--js/src/tests/test262/ch11/11.11/11.11.1/S11.11.1_A2.4_T3.js28
-rw-r--r--js/src/tests/test262/ch11/11.11/11.11.1/S11.11.1_A3_T1.js30
-rw-r--r--js/src/tests/test262/ch11/11.11/11.11.1/S11.11.1_A3_T2.js33
-rw-r--r--js/src/tests/test262/ch11/11.11/11.11.1/S11.11.1_A3_T3.js20
-rw-r--r--js/src/tests/test262/ch11/11.11/11.11.1/S11.11.1_A3_T4.js20
-rw-r--r--js/src/tests/test262/ch11/11.11/11.11.1/S11.11.1_A4_T1.js44
-rw-r--r--js/src/tests/test262/ch11/11.11/11.11.1/S11.11.1_A4_T2.js51
-rw-r--r--js/src/tests/test262/ch11/11.11/11.11.1/S11.11.1_A4_T3.js44
-rw-r--r--js/src/tests/test262/ch11/11.11/11.11.1/S11.11.1_A4_T4.js20
-rw-r--r--js/src/tests/test262/ch11/11.11/11.11.1/browser.js0
-rw-r--r--js/src/tests/test262/ch11/11.11/11.11.1/shell.js0
-rw-r--r--js/src/tests/test262/ch11/11.11/11.11.2/S11.11.2_A1.js61
-rw-r--r--js/src/tests/test262/ch11/11.11/11.11.2/S11.11.2_A2.1_T1.js64
-rw-r--r--js/src/tests/test262/ch11/11.11/11.11.2/S11.11.2_A2.1_T2.js21
-rw-r--r--js/src/tests/test262/ch11/11.11/11.11.2/S11.11.2_A2.1_T3.js21
-rw-r--r--js/src/tests/test262/ch11/11.11/11.11.2/S11.11.2_A2.1_T4.js15
-rw-r--r--js/src/tests/test262/ch11/11.11/11.11.2/S11.11.2_A2.4_T1.js22
-rw-r--r--js/src/tests/test262/ch11/11.11/11.11.2/S11.11.2_A2.4_T2.js26
-rw-r--r--js/src/tests/test262/ch11/11.11/11.11.2/S11.11.2_A2.4_T3.js28
-rw-r--r--js/src/tests/test262/ch11/11.11/11.11.2/S11.11.2_A3_T1.js32
-rw-r--r--js/src/tests/test262/ch11/11.11/11.11.2/S11.11.2_A3_T2.js40
-rw-r--r--js/src/tests/test262/ch11/11.11/11.11.2/S11.11.2_A3_T3.js21
-rw-r--r--js/src/tests/test262/ch11/11.11/11.11.2/S11.11.2_A3_T4.js20
-rw-r--r--js/src/tests/test262/ch11/11.11/11.11.2/S11.11.2_A4_T1.js44
-rw-r--r--js/src/tests/test262/ch11/11.11/11.11.2/S11.11.2_A4_T2.js43
-rw-r--r--js/src/tests/test262/ch11/11.11/11.11.2/S11.11.2_A4_T3.js44
-rw-r--r--js/src/tests/test262/ch11/11.11/11.11.2/S11.11.2_A4_T4.js20
-rw-r--r--js/src/tests/test262/ch11/11.11/11.11.2/browser.js0
-rw-r--r--js/src/tests/test262/ch11/11.11/11.11.2/shell.js0
-rw-r--r--js/src/tests/test262/ch11/11.11/browser.js0
-rw-r--r--js/src/tests/test262/ch11/11.11/shell.js0
-rw-r--r--js/src/tests/test262/ch11/11.12/S11.12_A1.js60
-rw-r--r--js/src/tests/test262/ch11/11.12/S11.12_A2.1_T1.js49
-rw-r--r--js/src/tests/test262/ch11/11.12/S11.12_A2.1_T2.js21
-rw-r--r--js/src/tests/test262/ch11/11.12/S11.12_A2.1_T3.js21
-rw-r--r--js/src/tests/test262/ch11/11.12/S11.12_A2.1_T4.js21
-rw-r--r--js/src/tests/test262/ch11/11.12/S11.12_A2.1_T5.js16
-rw-r--r--js/src/tests/test262/ch11/11.12/S11.12_A2.1_T6.js16
-rw-r--r--js/src/tests/test262/ch11/11.12/S11.12_A3_T1.js21
-rw-r--r--js/src/tests/test262/ch11/11.12/S11.12_A3_T2.js21
-rw-r--r--js/src/tests/test262/ch11/11.12/S11.12_A3_T3.js21
-rw-r--r--js/src/tests/test262/ch11/11.12/S11.12_A3_T4.js20
-rw-r--r--js/src/tests/test262/ch11/11.12/S11.12_A4_T1.js27
-rw-r--r--js/src/tests/test262/ch11/11.12/S11.12_A4_T2.js27
-rw-r--r--js/src/tests/test262/ch11/11.12/S11.12_A4_T3.js27
-rw-r--r--js/src/tests/test262/ch11/11.12/S11.12_A4_T4.js20
-rw-r--r--js/src/tests/test262/ch11/11.12/browser.js0
-rw-r--r--js/src/tests/test262/ch11/11.12/shell.js0
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.1/11.13.1-1-1.js24
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.1/11.13.1-1-2.js24
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.1/11.13.1-1-3.js24
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.1/11.13.1-1-4.js24
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.1/11.13.1-1-6-s.js26
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.1/11.13.1-1-s.js30
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.1/11.13.1-2-s.js32
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.1/11.13.1-3-s.js25
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.1/11.13.1-4-1.js29
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.1/11.13.1-4-14-s.js24
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.1/11.13.1-4-27-s.js23
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.1/11.13.1-4-28-s.js23
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.1/11.13.1-4-28gs.js14
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.1/11.13.1-4-29-s.js23
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.1/11.13.1-4-29gs.js13
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.1/11.13.1-4-3-s.js24
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.1/11.13.1-4-30-s.js24
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.1/11.13.1-4-31-s.js24
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.1/11.13.1-4-6-s.js24
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.1/S11.13.1_A1.js62
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.1/S11.13.1_A2.1_T1.js50
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.1/S11.13.1_A2.1_T2.js21
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.1/S11.13.1_A2.1_T3.js24
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.1/S11.13.1_A3.1.js22
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.1/S11.13.1_A3.2.js22
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.1/S11.13.1_A4_T1.js18
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.1/S11.13.1_A4_T2.js22
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.1/browser.js0
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.1/shell.js0
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-1-s.js22
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-10-s.js22
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-11-s.js22
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-12-s.js19
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-13-s.js19
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-14-s.js19
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-15-s.js19
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-16-s.js19
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-17-s.js19
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-18-s.js19
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-19-s.js19
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-2-s.js22
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-20-s.js19
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-21-s.js19
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-22-s.js19
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-23-s.js30
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-24-s.js30
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-25-s.js30
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-26-s.js30
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-27-s.js30
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-28-s.js30
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-29-s.js30
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-3-s.js22
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-30-s.js30
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-31-s.js30
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-32-s.js30
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-33-s.js30
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-34-s.js32
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-35-s.js32
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-36-s.js32
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-37-s.js32
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-38-s.js32
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-39-s.js32
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-4-s.js22
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-40-s.js32
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-41-s.js32
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-42-s.js32
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-43-s.js32
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-44-s.js32
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-45-s.js25
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-46-s.js25
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-47-s.js25
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-48-s.js25
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-49-s.js25
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-5-s.js22
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-50-s.js25
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-51-s.js25
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-52-s.js25
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-53-s.js25
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-54-s.js25
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-55-s.js25
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-6-1-s.js23
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-6-10-s.js23
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-6-11-s.js23
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-6-12-s.js23
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-6-13-s.js23
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-6-14-s.js23
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-6-15-s.js23
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-6-16-s.js23
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-6-17-s.js23
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-6-18-s.js23
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-6-19-s.js23
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-6-1gs.js16
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-6-2-s.js23
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-6-20-s.js23
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-6-21-s.js23
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-6-22-s.js23
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-6-3-s.js23
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-6-4-s.js23
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-6-5-s.js23
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-6-6-s.js23
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-6-7-s.js23
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-6-8-s.js23
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-6-9-s.js23
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-6-s.js22
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-7-s.js22
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-8-s.js22
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-9-s.js22
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A1_T1.js71
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A1_T10.js71
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A1_T11.js71
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A1_T2.js71
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A1_T3.js71
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A1_T4.js71
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A1_T5.js71
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A1_T6.js71
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A1_T7.js71
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A1_T8.js71
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A1_T9.js71
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A2.1_T1.1.js26
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A2.1_T1.10.js26
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A2.1_T1.11.js26
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A2.1_T1.2.js26
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A2.1_T1.3.js26
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A2.1_T1.4.js26
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A2.1_T1.5.js26
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A2.1_T1.6.js26
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A2.1_T1.7.js26
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A2.1_T1.8.js26
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A2.1_T1.9.js26
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A2.1_T2.1.js22
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A2.1_T2.10.js22
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A2.1_T2.11.js22
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A2.1_T2.2.js22
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A2.1_T2.3.js22
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A2.1_T2.4.js22
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A2.1_T2.5.js22
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A2.1_T2.6.js22
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A2.1_T2.7.js22
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A2.1_T2.8.js22
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A2.1_T2.9.js22
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A2.1_T3.1.js21
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A2.1_T3.10.js21
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A2.1_T3.11.js21
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A2.1_T3.2.js21
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A2.1_T3.3.js21
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A2.1_T3.4.js21
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A2.1_T3.5.js21
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A2.1_T3.6.js21
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A2.1_T3.7.js21
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A2.1_T3.8.js21
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A2.1_T3.9.js21
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A2.2_T1.js24
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A2.2_T10.js24
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A2.2_T11.js24
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A2.2_T2.js24
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A2.2_T3.js24
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A2.2_T4.js24
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A2.2_T5.js24
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A2.2_T6.js24
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A2.2_T7.js24
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A2.2_T8.js24
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A2.2_T9.js24
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A3.1_T1.js24
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A3.1_T10.js24
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A3.1_T11.js24
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A3.1_T2.js24
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A3.1_T3.js24
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A3.1_T4.js24
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A3.1_T5.js24
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A3.1_T6.js24
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A3.1_T7.js24
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A3.1_T8.js24
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A3.1_T9.js24
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A3.2_T1.js24
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A3.2_T10.js24
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A3.2_T11.js24
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A3.2_T2.js24
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A3.2_T3.js24
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A3.2_T4.js24
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A3.2_T5.js24
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A3.2_T6.js24
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A3.2_T7.js24
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A3.2_T8.js24
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A3.2_T9.js24
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.10_T1.1.js38
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.10_T1.2.js39
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.10_T1.3.js52
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.10_T1.4.js38
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.10_T2.1.js66
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.10_T2.2.js80
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.10_T2.3.js38
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.10_T2.4.js38
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.10_T2.5.js66
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.10_T2.6.js38
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.10_T2.7.js38
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.10_T2.8.js38
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.10_T2.9.js38
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.11_T1.1.js38
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.11_T1.2.js39
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.11_T1.3.js52
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.11_T1.4.js38
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.11_T2.1.js66
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.11_T2.2.js80
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.11_T2.3.js38
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.11_T2.4.js38
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.11_T2.5.js66
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.11_T2.6.js38
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.11_T2.7.js38
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.11_T2.8.js38
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.11_T2.9.js38
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.1_T1.1.js38
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.1_T1.2.js39
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.1_T1.3.js52
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.1_T1.4.js38
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.1_T2.1.js66
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.1_T2.2.js80
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.1_T2.3.js38
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.1_T2.4.js38
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.1_T2.5.js66
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.1_T2.6.js38
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.1_T2.7.js38
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.1_T2.8.js38
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.1_T2.9.js38
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.2_T1.1.js38
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.2_T1.2.js39
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.2_T1.3.js52
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.2_T1.4.js38
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.2_T2.1.js66
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.2_T2.2.js80
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.2_T2.3.js38
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.2_T2.4.js38
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.2_T2.5.js66
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.2_T2.6.js38
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.2_T2.7.js38
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.2_T2.8.js38
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.2_T2.9.js38
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.3_T1.1.js38
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.3_T1.2.js39
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.3_T1.3.js52
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.3_T1.4.js38
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.3_T2.1.js66
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.3_T2.2.js80
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.3_T2.3.js38
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.3_T2.4.js38
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.3_T2.5.js66
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.3_T2.6.js38
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.3_T2.7.js38
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.3_T2.8.js38
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.3_T2.9.js38
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.4_T1.1.js38
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.4_T1.2.js39
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.4_T1.3.js38
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.4_T1.4.js50
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.4_T2.1.js66
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.4_T2.2.js38
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.4_T2.3.js38
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.4_T2.4.js38
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.4_T2.5.js38
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.4_T2.6.js78
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.4_T2.7.js66
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.4_T2.8.js38
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.4_T2.9.js38
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.5_T1.1.js38
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.5_T1.2.js39
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.5_T1.3.js52
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.5_T1.4.js38
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.5_T2.1.js66
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.5_T2.2.js80
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.5_T2.3.js38
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.5_T2.4.js38
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.5_T2.5.js66
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.5_T2.6.js38
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.5_T2.7.js38
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.5_T2.8.js38
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.5_T2.9.js38
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.6_T1.1.js38
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.6_T1.2.js39
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.6_T1.3.js52
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.6_T1.4.js38
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.6_T2.1.js66
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.6_T2.2.js80
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.6_T2.3.js38
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.6_T2.4.js38
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.6_T2.5.js66
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.6_T2.6.js38
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.6_T2.7.js38
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.6_T2.8.js38
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.6_T2.9.js38
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.7_T1.1.js38
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.7_T1.2.js39
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.7_T1.3.js52
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.7_T1.4.js38
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.7_T2.1.js66
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.7_T2.2.js80
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.7_T2.3.js38
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.7_T2.4.js38
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.7_T2.5.js66
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.7_T2.6.js38
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.7_T2.7.js38
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.7_T2.8.js38
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.7_T2.9.js38
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.8_T1.1.js38
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.8_T1.2.js39
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.8_T1.3.js52
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.8_T1.4.js38
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.8_T2.1.js66
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.8_T2.2.js80
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.8_T2.3.js38
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.8_T2.4.js38
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.8_T2.5.js66
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.8_T2.6.js38
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.8_T2.7.js38
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.8_T2.8.js38
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.8_T2.9.js38
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.9_T1.1.js38
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.9_T1.2.js39
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.9_T1.3.js52
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.9_T1.4.js38
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.9_T2.1.js66
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.9_T2.2.js80
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.9_T2.3.js38
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.9_T2.4.js38
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.9_T2.5.js66
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.9_T2.6.js38
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.9_T2.7.js38
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.9_T2.8.js38
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.9_T2.9.js38
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/browser.js0
-rw-r--r--js/src/tests/test262/ch11/11.13/11.13.2/shell.js0
-rw-r--r--js/src/tests/test262/ch11/11.13/browser.js0
-rw-r--r--js/src/tests/test262/ch11/11.13/shell.js0
-rw-r--r--js/src/tests/test262/ch11/11.14/S11.14_A1.js61
-rw-r--r--js/src/tests/test262/ch11/11.14/S11.14_A2.1_T1.js54
-rw-r--r--js/src/tests/test262/ch11/11.14/S11.14_A2.1_T2.js21
-rw-r--r--js/src/tests/test262/ch11/11.14/S11.14_A2.1_T3.js21
-rw-r--r--js/src/tests/test262/ch11/11.14/S11.14_A3.js38
-rw-r--r--js/src/tests/test262/ch11/11.14/browser.js0
-rw-r--r--js/src/tests/test262/ch11/11.14/shell.js0
-rw-r--r--js/src/tests/test262/ch11/11.2/11.2.1/S11.2.1_A1.1.js60
-rw-r--r--js/src/tests/test262/ch11/11.2/11.2.1/S11.2.1_A1.2.js60
-rw-r--r--js/src/tests/test262/ch11/11.2/11.2.1/S11.2.1_A2.js32
-rw-r--r--js/src/tests/test262/ch11/11.2/11.2.1/S11.2.1_A3_T1.js30
-rw-r--r--js/src/tests/test262/ch11/11.2/11.2.1/S11.2.1_A3_T2.js40
-rw-r--r--js/src/tests/test262/ch11/11.2/11.2.1/S11.2.1_A3_T3.js40
-rw-r--r--js/src/tests/test262/ch11/11.2/11.2.1/S11.2.1_A3_T4.js32
-rw-r--r--js/src/tests/test262/ch11/11.2/11.2.1/S11.2.1_A3_T5.js32
-rw-r--r--js/src/tests/test262/ch11/11.2/11.2.1/S11.2.1_A4_T1.js40
-rw-r--r--js/src/tests/test262/ch11/11.2/11.2.1/S11.2.1_A4_T2.js20
-rw-r--r--js/src/tests/test262/ch11/11.2/11.2.1/S11.2.1_A4_T3.js20
-rw-r--r--js/src/tests/test262/ch11/11.2/11.2.1/S11.2.1_A4_T4.js27
-rw-r--r--js/src/tests/test262/ch11/11.2/11.2.1/S11.2.1_A4_T5.js41
-rw-r--r--js/src/tests/test262/ch11/11.2/11.2.1/S11.2.1_A4_T6.js21
-rw-r--r--js/src/tests/test262/ch11/11.2/11.2.1/S11.2.1_A4_T7.js30
-rw-r--r--js/src/tests/test262/ch11/11.2/11.2.1/S11.2.1_A4_T8.js65
-rw-r--r--js/src/tests/test262/ch11/11.2/11.2.1/S11.2.1_A4_T9.js94
-rw-r--r--js/src/tests/test262/ch11/11.2/11.2.1/browser.js0
-rw-r--r--js/src/tests/test262/ch11/11.2/11.2.1/shell.js0
-rw-r--r--js/src/tests/test262/ch11/11.2/11.2.2/S11.2.2_A1.1.js60
-rw-r--r--js/src/tests/test262/ch11/11.2/11.2.2/S11.2.2_A1.2.js60
-rw-r--r--js/src/tests/test262/ch11/11.2/11.2.2/S11.2.2_A2.js32
-rw-r--r--js/src/tests/test262/ch11/11.2/11.2.2/S11.2.2_A3_T1.js46
-rw-r--r--js/src/tests/test262/ch11/11.2/11.2.2/S11.2.2_A3_T2.js45
-rw-r--r--js/src/tests/test262/ch11/11.2/11.2.2/S11.2.2_A3_T3.js45
-rw-r--r--js/src/tests/test262/ch11/11.2/11.2.2/S11.2.2_A3_T4.js45
-rw-r--r--js/src/tests/test262/ch11/11.2/11.2.2/S11.2.2_A3_T5.js45
-rw-r--r--js/src/tests/test262/ch11/11.2/11.2.2/S11.2.2_A4_T1.js46
-rw-r--r--js/src/tests/test262/ch11/11.2/11.2.2/S11.2.2_A4_T2.js46
-rw-r--r--js/src/tests/test262/ch11/11.2/11.2.2/S11.2.2_A4_T3.js46
-rw-r--r--js/src/tests/test262/ch11/11.2/11.2.2/S11.2.2_A4_T4.js32
-rw-r--r--js/src/tests/test262/ch11/11.2/11.2.2/S11.2.2_A4_T5.js45
-rw-r--r--js/src/tests/test262/ch11/11.2/11.2.2/browser.js0
-rw-r--r--js/src/tests/test262/ch11/11.2/11.2.2/shell.js0
-rw-r--r--js/src/tests/test262/ch11/11.2/11.2.3/11.2.3-3_1.js24
-rw-r--r--js/src/tests/test262/ch11/11.2/11.2.3/11.2.3-3_2.js24
-rw-r--r--js/src/tests/test262/ch11/11.2/11.2.3/11.2.3-3_3.js24
-rw-r--r--js/src/tests/test262/ch11/11.2/11.2.3/11.2.3-3_4.js26
-rw-r--r--js/src/tests/test262/ch11/11.2/11.2.3/11.2.3-3_5.js24
-rw-r--r--js/src/tests/test262/ch11/11.2/11.2.3/11.2.3-3_6.js23
-rw-r--r--js/src/tests/test262/ch11/11.2/11.2.3/11.2.3-3_7.js23
-rw-r--r--js/src/tests/test262/ch11/11.2/11.2.3/11.2.3-3_8.js27
-rw-r--r--js/src/tests/test262/ch11/11.2/11.2.3/S11.2.3_A1.js60
-rw-r--r--js/src/tests/test262/ch11/11.2/11.2.3/S11.2.3_A2.js32
-rw-r--r--js/src/tests/test262/ch11/11.2/11.2.3/S11.2.3_A3_T1.js33
-rw-r--r--js/src/tests/test262/ch11/11.2/11.2.3/S11.2.3_A3_T2.js33
-rw-r--r--js/src/tests/test262/ch11/11.2/11.2.3/S11.2.3_A3_T3.js33
-rw-r--r--js/src/tests/test262/ch11/11.2/11.2.3/S11.2.3_A3_T4.js33
-rw-r--r--js/src/tests/test262/ch11/11.2/11.2.3/S11.2.3_A3_T5.js33
-rw-r--r--js/src/tests/test262/ch11/11.2/11.2.3/S11.2.3_A4_T1.js34
-rw-r--r--js/src/tests/test262/ch11/11.2/11.2.3/S11.2.3_A4_T2.js34
-rw-r--r--js/src/tests/test262/ch11/11.2/11.2.3/S11.2.3_A4_T3.js33
-rw-r--r--js/src/tests/test262/ch11/11.2/11.2.3/S11.2.3_A4_T4.js21
-rw-r--r--js/src/tests/test262/ch11/11.2/11.2.3/S11.2.3_A4_T5.js22
-rw-r--r--js/src/tests/test262/ch11/11.2/11.2.3/browser.js0
-rw-r--r--js/src/tests/test262/ch11/11.2/11.2.3/shell.js0
-rw-r--r--js/src/tests/test262/ch11/11.2/11.2.4/S11.2.4_A1.1_T1.js24
-rw-r--r--js/src/tests/test262/ch11/11.2/11.2.4/S11.2.4_A1.1_T2.js29
-rw-r--r--js/src/tests/test262/ch11/11.2/11.2.4/S11.2.4_A1.2_T1.js39
-rw-r--r--js/src/tests/test262/ch11/11.2/11.2.4/S11.2.4_A1.2_T2.js44
-rw-r--r--js/src/tests/test262/ch11/11.2/11.2.4/S11.2.4_A1.3_T1.js16
-rw-r--r--js/src/tests/test262/ch11/11.2/11.2.4/S11.2.4_A1.4_T1.js19
-rw-r--r--js/src/tests/test262/ch11/11.2/11.2.4/S11.2.4_A1.4_T2.js27
-rw-r--r--js/src/tests/test262/ch11/11.2/11.2.4/S11.2.4_A1.4_T3.js22
-rw-r--r--js/src/tests/test262/ch11/11.2/11.2.4/S11.2.4_A1.4_T4.js34
-rw-r--r--js/src/tests/test262/ch11/11.2/11.2.4/browser.js0
-rw-r--r--js/src/tests/test262/ch11/11.2/11.2.4/shell.js0
-rw-r--r--js/src/tests/test262/ch11/11.2/browser.js0
-rw-r--r--js/src/tests/test262/ch11/11.2/shell.js0
-rw-r--r--js/src/tests/test262/ch11/11.3/11.3.1/11.3.1-2-1-s.js23
-rw-r--r--js/src/tests/test262/ch11/11.3/11.3.1/11.3.1-2-1gs.js16
-rw-r--r--js/src/tests/test262/ch11/11.3/11.3.1/11.3.1-2-2-s.js23
-rw-r--r--js/src/tests/test262/ch11/11.3/11.3.1/11.3.1-2-3-s.js19
-rw-r--r--js/src/tests/test262/ch11/11.3/11.3.1/S11.3.1_A1.1_T1.js14
-rw-r--r--js/src/tests/test262/ch11/11.3/11.3.1/S11.3.1_A1.1_T2.js14
-rw-r--r--js/src/tests/test262/ch11/11.3/11.3.1/S11.3.1_A1.1_T3.js14
-rw-r--r--js/src/tests/test262/ch11/11.3/11.3.1/S11.3.1_A1.1_T4.js14
-rw-r--r--js/src/tests/test262/ch11/11.3/11.3.1/S11.3.1_A1.2_T1.js40
-rw-r--r--js/src/tests/test262/ch11/11.3/11.3.1/S11.3.1_A2.1_T1.js46
-rw-r--r--js/src/tests/test262/ch11/11.3/11.3.1/S11.3.1_A2.1_T2.js21
-rw-r--r--js/src/tests/test262/ch11/11.3/11.3.1/S11.3.1_A2.1_T3.js24
-rw-r--r--js/src/tests/test262/ch11/11.3/11.3.1/S11.3.1_A2.2_T1.js110
-rw-r--r--js/src/tests/test262/ch11/11.3/11.3.1/S11.3.1_A3_T1.js24
-rw-r--r--js/src/tests/test262/ch11/11.3/11.3.1/S11.3.1_A3_T2.js24
-rw-r--r--js/src/tests/test262/ch11/11.3/11.3.1/S11.3.1_A3_T3.js31
-rw-r--r--js/src/tests/test262/ch11/11.3/11.3.1/S11.3.1_A3_T4.js24
-rw-r--r--js/src/tests/test262/ch11/11.3/11.3.1/S11.3.1_A3_T5.js24
-rw-r--r--js/src/tests/test262/ch11/11.3/11.3.1/S11.3.1_A4_T1.js24
-rw-r--r--js/src/tests/test262/ch11/11.3/11.3.1/S11.3.1_A4_T2.js24
-rw-r--r--js/src/tests/test262/ch11/11.3/11.3.1/S11.3.1_A4_T3.js31
-rw-r--r--js/src/tests/test262/ch11/11.3/11.3.1/S11.3.1_A4_T4.js24
-rw-r--r--js/src/tests/test262/ch11/11.3/11.3.1/S11.3.1_A4_T5.js24
-rw-r--r--js/src/tests/test262/ch11/11.3/11.3.1/browser.js0
-rw-r--r--js/src/tests/test262/ch11/11.3/11.3.1/shell.js0
-rw-r--r--js/src/tests/test262/ch11/11.3/11.3.2/11.3.2-2-1-s.js23
-rw-r--r--js/src/tests/test262/ch11/11.3/11.3.2/11.3.2-2-2-s.js23
-rw-r--r--js/src/tests/test262/ch11/11.3/11.3.2/11.3.2-2-3-s.js19
-rw-r--r--js/src/tests/test262/ch11/11.3/11.3.2/S11.3.2_A1.1_T1.js14
-rw-r--r--js/src/tests/test262/ch11/11.3/11.3.2/S11.3.2_A1.1_T2.js14
-rw-r--r--js/src/tests/test262/ch11/11.3/11.3.2/S11.3.2_A1.1_T3.js14
-rw-r--r--js/src/tests/test262/ch11/11.3/11.3.2/S11.3.2_A1.1_T4.js14
-rw-r--r--js/src/tests/test262/ch11/11.3/11.3.2/S11.3.2_A1.2_T1.js40
-rw-r--r--js/src/tests/test262/ch11/11.3/11.3.2/S11.3.2_A2.1_T1.js41
-rw-r--r--js/src/tests/test262/ch11/11.3/11.3.2/S11.3.2_A2.1_T2.js21
-rw-r--r--js/src/tests/test262/ch11/11.3/11.3.2/S11.3.2_A2.1_T3.js24
-rw-r--r--js/src/tests/test262/ch11/11.3/11.3.2/S11.3.2_A2.2_T1.js110
-rw-r--r--js/src/tests/test262/ch11/11.3/11.3.2/S11.3.2_A3_T1.js24
-rw-r--r--js/src/tests/test262/ch11/11.3/11.3.2/S11.3.2_A3_T2.js24
-rw-r--r--js/src/tests/test262/ch11/11.3/11.3.2/S11.3.2_A3_T3.js31
-rw-r--r--js/src/tests/test262/ch11/11.3/11.3.2/S11.3.2_A3_T4.js24
-rw-r--r--js/src/tests/test262/ch11/11.3/11.3.2/S11.3.2_A3_T5.js24
-rw-r--r--js/src/tests/test262/ch11/11.3/11.3.2/S11.3.2_A4_T1.js24
-rw-r--r--js/src/tests/test262/ch11/11.3/11.3.2/S11.3.2_A4_T2.js24
-rw-r--r--js/src/tests/test262/ch11/11.3/11.3.2/S11.3.2_A4_T3.js31
-rw-r--r--js/src/tests/test262/ch11/11.3/11.3.2/S11.3.2_A4_T4.js24
-rw-r--r--js/src/tests/test262/ch11/11.3/11.3.2/S11.3.2_A4_T5.js24
-rw-r--r--js/src/tests/test262/ch11/11.3/11.3.2/browser.js0
-rw-r--r--js/src/tests/test262/ch11/11.3/11.3.2/shell.js0
-rw-r--r--js/src/tests/test262/ch11/11.3/browser.js0
-rw-r--r--js/src/tests/test262/ch11/11.3/shell.js0
-rw-r--r--js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-0-1.js26
-rw-r--r--js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-2-1.js18
-rw-r--r--js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-2-2.js20
-rw-r--r--js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-2-3.js18
-rw-r--r--js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-2-4.js18
-rw-r--r--js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-2-5.js18
-rw-r--r--js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-2-6.js18
-rw-r--r--js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-3-1.js19
-rw-r--r--js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-3-2.js24
-rw-r--r--js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-3-3.js19
-rw-r--r--js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-3-a-1-s.js23
-rw-r--r--js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-4-a-1-s.js28
-rw-r--r--js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-4-a-2-s.js30
-rw-r--r--js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-4-a-3-s.js24
-rw-r--r--js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-4-a-4-s.js26
-rw-r--r--js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-4.a-1.js26
-rw-r--r--js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-4.a-10.js33
-rw-r--r--js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-4.a-11.js24
-rw-r--r--js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-4.a-12.js23
-rw-r--r--js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-4.a-13.js25
-rw-r--r--js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-4.a-14.js23
-rw-r--r--js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-4.a-15.js23
-rw-r--r--js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-4.a-16.js20
-rw-r--r--js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-4.a-17.js25
-rw-r--r--js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-4.a-2.js29
-rw-r--r--js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-4.a-3-s.js32
-rw-r--r--js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-4.a-3.js26
-rw-r--r--js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-4.a-4.js22
-rw-r--r--js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-4.a-5.js28
-rw-r--r--js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-4.a-6.js27
-rw-r--r--js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-4.a-7.js23
-rw-r--r--js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-4.a-8-s.js28
-rw-r--r--js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-4.a-8.js26
-rw-r--r--js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-4.a-9-s.js27
-rw-r--r--js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-4.a-9.js21
-rw-r--r--js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-5-1.js20
-rw-r--r--js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-5-2.js23
-rw-r--r--js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-5-3.js20
-rw-r--r--js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-5-a-1-s.js24
-rw-r--r--js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-5-a-10-s.js24
-rw-r--r--js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-5-a-11-s.js24
-rw-r--r--js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-5-a-12-s.js24
-rw-r--r--js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-5-a-13-s.js24
-rw-r--r--js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-5-a-14-s.js24
-rw-r--r--js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-5-a-15-s.js24
-rw-r--r--js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-5-a-16-s.js24
-rw-r--r--js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-5-a-17-s.js23
-rw-r--r--js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-5-a-18-s.js23
-rw-r--r--js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-5-a-19-s.js23
-rw-r--r--js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-5-a-2-s.js26
-rw-r--r--js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-5-a-20-s.js23
-rw-r--r--js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-5-a-21-s.js23
-rw-r--r--js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-5-a-22-s.js23
-rw-r--r--js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-5-a-23-s.js23
-rw-r--r--js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-5-a-24-s.js23
-rw-r--r--js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-5-a-25-s.js23
-rw-r--r--js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-5-a-26-s.js26
-rw-r--r--js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-5-a-27-s.js25
-rw-r--r--js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-5-a-28-s.js23
-rw-r--r--js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-5-a-3-s.js24
-rw-r--r--js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-5-a-4-s.js26
-rw-r--r--js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-5-a-5-s.js24
-rw-r--r--js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-5-a-5gs.js15
-rw-r--r--js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-5-a-6-s.js24
-rw-r--r--js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-5-a-7-s.js24
-rw-r--r--js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-5-a-8-s.js24
-rw-r--r--js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-5-a-9-s.js24
-rw-r--r--js/src/tests/test262/ch11/11.4/11.4.1/11.4.4-4.a-3-s.js32
-rw-r--r--js/src/tests/test262/ch11/11.4/11.4.1/S11.4.1_A1.js60
-rw-r--r--js/src/tests/test262/ch11/11.4/11.4.1/S11.4.1_A2.1.js21
-rw-r--r--js/src/tests/test262/ch11/11.4/11.4.1/S11.4.1_A2.2_T1.js20
-rw-r--r--js/src/tests/test262/ch11/11.4/11.4.1/S11.4.1_A2.2_T2.js23
-rw-r--r--js/src/tests/test262/ch11/11.4/11.4.1/S11.4.1_A3.1.js40
-rw-r--r--js/src/tests/test262/ch11/11.4/11.4.1/S11.4.1_A3.2.js31
-rw-r--r--js/src/tests/test262/ch11/11.4/11.4.1/S11.4.1_A3.3.js61
-rw-r--r--js/src/tests/test262/ch11/11.4/11.4.1/S11.4.1_A4.js19
-rw-r--r--js/src/tests/test262/ch11/11.4/11.4.1/S11.4.1_A5.js35
-rw-r--r--js/src/tests/test262/ch11/11.4/11.4.1/browser.js0
-rw-r--r--js/src/tests/test262/ch11/11.4/11.4.1/shell.js0
-rw-r--r--js/src/tests/test262/ch11/11.4/11.4.2/S11.4.2_A1.js60
-rw-r--r--js/src/tests/test262/ch11/11.4/11.4.2/S11.4.2_A2_T1.js27
-rw-r--r--js/src/tests/test262/ch11/11.4/11.4.2/S11.4.2_A2_T2.js14
-rw-r--r--js/src/tests/test262/ch11/11.4/11.4.2/S11.4.2_A4_T1.js22
-rw-r--r--js/src/tests/test262/ch11/11.4/11.4.2/S11.4.2_A4_T2.js22
-rw-r--r--js/src/tests/test262/ch11/11.4/11.4.2/S11.4.2_A4_T3.js28
-rw-r--r--js/src/tests/test262/ch11/11.4/11.4.2/S11.4.2_A4_T4.js22
-rw-r--r--js/src/tests/test262/ch11/11.4/11.4.2/S11.4.2_A4_T5.js22
-rw-r--r--js/src/tests/test262/ch11/11.4/11.4.2/S11.4.2_A4_T6.js20
-rw-r--r--js/src/tests/test262/ch11/11.4/11.4.2/browser.js0
-rw-r--r--js/src/tests/test262/ch11/11.4/11.4.2/shell.js0
-rw-r--r--js/src/tests/test262/ch11/11.4/11.4.3/S11.4.3_A1.js60
-rw-r--r--js/src/tests/test262/ch11/11.4/11.4.3/S11.4.3_A2_T1.js27
-rw-r--r--js/src/tests/test262/ch11/11.4/11.4.3/S11.4.3_A2_T2.js15
-rw-r--r--js/src/tests/test262/ch11/11.4/11.4.3/S11.4.3_A3.1.js20
-rw-r--r--js/src/tests/test262/ch11/11.4/11.4.3/S11.4.3_A3.2.js20
-rw-r--r--js/src/tests/test262/ch11/11.4/11.4.3/S11.4.3_A3.3.js25
-rw-r--r--js/src/tests/test262/ch11/11.4/11.4.3/S11.4.3_A3.4.js35
-rw-r--r--js/src/tests/test262/ch11/11.4/11.4.3/S11.4.3_A3.5.js40
-rw-r--r--js/src/tests/test262/ch11/11.4/11.4.3/S11.4.3_A3.6.js73
-rw-r--r--js/src/tests/test262/ch11/11.4/11.4.3/S11.4.3_A3.7.js55
-rw-r--r--js/src/tests/test262/ch11/11.4/11.4.3/browser.js0
-rw-r--r--js/src/tests/test262/ch11/11.4/11.4.3/shell.js0
-rw-r--r--js/src/tests/test262/ch11/11.4/11.4.4/11.4.4-2-1-s.js23
-rw-r--r--js/src/tests/test262/ch11/11.4/11.4.4/11.4.4-2-2-s.js23
-rw-r--r--js/src/tests/test262/ch11/11.4/11.4.4/11.4.4-2-3-s.js19
-rw-r--r--js/src/tests/test262/ch11/11.4/11.4.4/S11.4.4_A1.js60
-rw-r--r--js/src/tests/test262/ch11/11.4/11.4.4/S11.4.4_A2.1_T1.js41
-rw-r--r--js/src/tests/test262/ch11/11.4/11.4.4/S11.4.4_A2.1_T2.js21
-rw-r--r--js/src/tests/test262/ch11/11.4/11.4.4/S11.4.4_A2.1_T3.js25
-rw-r--r--js/src/tests/test262/ch11/11.4/11.4.4/S11.4.4_A2.2_T1.js104
-rw-r--r--js/src/tests/test262/ch11/11.4/11.4.4/S11.4.4_A3_T1.js24
-rw-r--r--js/src/tests/test262/ch11/11.4/11.4.4/S11.4.4_A3_T2.js24
-rw-r--r--js/src/tests/test262/ch11/11.4/11.4.4/S11.4.4_A3_T3.js31
-rw-r--r--js/src/tests/test262/ch11/11.4/11.4.4/S11.4.4_A3_T4.js24
-rw-r--r--js/src/tests/test262/ch11/11.4/11.4.4/S11.4.4_A3_T5.js24
-rw-r--r--js/src/tests/test262/ch11/11.4/11.4.4/S11.4.4_A4_T1.js22
-rw-r--r--js/src/tests/test262/ch11/11.4/11.4.4/S11.4.4_A4_T2.js22
-rw-r--r--js/src/tests/test262/ch11/11.4/11.4.4/S11.4.4_A4_T3.js28
-rw-r--r--js/src/tests/test262/ch11/11.4/11.4.4/S11.4.4_A4_T4.js22
-rw-r--r--js/src/tests/test262/ch11/11.4/11.4.4/S11.4.4_A4_T5.js22
-rw-r--r--js/src/tests/test262/ch11/11.4/11.4.4/browser.js0
-rw-r--r--js/src/tests/test262/ch11/11.4/11.4.4/shell.js0
-rw-r--r--js/src/tests/test262/ch11/11.4/11.4.5/11.4.5-2-1-s.js23
-rw-r--r--js/src/tests/test262/ch11/11.4/11.4.5/11.4.5-2-2-s.js23
-rw-r--r--js/src/tests/test262/ch11/11.4/11.4.5/11.4.5-2-2gs.js16
-rw-r--r--js/src/tests/test262/ch11/11.4/11.4.5/11.4.5-2-3-s.js19
-rw-r--r--js/src/tests/test262/ch11/11.4/11.4.5/S11.4.5_A1.js60
-rw-r--r--js/src/tests/test262/ch11/11.4/11.4.5/S11.4.5_A2.1_T1.js41
-rw-r--r--js/src/tests/test262/ch11/11.4/11.4.5/S11.4.5_A2.1_T2.js22
-rw-r--r--js/src/tests/test262/ch11/11.4/11.4.5/S11.4.5_A2.1_T3.js24
-rw-r--r--js/src/tests/test262/ch11/11.4/11.4.5/S11.4.5_A2.2_T1.js104
-rw-r--r--js/src/tests/test262/ch11/11.4/11.4.5/S11.4.5_A3_T1.js24
-rw-r--r--js/src/tests/test262/ch11/11.4/11.4.5/S11.4.5_A3_T2.js24
-rw-r--r--js/src/tests/test262/ch11/11.4/11.4.5/S11.4.5_A3_T3.js31
-rw-r--r--js/src/tests/test262/ch11/11.4/11.4.5/S11.4.5_A3_T4.js24
-rw-r--r--js/src/tests/test262/ch11/11.4/11.4.5/S11.4.5_A3_T5.js24
-rw-r--r--js/src/tests/test262/ch11/11.4/11.4.5/S11.4.5_A4_T1.js22
-rw-r--r--js/src/tests/test262/ch11/11.4/11.4.5/S11.4.5_A4_T2.js22
-rw-r--r--js/src/tests/test262/ch11/11.4/11.4.5/S11.4.5_A4_T3.js28
-rw-r--r--js/src/tests/test262/ch11/11.4/11.4.5/S11.4.5_A4_T4.js22
-rw-r--r--js/src/tests/test262/ch11/11.4/11.4.5/S11.4.5_A4_T5.js22
-rw-r--r--js/src/tests/test262/ch11/11.4/11.4.5/browser.js0
-rw-r--r--js/src/tests/test262/ch11/11.4/11.4.5/shell.js0
-rw-r--r--js/src/tests/test262/ch11/11.4/11.4.6/11.4.6-2-1.js15
-rw-r--r--js/src/tests/test262/ch11/11.4/11.4.6/S11.4.6_A1.js60
-rw-r--r--js/src/tests/test262/ch11/11.4/11.4.6/S11.4.6_A2.1_T1.js39
-rw-r--r--js/src/tests/test262/ch11/11.4/11.4.6/S11.4.6_A2.1_T2.js21
-rw-r--r--js/src/tests/test262/ch11/11.4/11.4.6/S11.4.6_A2.2_T1.js79
-rw-r--r--js/src/tests/test262/ch11/11.4/11.4.6/S11.4.6_A3_T1.js20
-rw-r--r--js/src/tests/test262/ch11/11.4/11.4.6/S11.4.6_A3_T2.js20
-rw-r--r--js/src/tests/test262/ch11/11.4/11.4.6/S11.4.6_A3_T3.js25
-rw-r--r--js/src/tests/test262/ch11/11.4/11.4.6/S11.4.6_A3_T4.js20
-rw-r--r--js/src/tests/test262/ch11/11.4/11.4.6/S11.4.6_A3_T5.js20
-rw-r--r--js/src/tests/test262/ch11/11.4/11.4.6/browser.js0
-rw-r--r--js/src/tests/test262/ch11/11.4/11.4.6/shell.js0
-rw-r--r--js/src/tests/test262/ch11/11.4/11.4.7/11.4.7-4-1.js15
-rw-r--r--js/src/tests/test262/ch11/11.4/11.4.7/S11.4.7_A1.js60
-rw-r--r--js/src/tests/test262/ch11/11.4/11.4.7/S11.4.7_A2.1_T1.js39
-rw-r--r--js/src/tests/test262/ch11/11.4/11.4.7/S11.4.7_A2.1_T2.js22
-rw-r--r--js/src/tests/test262/ch11/11.4/11.4.7/S11.4.7_A2.2_T1.js79
-rw-r--r--js/src/tests/test262/ch11/11.4/11.4.7/S11.4.7_A3_T1.js20
-rw-r--r--js/src/tests/test262/ch11/11.4/11.4.7/S11.4.7_A3_T2.js20
-rw-r--r--js/src/tests/test262/ch11/11.4/11.4.7/S11.4.7_A3_T3.js25
-rw-r--r--js/src/tests/test262/ch11/11.4/11.4.7/S11.4.7_A3_T4.js20
-rw-r--r--js/src/tests/test262/ch11/11.4/11.4.7/S11.4.7_A3_T5.js20
-rw-r--r--js/src/tests/test262/ch11/11.4/11.4.7/S11.4.7_A4.1.js21
-rw-r--r--js/src/tests/test262/ch11/11.4/11.4.7/S11.4.7_A4.2.js33
-rw-r--r--js/src/tests/test262/ch11/11.4/11.4.7/browser.js0
-rw-r--r--js/src/tests/test262/ch11/11.4/11.4.7/shell.js0
-rw-r--r--js/src/tests/test262/ch11/11.4/11.4.8/S11.4.8_A1.js60
-rw-r--r--js/src/tests/test262/ch11/11.4/11.4.8/S11.4.8_A2.1_T1.js39
-rw-r--r--js/src/tests/test262/ch11/11.4/11.4.8/S11.4.8_A2.1_T2.js22
-rw-r--r--js/src/tests/test262/ch11/11.4/11.4.8/S11.4.8_A2.2_T1.js79
-rw-r--r--js/src/tests/test262/ch11/11.4/11.4.8/S11.4.8_A3_T1.js25
-rw-r--r--js/src/tests/test262/ch11/11.4/11.4.8/S11.4.8_A3_T2.js45
-rw-r--r--js/src/tests/test262/ch11/11.4/11.4.8/S11.4.8_A3_T3.js35
-rw-r--r--js/src/tests/test262/ch11/11.4/11.4.8/S11.4.8_A3_T4.js20
-rw-r--r--js/src/tests/test262/ch11/11.4/11.4.8/S11.4.8_A3_T5.js20
-rw-r--r--js/src/tests/test262/ch11/11.4/11.4.8/browser.js0
-rw-r--r--js/src/tests/test262/ch11/11.4/11.4.8/shell.js0
-rw-r--r--js/src/tests/test262/ch11/11.4/11.4.9/S11.4.9_A1.js60
-rw-r--r--js/src/tests/test262/ch11/11.4/11.4.9/S11.4.9_A2.1_T1.js39
-rw-r--r--js/src/tests/test262/ch11/11.4/11.4.9/S11.4.9_A2.1_T2.js22
-rw-r--r--js/src/tests/test262/ch11/11.4/11.4.9/S11.4.9_A2.2_T1.js58
-rw-r--r--js/src/tests/test262/ch11/11.4/11.4.9/S11.4.9_A3_T1.js25
-rw-r--r--js/src/tests/test262/ch11/11.4/11.4.9/S11.4.9_A3_T2.js45
-rw-r--r--js/src/tests/test262/ch11/11.4/11.4.9/S11.4.9_A3_T3.js35
-rw-r--r--js/src/tests/test262/ch11/11.4/11.4.9/S11.4.9_A3_T4.js20
-rw-r--r--js/src/tests/test262/ch11/11.4/11.4.9/S11.4.9_A3_T5.js20
-rw-r--r--js/src/tests/test262/ch11/11.4/11.4.9/browser.js0
-rw-r--r--js/src/tests/test262/ch11/11.4/11.4.9/shell.js0
-rw-r--r--js/src/tests/test262/ch11/11.4/browser.js0
-rw-r--r--js/src/tests/test262/ch11/11.4/shell.js0
-rw-r--r--js/src/tests/test262/ch11/11.5/11.5.1/S11.5.1_A1.js60
-rw-r--r--js/src/tests/test262/ch11/11.5/11.5.1/S11.5.1_A2.1_T1.js43
-rw-r--r--js/src/tests/test262/ch11/11.5/11.5.1/S11.5.1_A2.1_T2.js22
-rw-r--r--js/src/tests/test262/ch11/11.5/11.5.1/S11.5.1_A2.1_T3.js22
-rw-r--r--js/src/tests/test262/ch11/11.5/11.5.1/S11.5.1_A2.2_T1.js71
-rw-r--r--js/src/tests/test262/ch11/11.5/11.5.1/S11.5.1_A2.3_T1.js26
-rw-r--r--js/src/tests/test262/ch11/11.5/11.5.1/S11.5.1_A2.4_T1.js23
-rw-r--r--js/src/tests/test262/ch11/11.5/11.5.1/S11.5.1_A2.4_T2.js26
-rw-r--r--js/src/tests/test262/ch11/11.5/11.5.1/S11.5.1_A2.4_T3.js27
-rw-r--r--js/src/tests/test262/ch11/11.5/11.5.1/S11.5.1_A3_T1.1.js30
-rw-r--r--js/src/tests/test262/ch11/11.5/11.5.1/S11.5.1_A3_T1.2.js31
-rw-r--r--js/src/tests/test262/ch11/11.5/11.5.1/S11.5.1_A3_T1.3.js40
-rw-r--r--js/src/tests/test262/ch11/11.5/11.5.1/S11.5.1_A3_T1.4.js30
-rw-r--r--js/src/tests/test262/ch11/11.5/11.5.1/S11.5.1_A3_T1.5.js30
-rw-r--r--js/src/tests/test262/ch11/11.5/11.5.1/S11.5.1_A3_T2.1.js50
-rw-r--r--js/src/tests/test262/ch11/11.5/11.5.1/S11.5.1_A3_T2.2.js60
-rw-r--r--js/src/tests/test262/ch11/11.5/11.5.1/S11.5.1_A3_T2.3.js30
-rw-r--r--js/src/tests/test262/ch11/11.5/11.5.1/S11.5.1_A3_T2.4.js30
-rw-r--r--js/src/tests/test262/ch11/11.5/11.5.1/S11.5.1_A3_T2.5.js50
-rw-r--r--js/src/tests/test262/ch11/11.5/11.5.1/S11.5.1_A3_T2.6.js30
-rw-r--r--js/src/tests/test262/ch11/11.5/11.5.1/S11.5.1_A3_T2.7.js30
-rw-r--r--js/src/tests/test262/ch11/11.5/11.5.1/S11.5.1_A3_T2.8.js30
-rw-r--r--js/src/tests/test262/ch11/11.5/11.5.1/S11.5.1_A3_T2.9.js30
-rw-r--r--js/src/tests/test262/ch11/11.5/11.5.1/S11.5.1_A4_T1.1.js50
-rw-r--r--js/src/tests/test262/ch11/11.5/11.5.1/S11.5.1_A4_T1.2.js50
-rw-r--r--js/src/tests/test262/ch11/11.5/11.5.1/S11.5.1_A4_T2.js66
-rw-r--r--js/src/tests/test262/ch11/11.5/11.5.1/S11.5.1_A4_T3.js50
-rw-r--r--js/src/tests/test262/ch11/11.5/11.5.1/S11.5.1_A4_T4.js30
-rw-r--r--js/src/tests/test262/ch11/11.5/11.5.1/S11.5.1_A4_T5.js50
-rw-r--r--js/src/tests/test262/ch11/11.5/11.5.1/S11.5.1_A4_T6.js30
-rw-r--r--js/src/tests/test262/ch11/11.5/11.5.1/S11.5.1_A4_T7.js58
-rw-r--r--js/src/tests/test262/ch11/11.5/11.5.1/S11.5.1_A4_T8.js20
-rw-r--r--js/src/tests/test262/ch11/11.5/11.5.1/browser.js0
-rw-r--r--js/src/tests/test262/ch11/11.5/11.5.1/shell.js0
-rw-r--r--js/src/tests/test262/ch11/11.5/11.5.2/S11.5.2_A1.js60
-rw-r--r--js/src/tests/test262/ch11/11.5/11.5.2/S11.5.2_A2.1_T1.js44
-rw-r--r--js/src/tests/test262/ch11/11.5/11.5.2/S11.5.2_A2.1_T2.js22
-rw-r--r--js/src/tests/test262/ch11/11.5/11.5.2/S11.5.2_A2.1_T3.js21
-rw-r--r--js/src/tests/test262/ch11/11.5/11.5.2/S11.5.2_A2.2_T1.js71
-rw-r--r--js/src/tests/test262/ch11/11.5/11.5.2/S11.5.2_A2.3_T1.js26
-rw-r--r--js/src/tests/test262/ch11/11.5/11.5.2/S11.5.2_A2.4_T1.js23
-rw-r--r--js/src/tests/test262/ch11/11.5/11.5.2/S11.5.2_A2.4_T2.js26
-rw-r--r--js/src/tests/test262/ch11/11.5/11.5.2/S11.5.2_A2.4_T3.js27
-rw-r--r--js/src/tests/test262/ch11/11.5/11.5.2/S11.5.2_A3_T1.1.js30
-rw-r--r--js/src/tests/test262/ch11/11.5/11.5.2/S11.5.2_A3_T1.2.js31
-rw-r--r--js/src/tests/test262/ch11/11.5/11.5.2/S11.5.2_A3_T1.3.js40
-rw-r--r--js/src/tests/test262/ch11/11.5/11.5.2/S11.5.2_A3_T1.4.js30
-rw-r--r--js/src/tests/test262/ch11/11.5/11.5.2/S11.5.2_A3_T1.5.js30
-rw-r--r--js/src/tests/test262/ch11/11.5/11.5.2/S11.5.2_A3_T2.1.js50
-rw-r--r--js/src/tests/test262/ch11/11.5/11.5.2/S11.5.2_A3_T2.2.js60
-rw-r--r--js/src/tests/test262/ch11/11.5/11.5.2/S11.5.2_A3_T2.3.js30
-rw-r--r--js/src/tests/test262/ch11/11.5/11.5.2/S11.5.2_A3_T2.4.js30
-rw-r--r--js/src/tests/test262/ch11/11.5/11.5.2/S11.5.2_A3_T2.5.js50
-rw-r--r--js/src/tests/test262/ch11/11.5/11.5.2/S11.5.2_A3_T2.6.js30
-rw-r--r--js/src/tests/test262/ch11/11.5/11.5.2/S11.5.2_A3_T2.7.js30
-rw-r--r--js/src/tests/test262/ch11/11.5/11.5.2/S11.5.2_A3_T2.8.js30
-rw-r--r--js/src/tests/test262/ch11/11.5/11.5.2/S11.5.2_A3_T2.9.js30
-rw-r--r--js/src/tests/test262/ch11/11.5/11.5.2/S11.5.2_A4_T1.1.js50
-rw-r--r--js/src/tests/test262/ch11/11.5/11.5.2/S11.5.2_A4_T1.2.js50
-rw-r--r--js/src/tests/test262/ch11/11.5/11.5.2/S11.5.2_A4_T10.js59
-rw-r--r--js/src/tests/test262/ch11/11.5/11.5.2/S11.5.2_A4_T2.js30
-rw-r--r--js/src/tests/test262/ch11/11.5/11.5.2/S11.5.2_A4_T3.js30
-rw-r--r--js/src/tests/test262/ch11/11.5/11.5.2/S11.5.2_A4_T4.js30
-rw-r--r--js/src/tests/test262/ch11/11.5/11.5.2/S11.5.2_A4_T5.js40
-rw-r--r--js/src/tests/test262/ch11/11.5/11.5.2/S11.5.2_A4_T6.js46
-rw-r--r--js/src/tests/test262/ch11/11.5/11.5.2/S11.5.2_A4_T7.js30
-rw-r--r--js/src/tests/test262/ch11/11.5/11.5.2/S11.5.2_A4_T8.js64
-rw-r--r--js/src/tests/test262/ch11/11.5/11.5.2/S11.5.2_A4_T9.js35
-rw-r--r--js/src/tests/test262/ch11/11.5/11.5.2/browser.js0
-rw-r--r--js/src/tests/test262/ch11/11.5/11.5.2/shell.js0
-rw-r--r--js/src/tests/test262/ch11/11.5/11.5.3/S11.5.3_A1.js60
-rw-r--r--js/src/tests/test262/ch11/11.5/11.5.3/S11.5.3_A2.1_T1.js43
-rw-r--r--js/src/tests/test262/ch11/11.5/11.5.3/S11.5.3_A2.1_T2.js22
-rw-r--r--js/src/tests/test262/ch11/11.5/11.5.3/S11.5.3_A2.1_T3.js21
-rw-r--r--js/src/tests/test262/ch11/11.5/11.5.3/S11.5.3_A2.2_T1.js71
-rw-r--r--js/src/tests/test262/ch11/11.5/11.5.3/S11.5.3_A2.3_T1.js26
-rw-r--r--js/src/tests/test262/ch11/11.5/11.5.3/S11.5.3_A2.4_T1.js23
-rw-r--r--js/src/tests/test262/ch11/11.5/11.5.3/S11.5.3_A2.4_T2.js26
-rw-r--r--js/src/tests/test262/ch11/11.5/11.5.3/S11.5.3_A2.4_T3.js27
-rw-r--r--js/src/tests/test262/ch11/11.5/11.5.3/S11.5.3_A3_T1.1.js30
-rw-r--r--js/src/tests/test262/ch11/11.5/11.5.3/S11.5.3_A3_T1.2.js31
-rw-r--r--js/src/tests/test262/ch11/11.5/11.5.3/S11.5.3_A3_T1.3.js40
-rw-r--r--js/src/tests/test262/ch11/11.5/11.5.3/S11.5.3_A3_T1.4.js30
-rw-r--r--js/src/tests/test262/ch11/11.5/11.5.3/S11.5.3_A3_T1.5.js30
-rw-r--r--js/src/tests/test262/ch11/11.5/11.5.3/S11.5.3_A3_T2.1.js50
-rw-r--r--js/src/tests/test262/ch11/11.5/11.5.3/S11.5.3_A3_T2.2.js60
-rw-r--r--js/src/tests/test262/ch11/11.5/11.5.3/S11.5.3_A3_T2.3.js30
-rw-r--r--js/src/tests/test262/ch11/11.5/11.5.3/S11.5.3_A3_T2.4.js30
-rw-r--r--js/src/tests/test262/ch11/11.5/11.5.3/S11.5.3_A3_T2.5.js50
-rw-r--r--js/src/tests/test262/ch11/11.5/11.5.3/S11.5.3_A3_T2.6.js30
-rw-r--r--js/src/tests/test262/ch11/11.5/11.5.3/S11.5.3_A3_T2.7.js30
-rw-r--r--js/src/tests/test262/ch11/11.5/11.5.3/S11.5.3_A3_T2.8.js30
-rw-r--r--js/src/tests/test262/ch11/11.5/11.5.3/S11.5.3_A3_T2.9.js30
-rw-r--r--js/src/tests/test262/ch11/11.5/11.5.3/S11.5.3_A4_T1.1.js50
-rw-r--r--js/src/tests/test262/ch11/11.5/11.5.3/S11.5.3_A4_T1.2.js50
-rw-r--r--js/src/tests/test262/ch11/11.5/11.5.3/S11.5.3_A4_T2.js66
-rw-r--r--js/src/tests/test262/ch11/11.5/11.5.3/S11.5.3_A4_T3.js70
-rw-r--r--js/src/tests/test262/ch11/11.5/11.5.3/S11.5.3_A4_T4.js90
-rw-r--r--js/src/tests/test262/ch11/11.5/11.5.3/S11.5.3_A4_T5.js104
-rw-r--r--js/src/tests/test262/ch11/11.5/11.5.3/S11.5.3_A4_T6.js82
-rw-r--r--js/src/tests/test262/ch11/11.5/11.5.3/S11.5.3_A4_T7.js74
-rw-r--r--js/src/tests/test262/ch11/11.5/11.5.3/browser.js0
-rw-r--r--js/src/tests/test262/ch11/11.5/11.5.3/shell.js0
-rw-r--r--js/src/tests/test262/ch11/11.5/browser.js0
-rw-r--r--js/src/tests/test262/ch11/11.5/shell.js0
-rw-r--r--js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A1.js60
-rw-r--r--js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A2.1_T1.js43
-rw-r--r--js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A2.1_T2.js22
-rw-r--r--js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A2.1_T3.js22
-rw-r--r--js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A2.2_T1.js71
-rw-r--r--js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A2.2_T2.js35
-rw-r--r--js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A2.2_T3.js46
-rw-r--r--js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A2.3_T1.js26
-rw-r--r--js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A2.4_T1.js23
-rw-r--r--js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A2.4_T2.js26
-rw-r--r--js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A2.4_T3.js27
-rw-r--r--js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A3.1_T1.1.js30
-rw-r--r--js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A3.1_T1.2.js31
-rw-r--r--js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A3.1_T1.3.js30
-rw-r--r--js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A3.1_T2.1.js50
-rw-r--r--js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A3.1_T2.2.js30
-rw-r--r--js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A3.1_T2.3.js30
-rw-r--r--js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A3.1_T2.4.js30
-rw-r--r--js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A3.1_T2.5.js30
-rw-r--r--js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A3.2_T1.1.js40
-rw-r--r--js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A3.2_T1.2.js32
-rw-r--r--js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A3.2_T2.1.js60
-rw-r--r--js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A3.2_T2.2.js50
-rw-r--r--js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A3.2_T2.3.js30
-rw-r--r--js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A3.2_T2.4.js30
-rw-r--r--js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A4_T1.js41
-rw-r--r--js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A4_T2.js23
-rw-r--r--js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A4_T3.js23
-rw-r--r--js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A4_T4.js53
-rw-r--r--js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A4_T5.js46
-rw-r--r--js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A4_T6.js50
-rw-r--r--js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A4_T7.js37
-rw-r--r--js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A4_T8.js30
-rw-r--r--js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A4_T9.js30
-rw-r--r--js/src/tests/test262/ch11/11.6/11.6.1/browser.js0
-rw-r--r--js/src/tests/test262/ch11/11.6/11.6.1/shell.js0
-rw-r--r--js/src/tests/test262/ch11/11.6/11.6.2/S11.6.2_A1.js60
-rw-r--r--js/src/tests/test262/ch11/11.6/11.6.2/S11.6.2_A2.1_T1.js43
-rw-r--r--js/src/tests/test262/ch11/11.6/11.6.2/S11.6.2_A2.1_T2.js21
-rw-r--r--js/src/tests/test262/ch11/11.6/11.6.2/S11.6.2_A2.1_T3.js21
-rw-r--r--js/src/tests/test262/ch11/11.6/11.6.2/S11.6.2_A2.2_T1.js71
-rw-r--r--js/src/tests/test262/ch11/11.6/11.6.2/S11.6.2_A2.3_T1.js26
-rw-r--r--js/src/tests/test262/ch11/11.6/11.6.2/S11.6.2_A2.4_T1.js23
-rw-r--r--js/src/tests/test262/ch11/11.6/11.6.2/S11.6.2_A2.4_T2.js26
-rw-r--r--js/src/tests/test262/ch11/11.6/11.6.2/S11.6.2_A2.4_T3.js27
-rw-r--r--js/src/tests/test262/ch11/11.6/11.6.2/S11.6.2_A3_T1.1.js30
-rw-r--r--js/src/tests/test262/ch11/11.6/11.6.2/S11.6.2_A3_T1.2.js31
-rw-r--r--js/src/tests/test262/ch11/11.6/11.6.2/S11.6.2_A3_T1.3.js40
-rw-r--r--js/src/tests/test262/ch11/11.6/11.6.2/S11.6.2_A3_T1.4.js30
-rw-r--r--js/src/tests/test262/ch11/11.6/11.6.2/S11.6.2_A3_T1.5.js30
-rw-r--r--js/src/tests/test262/ch11/11.6/11.6.2/S11.6.2_A3_T2.1.js50
-rw-r--r--js/src/tests/test262/ch11/11.6/11.6.2/S11.6.2_A3_T2.2.js60
-rw-r--r--js/src/tests/test262/ch11/11.6/11.6.2/S11.6.2_A3_T2.3.js30
-rw-r--r--js/src/tests/test262/ch11/11.6/11.6.2/S11.6.2_A3_T2.4.js30
-rw-r--r--js/src/tests/test262/ch11/11.6/11.6.2/S11.6.2_A3_T2.5.js50
-rw-r--r--js/src/tests/test262/ch11/11.6/11.6.2/S11.6.2_A3_T2.6.js30
-rw-r--r--js/src/tests/test262/ch11/11.6/11.6.2/S11.6.2_A3_T2.7.js30
-rw-r--r--js/src/tests/test262/ch11/11.6/11.6.2/S11.6.2_A3_T2.8.js30
-rw-r--r--js/src/tests/test262/ch11/11.6/11.6.2/S11.6.2_A3_T2.9.js30
-rw-r--r--js/src/tests/test262/ch11/11.6/11.6.2/S11.6.2_A4_T1.js40
-rw-r--r--js/src/tests/test262/ch11/11.6/11.6.2/S11.6.2_A4_T2.js23
-rw-r--r--js/src/tests/test262/ch11/11.6/11.6.2/S11.6.2_A4_T3.js23
-rw-r--r--js/src/tests/test262/ch11/11.6/11.6.2/S11.6.2_A4_T4.js53
-rw-r--r--js/src/tests/test262/ch11/11.6/11.6.2/S11.6.2_A4_T5.js46
-rw-r--r--js/src/tests/test262/ch11/11.6/11.6.2/S11.6.2_A4_T6.js50
-rw-r--r--js/src/tests/test262/ch11/11.6/11.6.2/S11.6.2_A4_T7.js37
-rw-r--r--js/src/tests/test262/ch11/11.6/11.6.2/S11.6.2_A4_T8.js30
-rw-r--r--js/src/tests/test262/ch11/11.6/11.6.2/browser.js0
-rw-r--r--js/src/tests/test262/ch11/11.6/11.6.2/shell.js0
-rw-r--r--js/src/tests/test262/ch11/11.6/browser.js0
-rw-r--r--js/src/tests/test262/ch11/11.6/shell.js0
-rw-r--r--js/src/tests/test262/ch11/11.7/11.7.1/S11.7.1_A1.js60
-rw-r--r--js/src/tests/test262/ch11/11.7/11.7.1/S11.7.1_A2.1_T1.js43
-rw-r--r--js/src/tests/test262/ch11/11.7/11.7.1/S11.7.1_A2.1_T2.js21
-rw-r--r--js/src/tests/test262/ch11/11.7/11.7.1/S11.7.1_A2.1_T3.js21
-rw-r--r--js/src/tests/test262/ch11/11.7/11.7.1/S11.7.1_A2.2_T1.js71
-rw-r--r--js/src/tests/test262/ch11/11.7/11.7.1/S11.7.1_A2.3_T1.js26
-rw-r--r--js/src/tests/test262/ch11/11.7/11.7.1/S11.7.1_A2.4_T1.js23
-rw-r--r--js/src/tests/test262/ch11/11.7/11.7.1/S11.7.1_A2.4_T2.js26
-rw-r--r--js/src/tests/test262/ch11/11.7/11.7.1/S11.7.1_A2.4_T3.js27
-rw-r--r--js/src/tests/test262/ch11/11.7/11.7.1/S11.7.1_A3_T1.1.js30
-rw-r--r--js/src/tests/test262/ch11/11.7/11.7.1/S11.7.1_A3_T1.2.js31
-rw-r--r--js/src/tests/test262/ch11/11.7/11.7.1/S11.7.1_A3_T1.3.js40
-rw-r--r--js/src/tests/test262/ch11/11.7/11.7.1/S11.7.1_A3_T1.4.js30
-rw-r--r--js/src/tests/test262/ch11/11.7/11.7.1/S11.7.1_A3_T1.5.js31
-rw-r--r--js/src/tests/test262/ch11/11.7/11.7.1/S11.7.1_A3_T2.1.js50
-rw-r--r--js/src/tests/test262/ch11/11.7/11.7.1/S11.7.1_A3_T2.2.js60
-rw-r--r--js/src/tests/test262/ch11/11.7/11.7.1/S11.7.1_A3_T2.3.js30
-rw-r--r--js/src/tests/test262/ch11/11.7/11.7.1/S11.7.1_A3_T2.4.js30
-rw-r--r--js/src/tests/test262/ch11/11.7/11.7.1/S11.7.1_A3_T2.5.js50
-rw-r--r--js/src/tests/test262/ch11/11.7/11.7.1/S11.7.1_A3_T2.6.js30
-rw-r--r--js/src/tests/test262/ch11/11.7/11.7.1/S11.7.1_A3_T2.7.js30
-rw-r--r--js/src/tests/test262/ch11/11.7/11.7.1/S11.7.1_A3_T2.8.js30
-rw-r--r--js/src/tests/test262/ch11/11.7/11.7.1/S11.7.1_A3_T2.9.js30
-rw-r--r--js/src/tests/test262/ch11/11.7/11.7.1/S11.7.1_A4_T1.js2571
-rw-r--r--js/src/tests/test262/ch11/11.7/11.7.1/S11.7.1_A4_T2.js2572
-rw-r--r--js/src/tests/test262/ch11/11.7/11.7.1/S11.7.1_A4_T3.js2571
-rw-r--r--js/src/tests/test262/ch11/11.7/11.7.1/S11.7.1_A4_T4.js2571
-rw-r--r--js/src/tests/test262/ch11/11.7/11.7.1/S11.7.1_A5.1_T1.js60
-rw-r--r--js/src/tests/test262/ch11/11.7/11.7.1/S11.7.1_A5.2_T1.js330
-rw-r--r--js/src/tests/test262/ch11/11.7/11.7.1/browser.js0
-rw-r--r--js/src/tests/test262/ch11/11.7/11.7.1/shell.js0
-rw-r--r--js/src/tests/test262/ch11/11.7/11.7.2/S11.7.2_A1.js60
-rw-r--r--js/src/tests/test262/ch11/11.7/11.7.2/S11.7.2_A2.1_T1.js43
-rw-r--r--js/src/tests/test262/ch11/11.7/11.7.2/S11.7.2_A2.1_T2.js22
-rw-r--r--js/src/tests/test262/ch11/11.7/11.7.2/S11.7.2_A2.1_T3.js22
-rw-r--r--js/src/tests/test262/ch11/11.7/11.7.2/S11.7.2_A2.2_T1.js71
-rw-r--r--js/src/tests/test262/ch11/11.7/11.7.2/S11.7.2_A2.3_T1.js26
-rw-r--r--js/src/tests/test262/ch11/11.7/11.7.2/S11.7.2_A2.4_T1.js23
-rw-r--r--js/src/tests/test262/ch11/11.7/11.7.2/S11.7.2_A2.4_T2.js26
-rw-r--r--js/src/tests/test262/ch11/11.7/11.7.2/S11.7.2_A2.4_T3.js27
-rw-r--r--js/src/tests/test262/ch11/11.7/11.7.2/S11.7.2_A3_T1.1.js30
-rw-r--r--js/src/tests/test262/ch11/11.7/11.7.2/S11.7.2_A3_T1.2.js31
-rw-r--r--js/src/tests/test262/ch11/11.7/11.7.2/S11.7.2_A3_T1.3.js40
-rw-r--r--js/src/tests/test262/ch11/11.7/11.7.2/S11.7.2_A3_T1.4.js30
-rw-r--r--js/src/tests/test262/ch11/11.7/11.7.2/S11.7.2_A3_T1.5.js31
-rw-r--r--js/src/tests/test262/ch11/11.7/11.7.2/S11.7.2_A3_T2.1.js50
-rw-r--r--js/src/tests/test262/ch11/11.7/11.7.2/S11.7.2_A3_T2.2.js60
-rw-r--r--js/src/tests/test262/ch11/11.7/11.7.2/S11.7.2_A3_T2.3.js30
-rw-r--r--js/src/tests/test262/ch11/11.7/11.7.2/S11.7.2_A3_T2.4.js30
-rw-r--r--js/src/tests/test262/ch11/11.7/11.7.2/S11.7.2_A3_T2.5.js50
-rw-r--r--js/src/tests/test262/ch11/11.7/11.7.2/S11.7.2_A3_T2.6.js30
-rw-r--r--js/src/tests/test262/ch11/11.7/11.7.2/S11.7.2_A3_T2.7.js30
-rw-r--r--js/src/tests/test262/ch11/11.7/11.7.2/S11.7.2_A3_T2.8.js30
-rw-r--r--js/src/tests/test262/ch11/11.7/11.7.2/S11.7.2_A3_T2.9.js30
-rw-r--r--js/src/tests/test262/ch11/11.7/11.7.2/S11.7.2_A4_T1.js2571
-rw-r--r--js/src/tests/test262/ch11/11.7/11.7.2/S11.7.2_A4_T2.js2571
-rw-r--r--js/src/tests/test262/ch11/11.7/11.7.2/S11.7.2_A4_T3.js2571
-rw-r--r--js/src/tests/test262/ch11/11.7/11.7.2/S11.7.2_A4_T4.js2566
-rw-r--r--js/src/tests/test262/ch11/11.7/11.7.2/S11.7.2_A5.1_T1.js60
-rw-r--r--js/src/tests/test262/ch11/11.7/11.7.2/S11.7.2_A5.2_T1.js330
-rw-r--r--js/src/tests/test262/ch11/11.7/11.7.2/browser.js0
-rw-r--r--js/src/tests/test262/ch11/11.7/11.7.2/shell.js0
-rw-r--r--js/src/tests/test262/ch11/11.7/11.7.3/S11.7.3_A1.js60
-rw-r--r--js/src/tests/test262/ch11/11.7/11.7.3/S11.7.3_A2.1_T1.js43
-rw-r--r--js/src/tests/test262/ch11/11.7/11.7.3/S11.7.3_A2.1_T2.js22
-rw-r--r--js/src/tests/test262/ch11/11.7/11.7.3/S11.7.3_A2.1_T3.js22
-rw-r--r--js/src/tests/test262/ch11/11.7/11.7.3/S11.7.3_A2.2_T1.js71
-rw-r--r--js/src/tests/test262/ch11/11.7/11.7.3/S11.7.3_A2.3_T1.js26
-rw-r--r--js/src/tests/test262/ch11/11.7/11.7.3/S11.7.3_A2.4_T1.js23
-rw-r--r--js/src/tests/test262/ch11/11.7/11.7.3/S11.7.3_A2.4_T2.js26
-rw-r--r--js/src/tests/test262/ch11/11.7/11.7.3/S11.7.3_A2.4_T3.js27
-rw-r--r--js/src/tests/test262/ch11/11.7/11.7.3/S11.7.3_A3_T1.1.js30
-rw-r--r--js/src/tests/test262/ch11/11.7/11.7.3/S11.7.3_A3_T1.2.js31
-rw-r--r--js/src/tests/test262/ch11/11.7/11.7.3/S11.7.3_A3_T1.3.js40
-rw-r--r--js/src/tests/test262/ch11/11.7/11.7.3/S11.7.3_A3_T1.4.js30
-rw-r--r--js/src/tests/test262/ch11/11.7/11.7.3/S11.7.3_A3_T1.5.js30
-rw-r--r--js/src/tests/test262/ch11/11.7/11.7.3/S11.7.3_A3_T2.1.js50
-rw-r--r--js/src/tests/test262/ch11/11.7/11.7.3/S11.7.3_A3_T2.2.js60
-rw-r--r--js/src/tests/test262/ch11/11.7/11.7.3/S11.7.3_A3_T2.3.js30
-rw-r--r--js/src/tests/test262/ch11/11.7/11.7.3/S11.7.3_A3_T2.4.js30
-rw-r--r--js/src/tests/test262/ch11/11.7/11.7.3/S11.7.3_A3_T2.5.js50
-rw-r--r--js/src/tests/test262/ch11/11.7/11.7.3/S11.7.3_A3_T2.6.js30
-rw-r--r--js/src/tests/test262/ch11/11.7/11.7.3/S11.7.3_A3_T2.7.js30
-rw-r--r--js/src/tests/test262/ch11/11.7/11.7.3/S11.7.3_A3_T2.8.js30
-rw-r--r--js/src/tests/test262/ch11/11.7/11.7.3/S11.7.3_A3_T2.9.js30
-rw-r--r--js/src/tests/test262/ch11/11.7/11.7.3/S11.7.3_A4_T1.js2571
-rw-r--r--js/src/tests/test262/ch11/11.7/11.7.3/S11.7.3_A4_T2.js2571
-rw-r--r--js/src/tests/test262/ch11/11.7/11.7.3/S11.7.3_A4_T3.js2651
-rw-r--r--js/src/tests/test262/ch11/11.7/11.7.3/S11.7.3_A4_T4.js2651
-rw-r--r--js/src/tests/test262/ch11/11.7/11.7.3/S11.7.3_A5.1_T1.js60
-rw-r--r--js/src/tests/test262/ch11/11.7/11.7.3/S11.7.3_A5.2_T1.js331
-rw-r--r--js/src/tests/test262/ch11/11.7/11.7.3/browser.js0
-rw-r--r--js/src/tests/test262/ch11/11.7/11.7.3/shell.js0
-rw-r--r--js/src/tests/test262/ch11/11.7/browser.js0
-rw-r--r--js/src/tests/test262/ch11/11.7/shell.js0
-rw-r--r--js/src/tests/test262/ch11/11.8/11.8.1/S11.8.1_A1.js60
-rw-r--r--js/src/tests/test262/ch11/11.8/11.8.1/S11.8.1_A2.1_T1.js43
-rw-r--r--js/src/tests/test262/ch11/11.8/11.8.1/S11.8.1_A2.1_T2.js21
-rw-r--r--js/src/tests/test262/ch11/11.8/11.8.1/S11.8.1_A2.1_T3.js22
-rw-r--r--js/src/tests/test262/ch11/11.8/11.8.1/S11.8.1_A2.2_T1.js71
-rw-r--r--js/src/tests/test262/ch11/11.8/11.8.1/S11.8.1_A2.3_T1.js26
-rw-r--r--js/src/tests/test262/ch11/11.8/11.8.1/S11.8.1_A2.4_T1.js23
-rw-r--r--js/src/tests/test262/ch11/11.8/11.8.1/S11.8.1_A2.4_T2.js26
-rw-r--r--js/src/tests/test262/ch11/11.8/11.8.1/S11.8.1_A2.4_T3.js27
-rw-r--r--js/src/tests/test262/ch11/11.8/11.8.1/S11.8.1_A3.1_T1.1.js30
-rw-r--r--js/src/tests/test262/ch11/11.8/11.8.1/S11.8.1_A3.1_T1.2.js31
-rw-r--r--js/src/tests/test262/ch11/11.8/11.8.1/S11.8.1_A3.1_T1.3.js30
-rw-r--r--js/src/tests/test262/ch11/11.8/11.8.1/S11.8.1_A3.1_T2.1.js50
-rw-r--r--js/src/tests/test262/ch11/11.8/11.8.1/S11.8.1_A3.1_T2.2.js60
-rw-r--r--js/src/tests/test262/ch11/11.8/11.8.1/S11.8.1_A3.1_T2.3.js30
-rw-r--r--js/src/tests/test262/ch11/11.8/11.8.1/S11.8.1_A3.1_T2.4.js30
-rw-r--r--js/src/tests/test262/ch11/11.8/11.8.1/S11.8.1_A3.1_T2.5.js50
-rw-r--r--js/src/tests/test262/ch11/11.8/11.8.1/S11.8.1_A3.1_T2.6.js30
-rw-r--r--js/src/tests/test262/ch11/11.8/11.8.1/S11.8.1_A3.1_T2.7.js30
-rw-r--r--js/src/tests/test262/ch11/11.8/11.8.1/S11.8.1_A3.1_T2.8.js30
-rw-r--r--js/src/tests/test262/ch11/11.8/11.8.1/S11.8.1_A3.1_T2.9.js30
-rw-r--r--js/src/tests/test262/ch11/11.8/11.8.1/S11.8.1_A3.2_T1.1.js40
-rw-r--r--js/src/tests/test262/ch11/11.8/11.8.1/S11.8.1_A3.2_T1.2.js30
-rw-r--r--js/src/tests/test262/ch11/11.8/11.8.1/S11.8.1_A4.1.js51
-rw-r--r--js/src/tests/test262/ch11/11.8/11.8.1/S11.8.1_A4.10.js42
-rw-r--r--js/src/tests/test262/ch11/11.8/11.8.1/S11.8.1_A4.11.js53
-rw-r--r--js/src/tests/test262/ch11/11.8/11.8.1/S11.8.1_A4.12_T1.js45
-rw-r--r--js/src/tests/test262/ch11/11.8/11.8.1/S11.8.1_A4.12_T2.js45
-rw-r--r--js/src/tests/test262/ch11/11.8/11.8.1/S11.8.1_A4.2.js51
-rw-r--r--js/src/tests/test262/ch11/11.8/11.8.1/S11.8.1_A4.3.js47
-rw-r--r--js/src/tests/test262/ch11/11.8/11.8.1/S11.8.1_A4.4.js31
-rw-r--r--js/src/tests/test262/ch11/11.8/11.8.1/S11.8.1_A4.5.js41
-rw-r--r--js/src/tests/test262/ch11/11.8/11.8.1/S11.8.1_A4.6.js41
-rw-r--r--js/src/tests/test262/ch11/11.8/11.8.1/S11.8.1_A4.7.js41
-rw-r--r--js/src/tests/test262/ch11/11.8/11.8.1/S11.8.1_A4.8.js41
-rw-r--r--js/src/tests/test262/ch11/11.8/11.8.1/S11.8.1_A4.9.js52
-rw-r--r--js/src/tests/test262/ch11/11.8/11.8.1/browser.js0
-rw-r--r--js/src/tests/test262/ch11/11.8/11.8.1/shell.js0
-rw-r--r--js/src/tests/test262/ch11/11.8/11.8.2/11.8.2-1.js31
-rw-r--r--js/src/tests/test262/ch11/11.8/11.8.2/11.8.2-2.js31
-rw-r--r--js/src/tests/test262/ch11/11.8/11.8.2/11.8.2-3.js31
-rw-r--r--js/src/tests/test262/ch11/11.8/11.8.2/11.8.2-4.js31
-rw-r--r--js/src/tests/test262/ch11/11.8/11.8.2/S11.8.2_A1.js60
-rw-r--r--js/src/tests/test262/ch11/11.8/11.8.2/S11.8.2_A2.1_T1.js43
-rw-r--r--js/src/tests/test262/ch11/11.8/11.8.2/S11.8.2_A2.1_T2.js22
-rw-r--r--js/src/tests/test262/ch11/11.8/11.8.2/S11.8.2_A2.1_T3.js22
-rw-r--r--js/src/tests/test262/ch11/11.8/11.8.2/S11.8.2_A2.2_T1.js71
-rw-r--r--js/src/tests/test262/ch11/11.8/11.8.2/S11.8.2_A2.3_T1.js26
-rw-r--r--js/src/tests/test262/ch11/11.8/11.8.2/S11.8.2_A2.4_T1.js23
-rw-r--r--js/src/tests/test262/ch11/11.8/11.8.2/S11.8.2_A2.4_T2.js26
-rw-r--r--js/src/tests/test262/ch11/11.8/11.8.2/S11.8.2_A2.4_T3.js27
-rw-r--r--js/src/tests/test262/ch11/11.8/11.8.2/S11.8.2_A3.1_T1.1.js30
-rw-r--r--js/src/tests/test262/ch11/11.8/11.8.2/S11.8.2_A3.1_T1.2.js31
-rw-r--r--js/src/tests/test262/ch11/11.8/11.8.2/S11.8.2_A3.1_T1.3.js30
-rw-r--r--js/src/tests/test262/ch11/11.8/11.8.2/S11.8.2_A3.1_T2.1.js50
-rw-r--r--js/src/tests/test262/ch11/11.8/11.8.2/S11.8.2_A3.1_T2.2.js60
-rw-r--r--js/src/tests/test262/ch11/11.8/11.8.2/S11.8.2_A3.1_T2.3.js30
-rw-r--r--js/src/tests/test262/ch11/11.8/11.8.2/S11.8.2_A3.1_T2.4.js30
-rw-r--r--js/src/tests/test262/ch11/11.8/11.8.2/S11.8.2_A3.1_T2.5.js50
-rw-r--r--js/src/tests/test262/ch11/11.8/11.8.2/S11.8.2_A3.1_T2.6.js30
-rw-r--r--js/src/tests/test262/ch11/11.8/11.8.2/S11.8.2_A3.1_T2.7.js30
-rw-r--r--js/src/tests/test262/ch11/11.8/11.8.2/S11.8.2_A3.1_T2.8.js30
-rw-r--r--js/src/tests/test262/ch11/11.8/11.8.2/S11.8.2_A3.1_T2.9.js30
-rw-r--r--js/src/tests/test262/ch11/11.8/11.8.2/S11.8.2_A3.2_T1.1.js40
-rw-r--r--js/src/tests/test262/ch11/11.8/11.8.2/S11.8.2_A3.2_T1.2.js30
-rw-r--r--js/src/tests/test262/ch11/11.8/11.8.2/S11.8.2_A4.1.js51
-rw-r--r--js/src/tests/test262/ch11/11.8/11.8.2/S11.8.2_A4.10.js41
-rw-r--r--js/src/tests/test262/ch11/11.8/11.8.2/S11.8.2_A4.11.js52
-rw-r--r--js/src/tests/test262/ch11/11.8/11.8.2/S11.8.2_A4.12_T1.js45
-rw-r--r--js/src/tests/test262/ch11/11.8/11.8.2/S11.8.2_A4.12_T2.js45
-rw-r--r--js/src/tests/test262/ch11/11.8/11.8.2/S11.8.2_A4.2.js51
-rw-r--r--js/src/tests/test262/ch11/11.8/11.8.2/S11.8.2_A4.3.js47
-rw-r--r--js/src/tests/test262/ch11/11.8/11.8.2/S11.8.2_A4.4.js31
-rw-r--r--js/src/tests/test262/ch11/11.8/11.8.2/S11.8.2_A4.5.js41
-rw-r--r--js/src/tests/test262/ch11/11.8/11.8.2/S11.8.2_A4.6.js41
-rw-r--r--js/src/tests/test262/ch11/11.8/11.8.2/S11.8.2_A4.7.js41
-rw-r--r--js/src/tests/test262/ch11/11.8/11.8.2/S11.8.2_A4.8.js41
-rw-r--r--js/src/tests/test262/ch11/11.8/11.8.2/S11.8.2_A4.9.js52
-rw-r--r--js/src/tests/test262/ch11/11.8/11.8.2/browser.js0
-rw-r--r--js/src/tests/test262/ch11/11.8/11.8.2/shell.js0
-rw-r--r--js/src/tests/test262/ch11/11.8/11.8.3/11.8.3-1.js31
-rw-r--r--js/src/tests/test262/ch11/11.8/11.8.3/11.8.3-2.js31
-rw-r--r--js/src/tests/test262/ch11/11.8/11.8.3/11.8.3-3.js31
-rw-r--r--js/src/tests/test262/ch11/11.8/11.8.3/11.8.3-4.js31
-rw-r--r--js/src/tests/test262/ch11/11.8/11.8.3/11.8.3-5.js31
-rw-r--r--js/src/tests/test262/ch11/11.8/11.8.3/S11.8.3_A1.js60
-rw-r--r--js/src/tests/test262/ch11/11.8/11.8.3/S11.8.3_A2.1_T1.js43
-rw-r--r--js/src/tests/test262/ch11/11.8/11.8.3/S11.8.3_A2.1_T2.js21
-rw-r--r--js/src/tests/test262/ch11/11.8/11.8.3/S11.8.3_A2.1_T3.js22
-rw-r--r--js/src/tests/test262/ch11/11.8/11.8.3/S11.8.3_A2.2_T1.js71
-rw-r--r--js/src/tests/test262/ch11/11.8/11.8.3/S11.8.3_A2.3_T1.js26
-rw-r--r--js/src/tests/test262/ch11/11.8/11.8.3/S11.8.3_A2.4_T1.js23
-rw-r--r--js/src/tests/test262/ch11/11.8/11.8.3/S11.8.3_A2.4_T2.js26
-rw-r--r--js/src/tests/test262/ch11/11.8/11.8.3/S11.8.3_A2.4_T3.js27
-rw-r--r--js/src/tests/test262/ch11/11.8/11.8.3/S11.8.3_A3.1_T1.1.js30
-rw-r--r--js/src/tests/test262/ch11/11.8/11.8.3/S11.8.3_A3.1_T1.2.js31
-rw-r--r--js/src/tests/test262/ch11/11.8/11.8.3/S11.8.3_A3.1_T1.3.js30
-rw-r--r--js/src/tests/test262/ch11/11.8/11.8.3/S11.8.3_A3.1_T2.1.js50
-rw-r--r--js/src/tests/test262/ch11/11.8/11.8.3/S11.8.3_A3.1_T2.2.js60
-rw-r--r--js/src/tests/test262/ch11/11.8/11.8.3/S11.8.3_A3.1_T2.3.js30
-rw-r--r--js/src/tests/test262/ch11/11.8/11.8.3/S11.8.3_A3.1_T2.4.js30
-rw-r--r--js/src/tests/test262/ch11/11.8/11.8.3/S11.8.3_A3.1_T2.5.js50
-rw-r--r--js/src/tests/test262/ch11/11.8/11.8.3/S11.8.3_A3.1_T2.6.js30
-rw-r--r--js/src/tests/test262/ch11/11.8/11.8.3/S11.8.3_A3.1_T2.7.js30
-rw-r--r--js/src/tests/test262/ch11/11.8/11.8.3/S11.8.3_A3.1_T2.8.js30
-rw-r--r--js/src/tests/test262/ch11/11.8/11.8.3/S11.8.3_A3.1_T2.9.js30
-rw-r--r--js/src/tests/test262/ch11/11.8/11.8.3/S11.8.3_A3.2_T1.1.js40
-rw-r--r--js/src/tests/test262/ch11/11.8/11.8.3/S11.8.3_A3.2_T1.2.js30
-rw-r--r--js/src/tests/test262/ch11/11.8/11.8.3/S11.8.3_A4.1.js51
-rw-r--r--js/src/tests/test262/ch11/11.8/11.8.3/S11.8.3_A4.10.js42
-rw-r--r--js/src/tests/test262/ch11/11.8/11.8.3/S11.8.3_A4.11.js53
-rw-r--r--js/src/tests/test262/ch11/11.8/11.8.3/S11.8.3_A4.12_T1.js45
-rw-r--r--js/src/tests/test262/ch11/11.8/11.8.3/S11.8.3_A4.12_T2.js45
-rw-r--r--js/src/tests/test262/ch11/11.8/11.8.3/S11.8.3_A4.2.js51
-rw-r--r--js/src/tests/test262/ch11/11.8/11.8.3/S11.8.3_A4.3.js47
-rw-r--r--js/src/tests/test262/ch11/11.8/11.8.3/S11.8.3_A4.4.js31
-rw-r--r--js/src/tests/test262/ch11/11.8/11.8.3/S11.8.3_A4.5.js41
-rw-r--r--js/src/tests/test262/ch11/11.8/11.8.3/S11.8.3_A4.6.js41
-rw-r--r--js/src/tests/test262/ch11/11.8/11.8.3/S11.8.3_A4.7.js41
-rw-r--r--js/src/tests/test262/ch11/11.8/11.8.3/S11.8.3_A4.8.js41
-rw-r--r--js/src/tests/test262/ch11/11.8/11.8.3/S11.8.3_A4.9.js52
-rw-r--r--js/src/tests/test262/ch11/11.8/11.8.3/browser.js0
-rw-r--r--js/src/tests/test262/ch11/11.8/11.8.3/shell.js0
-rw-r--r--js/src/tests/test262/ch11/11.8/11.8.4/S11.8.4_A1.js60
-rw-r--r--js/src/tests/test262/ch11/11.8/11.8.4/S11.8.4_A2.1_T1.js43
-rw-r--r--js/src/tests/test262/ch11/11.8/11.8.4/S11.8.4_A2.1_T2.js22
-rw-r--r--js/src/tests/test262/ch11/11.8/11.8.4/S11.8.4_A2.1_T3.js22
-rw-r--r--js/src/tests/test262/ch11/11.8/11.8.4/S11.8.4_A2.2_T1.js71
-rw-r--r--js/src/tests/test262/ch11/11.8/11.8.4/S11.8.4_A2.3_T1.js26
-rw-r--r--js/src/tests/test262/ch11/11.8/11.8.4/S11.8.4_A2.4_T1.js23
-rw-r--r--js/src/tests/test262/ch11/11.8/11.8.4/S11.8.4_A2.4_T2.js26
-rw-r--r--js/src/tests/test262/ch11/11.8/11.8.4/S11.8.4_A2.4_T3.js27
-rw-r--r--js/src/tests/test262/ch11/11.8/11.8.4/S11.8.4_A3.1_T1.1.js30
-rw-r--r--js/src/tests/test262/ch11/11.8/11.8.4/S11.8.4_A3.1_T1.2.js31
-rw-r--r--js/src/tests/test262/ch11/11.8/11.8.4/S11.8.4_A3.1_T1.3.js30
-rw-r--r--js/src/tests/test262/ch11/11.8/11.8.4/S11.8.4_A3.1_T2.1.js50
-rw-r--r--js/src/tests/test262/ch11/11.8/11.8.4/S11.8.4_A3.1_T2.2.js60
-rw-r--r--js/src/tests/test262/ch11/11.8/11.8.4/S11.8.4_A3.1_T2.3.js30
-rw-r--r--js/src/tests/test262/ch11/11.8/11.8.4/S11.8.4_A3.1_T2.4.js30
-rw-r--r--js/src/tests/test262/ch11/11.8/11.8.4/S11.8.4_A3.1_T2.5.js50
-rw-r--r--js/src/tests/test262/ch11/11.8/11.8.4/S11.8.4_A3.1_T2.6.js30
-rw-r--r--js/src/tests/test262/ch11/11.8/11.8.4/S11.8.4_A3.1_T2.7.js30
-rw-r--r--js/src/tests/test262/ch11/11.8/11.8.4/S11.8.4_A3.1_T2.8.js30
-rw-r--r--js/src/tests/test262/ch11/11.8/11.8.4/S11.8.4_A3.1_T2.9.js30
-rw-r--r--js/src/tests/test262/ch11/11.8/11.8.4/S11.8.4_A3.2_T1.1.js40
-rw-r--r--js/src/tests/test262/ch11/11.8/11.8.4/S11.8.4_A3.2_T1.2.js30
-rw-r--r--js/src/tests/test262/ch11/11.8/11.8.4/S11.8.4_A4.1.js51
-rw-r--r--js/src/tests/test262/ch11/11.8/11.8.4/S11.8.4_A4.10.js41
-rw-r--r--js/src/tests/test262/ch11/11.8/11.8.4/S11.8.4_A4.11.js52
-rw-r--r--js/src/tests/test262/ch11/11.8/11.8.4/S11.8.4_A4.12_T1.js45
-rw-r--r--js/src/tests/test262/ch11/11.8/11.8.4/S11.8.4_A4.12_T2.js45
-rw-r--r--js/src/tests/test262/ch11/11.8/11.8.4/S11.8.4_A4.2.js51
-rw-r--r--js/src/tests/test262/ch11/11.8/11.8.4/S11.8.4_A4.3.js47
-rw-r--r--js/src/tests/test262/ch11/11.8/11.8.4/S11.8.4_A4.4.js31
-rw-r--r--js/src/tests/test262/ch11/11.8/11.8.4/S11.8.4_A4.5.js41
-rw-r--r--js/src/tests/test262/ch11/11.8/11.8.4/S11.8.4_A4.6.js41
-rw-r--r--js/src/tests/test262/ch11/11.8/11.8.4/S11.8.4_A4.7.js41
-rw-r--r--js/src/tests/test262/ch11/11.8/11.8.4/S11.8.4_A4.8.js41
-rw-r--r--js/src/tests/test262/ch11/11.8/11.8.4/S11.8.4_A4.9.js52
-rw-r--r--js/src/tests/test262/ch11/11.8/11.8.4/browser.js0
-rw-r--r--js/src/tests/test262/ch11/11.8/11.8.4/shell.js0
-rw-r--r--js/src/tests/test262/ch11/11.8/11.8.6/S11.8.6_A1.js60
-rw-r--r--js/src/tests/test262/ch11/11.8/11.8.6/S11.8.6_A2.1_T1.js35
-rw-r--r--js/src/tests/test262/ch11/11.8/11.8.6/S11.8.6_A2.1_T2.js21
-rw-r--r--js/src/tests/test262/ch11/11.8/11.8.6/S11.8.6_A2.1_T3.js21
-rw-r--r--js/src/tests/test262/ch11/11.8/11.8.6/S11.8.6_A2.4_T1.js23
-rw-r--r--js/src/tests/test262/ch11/11.8/11.8.6/S11.8.6_A2.4_T2.js26
-rw-r--r--js/src/tests/test262/ch11/11.8/11.8.6/S11.8.6_A2.4_T3.js27
-rw-r--r--js/src/tests/test262/ch11/11.8/11.8.6/S11.8.6_A3.js65
-rw-r--r--js/src/tests/test262/ch11/11.8/11.8.6/S11.8.6_A4_T1.js26
-rw-r--r--js/src/tests/test262/ch11/11.8/11.8.6/S11.8.6_A4_T2.js26
-rw-r--r--js/src/tests/test262/ch11/11.8/11.8.6/S11.8.6_A4_T3.js25
-rw-r--r--js/src/tests/test262/ch11/11.8/11.8.6/S11.8.6_A5_T1.js47
-rw-r--r--js/src/tests/test262/ch11/11.8/11.8.6/S11.8.6_A5_T2.js36
-rw-r--r--js/src/tests/test262/ch11/11.8/11.8.6/S11.8.6_A6_T1.js21
-rw-r--r--js/src/tests/test262/ch11/11.8/11.8.6/S11.8.6_A6_T2.js21
-rw-r--r--js/src/tests/test262/ch11/11.8/11.8.6/S11.8.6_A6_T3.js27
-rw-r--r--js/src/tests/test262/ch11/11.8/11.8.6/S11.8.6_A6_T4.js40
-rw-r--r--js/src/tests/test262/ch11/11.8/11.8.6/S11.8.6_A7_T1.js22
-rw-r--r--js/src/tests/test262/ch11/11.8/11.8.6/S11.8.6_A7_T2.js22
-rw-r--r--js/src/tests/test262/ch11/11.8/11.8.6/S11.8.6_A7_T3.js23
-rw-r--r--js/src/tests/test262/ch11/11.8/11.8.6/browser.js0
-rw-r--r--js/src/tests/test262/ch11/11.8/11.8.6/shell.js0
-rw-r--r--js/src/tests/test262/ch11/11.8/11.8.7/S11.8.7_A1.js60
-rw-r--r--js/src/tests/test262/ch11/11.8/11.8.7/S11.8.7_A2.1_T1.js35
-rw-r--r--js/src/tests/test262/ch11/11.8/11.8.7/S11.8.7_A2.1_T2.js21
-rw-r--r--js/src/tests/test262/ch11/11.8/11.8.7/S11.8.7_A2.1_T3.js21
-rw-r--r--js/src/tests/test262/ch11/11.8/11.8.7/S11.8.7_A2.4_T1.js23
-rw-r--r--js/src/tests/test262/ch11/11.8/11.8.7/S11.8.7_A2.4_T2.js26
-rw-r--r--js/src/tests/test262/ch11/11.8/11.8.7/S11.8.7_A2.4_T3.js27
-rw-r--r--js/src/tests/test262/ch11/11.8/11.8.7/S11.8.7_A3.js65
-rw-r--r--js/src/tests/test262/ch11/11.8/11.8.7/S11.8.7_A4.js38
-rw-r--r--js/src/tests/test262/ch11/11.8/11.8.7/browser.js0
-rw-r--r--js/src/tests/test262/ch11/11.8/11.8.7/shell.js0
-rw-r--r--js/src/tests/test262/ch11/11.8/browser.js0
-rw-r--r--js/src/tests/test262/ch11/11.8/shell.js0
-rw-r--r--js/src/tests/test262/ch11/11.9/11.9.1/S11.9.1_A1.js60
-rw-r--r--js/src/tests/test262/ch11/11.9/11.9.1/S11.9.1_A2.1_T1.js43
-rw-r--r--js/src/tests/test262/ch11/11.9/11.9.1/S11.9.1_A2.1_T2.js22
-rw-r--r--js/src/tests/test262/ch11/11.9/11.9.1/S11.9.1_A2.1_T3.js22
-rw-r--r--js/src/tests/test262/ch11/11.9/11.9.1/S11.9.1_A2.4_T1.js23
-rw-r--r--js/src/tests/test262/ch11/11.9/11.9.1/S11.9.1_A2.4_T2.js26
-rw-r--r--js/src/tests/test262/ch11/11.9/11.9.1/S11.9.1_A2.4_T3.js27
-rw-r--r--js/src/tests/test262/ch11/11.9/11.9.1/S11.9.1_A3.1.js30
-rw-r--r--js/src/tests/test262/ch11/11.9/11.9.1/S11.9.1_A3.2.js21
-rw-r--r--js/src/tests/test262/ch11/11.9/11.9.1/S11.9.1_A3.3.js21
-rw-r--r--js/src/tests/test262/ch11/11.9/11.9.1/S11.9.1_A4.1_T1.js56
-rw-r--r--js/src/tests/test262/ch11/11.9/11.9.1/S11.9.1_A4.1_T2.js55
-rw-r--r--js/src/tests/test262/ch11/11.9/11.9.1/S11.9.1_A4.2.js20
-rw-r--r--js/src/tests/test262/ch11/11.9/11.9.1/S11.9.1_A4.3.js36
-rw-r--r--js/src/tests/test262/ch11/11.9/11.9.1/S11.9.1_A5.1.js46
-rw-r--r--js/src/tests/test262/ch11/11.9/11.9.1/S11.9.1_A5.2.js36
-rw-r--r--js/src/tests/test262/ch11/11.9/11.9.1/S11.9.1_A5.3.js32
-rw-r--r--js/src/tests/test262/ch11/11.9/11.9.1/S11.9.1_A6.1.js40
-rw-r--r--js/src/tests/test262/ch11/11.9/11.9.1/S11.9.1_A6.2_T1.js50
-rw-r--r--js/src/tests/test262/ch11/11.9/11.9.1/S11.9.1_A6.2_T2.js50
-rw-r--r--js/src/tests/test262/ch11/11.9/11.9.1/S11.9.1_A7.1.js53
-rw-r--r--js/src/tests/test262/ch11/11.9/11.9.1/S11.9.1_A7.2.js26
-rw-r--r--js/src/tests/test262/ch11/11.9/11.9.1/S11.9.1_A7.3.js26
-rw-r--r--js/src/tests/test262/ch11/11.9/11.9.1/S11.9.1_A7.4.js26
-rw-r--r--js/src/tests/test262/ch11/11.9/11.9.1/S11.9.1_A7.5.js26
-rw-r--r--js/src/tests/test262/ch11/11.9/11.9.1/S11.9.1_A7.6.js26
-rw-r--r--js/src/tests/test262/ch11/11.9/11.9.1/S11.9.1_A7.7.js26
-rw-r--r--js/src/tests/test262/ch11/11.9/11.9.1/S11.9.1_A7.8.js76
-rw-r--r--js/src/tests/test262/ch11/11.9/11.9.1/S11.9.1_A7.9.js76
-rw-r--r--js/src/tests/test262/ch11/11.9/11.9.1/browser.js0
-rw-r--r--js/src/tests/test262/ch11/11.9/11.9.1/shell.js0
-rw-r--r--js/src/tests/test262/ch11/11.9/11.9.2/S11.9.2_A1.js60
-rw-r--r--js/src/tests/test262/ch11/11.9/11.9.2/S11.9.2_A2.1_T1.js43
-rw-r--r--js/src/tests/test262/ch11/11.9/11.9.2/S11.9.2_A2.1_T2.js22
-rw-r--r--js/src/tests/test262/ch11/11.9/11.9.2/S11.9.2_A2.1_T3.js22
-rw-r--r--js/src/tests/test262/ch11/11.9/11.9.2/S11.9.2_A2.4_T1.js23
-rw-r--r--js/src/tests/test262/ch11/11.9/11.9.2/S11.9.2_A2.4_T2.js26
-rw-r--r--js/src/tests/test262/ch11/11.9/11.9.2/S11.9.2_A2.4_T3.js27
-rw-r--r--js/src/tests/test262/ch11/11.9/11.9.2/S11.9.2_A3.1.js30
-rw-r--r--js/src/tests/test262/ch11/11.9/11.9.2/S11.9.2_A3.2.js32
-rw-r--r--js/src/tests/test262/ch11/11.9/11.9.2/S11.9.2_A3.3.js31
-rw-r--r--js/src/tests/test262/ch11/11.9/11.9.2/S11.9.2_A4.1_T1.js56
-rw-r--r--js/src/tests/test262/ch11/11.9/11.9.2/S11.9.2_A4.1_T2.js55
-rw-r--r--js/src/tests/test262/ch11/11.9/11.9.2/S11.9.2_A4.2.js20
-rw-r--r--js/src/tests/test262/ch11/11.9/11.9.2/S11.9.2_A4.3.js36
-rw-r--r--js/src/tests/test262/ch11/11.9/11.9.2/S11.9.2_A5.1.js46
-rw-r--r--js/src/tests/test262/ch11/11.9/11.9.2/S11.9.2_A5.2.js36
-rw-r--r--js/src/tests/test262/ch11/11.9/11.9.2/S11.9.2_A5.3.js32
-rw-r--r--js/src/tests/test262/ch11/11.9/11.9.2/S11.9.2_A6.1.js40
-rw-r--r--js/src/tests/test262/ch11/11.9/11.9.2/S11.9.2_A6.2_T1.js50
-rw-r--r--js/src/tests/test262/ch11/11.9/11.9.2/S11.9.2_A6.2_T2.js50
-rw-r--r--js/src/tests/test262/ch11/11.9/11.9.2/S11.9.2_A7.1.js53
-rw-r--r--js/src/tests/test262/ch11/11.9/11.9.2/S11.9.2_A7.2.js26
-rw-r--r--js/src/tests/test262/ch11/11.9/11.9.2/S11.9.2_A7.3.js26
-rw-r--r--js/src/tests/test262/ch11/11.9/11.9.2/S11.9.2_A7.4.js26
-rw-r--r--js/src/tests/test262/ch11/11.9/11.9.2/S11.9.2_A7.5.js26
-rw-r--r--js/src/tests/test262/ch11/11.9/11.9.2/S11.9.2_A7.6.js26
-rw-r--r--js/src/tests/test262/ch11/11.9/11.9.2/S11.9.2_A7.7.js26
-rw-r--r--js/src/tests/test262/ch11/11.9/11.9.2/S11.9.2_A7.8.js76
-rw-r--r--js/src/tests/test262/ch11/11.9/11.9.2/S11.9.2_A7.9.js76
-rw-r--r--js/src/tests/test262/ch11/11.9/11.9.2/browser.js0
-rw-r--r--js/src/tests/test262/ch11/11.9/11.9.2/shell.js0
-rw-r--r--js/src/tests/test262/ch11/11.9/11.9.4/S11.9.4_A1.js60
-rw-r--r--js/src/tests/test262/ch11/11.9/11.9.4/S11.9.4_A2.1_T1.js44
-rw-r--r--js/src/tests/test262/ch11/11.9/11.9.4/S11.9.4_A2.1_T2.js22
-rw-r--r--js/src/tests/test262/ch11/11.9/11.9.4/S11.9.4_A2.1_T3.js22
-rw-r--r--js/src/tests/test262/ch11/11.9/11.9.4/S11.9.4_A2.4_T1.js23
-rw-r--r--js/src/tests/test262/ch11/11.9/11.9.4/S11.9.4_A2.4_T2.js26
-rw-r--r--js/src/tests/test262/ch11/11.9/11.9.4/S11.9.4_A2.4_T3.js27
-rw-r--r--js/src/tests/test262/ch11/11.9/11.9.4/S11.9.4_A3.js31
-rw-r--r--js/src/tests/test262/ch11/11.9/11.9.4/S11.9.4_A4.1_T1.js56
-rw-r--r--js/src/tests/test262/ch11/11.9/11.9.4/S11.9.4_A4.1_T2.js55
-rw-r--r--js/src/tests/test262/ch11/11.9/11.9.4/S11.9.4_A4.2.js20
-rw-r--r--js/src/tests/test262/ch11/11.9/11.9.4/S11.9.4_A4.3.js56
-rw-r--r--js/src/tests/test262/ch11/11.9/11.9.4/S11.9.4_A5.js36
-rw-r--r--js/src/tests/test262/ch11/11.9/11.9.4/S11.9.4_A6.1.js25
-rw-r--r--js/src/tests/test262/ch11/11.9/11.9.4/S11.9.4_A6.2.js15
-rw-r--r--js/src/tests/test262/ch11/11.9/11.9.4/S11.9.4_A7.js53
-rw-r--r--js/src/tests/test262/ch11/11.9/11.9.4/S11.9.4_A8_T1.js65
-rw-r--r--js/src/tests/test262/ch11/11.9/11.9.4/S11.9.4_A8_T2.js65
-rw-r--r--js/src/tests/test262/ch11/11.9/11.9.4/S11.9.4_A8_T3.js65
-rw-r--r--js/src/tests/test262/ch11/11.9/11.9.4/S11.9.4_A8_T4.js80
-rw-r--r--js/src/tests/test262/ch11/11.9/11.9.4/S11.9.4_A8_T5.js28
-rw-r--r--js/src/tests/test262/ch11/11.9/11.9.4/browser.js0
-rw-r--r--js/src/tests/test262/ch11/11.9/11.9.4/shell.js0
-rw-r--r--js/src/tests/test262/ch11/11.9/11.9.5/S11.9.5_A1.js60
-rw-r--r--js/src/tests/test262/ch11/11.9/11.9.5/S11.9.5_A2.1_T1.js44
-rw-r--r--js/src/tests/test262/ch11/11.9/11.9.5/S11.9.5_A2.1_T2.js22
-rw-r--r--js/src/tests/test262/ch11/11.9/11.9.5/S11.9.5_A2.1_T3.js22
-rw-r--r--js/src/tests/test262/ch11/11.9/11.9.5/S11.9.5_A2.4_T1.js23
-rw-r--r--js/src/tests/test262/ch11/11.9/11.9.5/S11.9.5_A2.4_T2.js26
-rw-r--r--js/src/tests/test262/ch11/11.9/11.9.5/S11.9.5_A2.4_T3.js27
-rw-r--r--js/src/tests/test262/ch11/11.9/11.9.5/S11.9.5_A3.js31
-rw-r--r--js/src/tests/test262/ch11/11.9/11.9.5/S11.9.5_A4.1_T1.js56
-rw-r--r--js/src/tests/test262/ch11/11.9/11.9.5/S11.9.5_A4.1_T2.js55
-rw-r--r--js/src/tests/test262/ch11/11.9/11.9.5/S11.9.5_A4.2.js20
-rw-r--r--js/src/tests/test262/ch11/11.9/11.9.5/S11.9.5_A4.3.js56
-rw-r--r--js/src/tests/test262/ch11/11.9/11.9.5/S11.9.5_A5.js36
-rw-r--r--js/src/tests/test262/ch11/11.9/11.9.5/S11.9.5_A6.1.js25
-rw-r--r--js/src/tests/test262/ch11/11.9/11.9.5/S11.9.5_A6.2.js15
-rw-r--r--js/src/tests/test262/ch11/11.9/11.9.5/S11.9.5_A7.js55
-rw-r--r--js/src/tests/test262/ch11/11.9/11.9.5/S11.9.5_A8_T1.js65
-rw-r--r--js/src/tests/test262/ch11/11.9/11.9.5/S11.9.5_A8_T2.js65
-rw-r--r--js/src/tests/test262/ch11/11.9/11.9.5/S11.9.5_A8_T3.js66
-rw-r--r--js/src/tests/test262/ch11/11.9/11.9.5/S11.9.5_A8_T4.js80
-rw-r--r--js/src/tests/test262/ch11/11.9/11.9.5/S11.9.5_A8_T5.js28
-rw-r--r--js/src/tests/test262/ch11/11.9/11.9.5/browser.js0
-rw-r--r--js/src/tests/test262/ch11/11.9/11.9.5/shell.js0
-rw-r--r--js/src/tests/test262/ch11/11.9/browser.js0
-rw-r--r--js/src/tests/test262/ch11/11.9/shell.js0
-rw-r--r--js/src/tests/test262/ch11/browser.js0
-rw-r--r--js/src/tests/test262/ch11/shell.js0
-rw-r--r--js/src/tests/test262/ch12/12.1/12.1-1.js20
-rw-r--r--js/src/tests/test262/ch12/12.1/12.1-2.js20
-rw-r--r--js/src/tests/test262/ch12/12.1/12.1-3.js20
-rw-r--r--js/src/tests/test262/ch12/12.1/12.1-4.js20
-rw-r--r--js/src/tests/test262/ch12/12.1/12.1-5.js20
-rw-r--r--js/src/tests/test262/ch12/12.1/12.1-6.js20
-rw-r--r--js/src/tests/test262/ch12/12.1/12.1-7.js20
-rw-r--r--js/src/tests/test262/ch12/12.1/S12.1_A2.js37
-rw-r--r--js/src/tests/test262/ch12/12.1/S12.1_A4_T1.js19
-rw-r--r--js/src/tests/test262/ch12/12.1/S12.1_A4_T2.js19
-rw-r--r--js/src/tests/test262/ch12/12.1/S12.1_A5.js57
-rw-r--r--js/src/tests/test262/ch12/12.1/browser.js0
-rw-r--r--js/src/tests/test262/ch12/12.1/shell.js0
-rw-r--r--js/src/tests/test262/ch12/12.10/12.10-0-1.js26
-rw-r--r--js/src/tests/test262/ch12/12.10/12.10-0-10.js28
-rw-r--r--js/src/tests/test262/ch12/12.10/12.10-0-11.js30
-rw-r--r--js/src/tests/test262/ch12/12.10/12.10-0-12.js28
-rw-r--r--js/src/tests/test262/ch12/12.10/12.10-0-3.js22
-rw-r--r--js/src/tests/test262/ch12/12.10/12.10-0-7.js26
-rw-r--r--js/src/tests/test262/ch12/12.10/12.10-0-8.js21
-rw-r--r--js/src/tests/test262/ch12/12.10/12.10-0-9.js29
-rw-r--r--js/src/tests/test262/ch12/12.10/12.10-2-1.js27
-rw-r--r--js/src/tests/test262/ch12/12.10/12.10-2-2.js27
-rw-r--r--js/src/tests/test262/ch12/12.10/12.10-2-3.js27
-rw-r--r--js/src/tests/test262/ch12/12.10/12.10-7-1.js32
-rw-r--r--js/src/tests/test262/ch12/12.10/12.10.1/12.10.1-1-s.js31
-rw-r--r--js/src/tests/test262/ch12/12.10/12.10.1/12.10.1-10-s.js30
-rw-r--r--js/src/tests/test262/ch12/12.10/12.10.1/12.10.1-11-s.js23
-rw-r--r--js/src/tests/test262/ch12/12.10/12.10.1/12.10.1-11gs.js16
-rw-r--r--js/src/tests/test262/ch12/12.10/12.10.1/12.10.1-12-s.js26
-rw-r--r--js/src/tests/test262/ch12/12.10/12.10.1/12.10.1-13-s.js19
-rw-r--r--js/src/tests/test262/ch12/12.10/12.10.1/12.10.1-14-s.js24
-rw-r--r--js/src/tests/test262/ch12/12.10/12.10.1/12.10.1-15-s.js23
-rw-r--r--js/src/tests/test262/ch12/12.10/12.10.1/12.10.1-16-s.js23
-rw-r--r--js/src/tests/test262/ch12/12.10/12.10.1/12.10.1-2-s.js32
-rw-r--r--js/src/tests/test262/ch12/12.10/12.10.1/12.10.1-3-s.js32
-rw-r--r--js/src/tests/test262/ch12/12.10/12.10.1/12.10.1-4-s.js27
-rw-r--r--js/src/tests/test262/ch12/12.10/12.10.1/12.10.1-5-s.js19
-rw-r--r--js/src/tests/test262/ch12/12.10/12.10.1/12.10.1-7-s.js28
-rw-r--r--js/src/tests/test262/ch12/12.10/12.10.1/12.10.1-8-s.js28
-rw-r--r--js/src/tests/test262/ch12/12.10/12.10.1/12.10.1-9-s.js28
-rw-r--r--js/src/tests/test262/ch12/12.10/12.10.1/browser.js0
-rw-r--r--js/src/tests/test262/ch12/12.10/12.10.1/shell.js0
-rw-r--r--js/src/tests/test262/ch12/12.10/S12.10_A1.10_T1.js139
-rw-r--r--js/src/tests/test262/ch12/12.10/S12.10_A1.10_T2.js148
-rw-r--r--js/src/tests/test262/ch12/12.10/S12.10_A1.10_T3.js151
-rw-r--r--js/src/tests/test262/ch12/12.10/S12.10_A1.10_T4.js141
-rw-r--r--js/src/tests/test262/ch12/12.10/S12.10_A1.10_T5.js142
-rw-r--r--js/src/tests/test262/ch12/12.10/S12.10_A1.11_T1.js147
-rw-r--r--js/src/tests/test262/ch12/12.10/S12.10_A1.11_T2.js152
-rw-r--r--js/src/tests/test262/ch12/12.10/S12.10_A1.11_T3.js152
-rw-r--r--js/src/tests/test262/ch12/12.10/S12.10_A1.11_T4.js155
-rw-r--r--js/src/tests/test262/ch12/12.10/S12.10_A1.11_T5.js155
-rw-r--r--js/src/tests/test262/ch12/12.10/S12.10_A1.12_T1.js144
-rw-r--r--js/src/tests/test262/ch12/12.10/S12.10_A1.12_T2.js150
-rw-r--r--js/src/tests/test262/ch12/12.10/S12.10_A1.12_T3.js152
-rw-r--r--js/src/tests/test262/ch12/12.10/S12.10_A1.12_T4.js152
-rw-r--r--js/src/tests/test262/ch12/12.10/S12.10_A1.12_T5.js156
-rw-r--r--js/src/tests/test262/ch12/12.10/S12.10_A1.1_T1.js136
-rw-r--r--js/src/tests/test262/ch12/12.10/S12.10_A1.1_T2.js145
-rw-r--r--js/src/tests/test262/ch12/12.10/S12.10_A1.1_T3.js147
-rw-r--r--js/src/tests/test262/ch12/12.10/S12.10_A1.2_T1.js144
-rw-r--r--js/src/tests/test262/ch12/12.10/S12.10_A1.2_T2.js149
-rw-r--r--js/src/tests/test262/ch12/12.10/S12.10_A1.2_T3.js152
-rw-r--r--js/src/tests/test262/ch12/12.10/S12.10_A1.2_T4.js153
-rw-r--r--js/src/tests/test262/ch12/12.10/S12.10_A1.2_T5.js151
-rw-r--r--js/src/tests/test262/ch12/12.10/S12.10_A1.3_T1.js144
-rw-r--r--js/src/tests/test262/ch12/12.10/S12.10_A1.3_T2.js145
-rw-r--r--js/src/tests/test262/ch12/12.10/S12.10_A1.3_T3.js148
-rw-r--r--js/src/tests/test262/ch12/12.10/S12.10_A1.3_T4.js149
-rw-r--r--js/src/tests/test262/ch12/12.10/S12.10_A1.3_T5.js156
-rw-r--r--js/src/tests/test262/ch12/12.10/S12.10_A1.4_T1.js139
-rw-r--r--js/src/tests/test262/ch12/12.10/S12.10_A1.4_T2.js148
-rw-r--r--js/src/tests/test262/ch12/12.10/S12.10_A1.4_T3.js150
-rw-r--r--js/src/tests/test262/ch12/12.10/S12.10_A1.4_T4.js140
-rw-r--r--js/src/tests/test262/ch12/12.10/S12.10_A1.4_T5.js142
-rw-r--r--js/src/tests/test262/ch12/12.10/S12.10_A1.5_T1.js144
-rw-r--r--js/src/tests/test262/ch12/12.10/S12.10_A1.5_T2.js147
-rw-r--r--js/src/tests/test262/ch12/12.10/S12.10_A1.5_T3.js155
-rw-r--r--js/src/tests/test262/ch12/12.10/S12.10_A1.5_T4.js139
-rw-r--r--js/src/tests/test262/ch12/12.10/S12.10_A1.5_T5.js147
-rw-r--r--js/src/tests/test262/ch12/12.10/S12.10_A1.6_T1.js138
-rw-r--r--js/src/tests/test262/ch12/12.10/S12.10_A1.6_T2.js147
-rw-r--r--js/src/tests/test262/ch12/12.10/S12.10_A1.6_T3.js149
-rw-r--r--js/src/tests/test262/ch12/12.10/S12.10_A1.7_T1.js144
-rw-r--r--js/src/tests/test262/ch12/12.10/S12.10_A1.7_T2.js149
-rw-r--r--js/src/tests/test262/ch12/12.10/S12.10_A1.7_T3.js151
-rw-r--r--js/src/tests/test262/ch12/12.10/S12.10_A1.7_T4.js153
-rw-r--r--js/src/tests/test262/ch12/12.10/S12.10_A1.7_T5.js155
-rw-r--r--js/src/tests/test262/ch12/12.10/S12.10_A1.8_T1.js144
-rw-r--r--js/src/tests/test262/ch12/12.10/S12.10_A1.8_T2.js144
-rw-r--r--js/src/tests/test262/ch12/12.10/S12.10_A1.8_T3.js147
-rw-r--r--js/src/tests/test262/ch12/12.10/S12.10_A1.8_T4.js152
-rw-r--r--js/src/tests/test262/ch12/12.10/S12.10_A1.8_T5.js155
-rw-r--r--js/src/tests/test262/ch12/12.10/S12.10_A1.9_T1.js144
-rw-r--r--js/src/tests/test262/ch12/12.10/S12.10_A1.9_T2.js139
-rw-r--r--js/src/tests/test262/ch12/12.10/S12.10_A1.9_T3.js147
-rw-r--r--js/src/tests/test262/ch12/12.10/S12.10_A3.10_T1.js47
-rw-r--r--js/src/tests/test262/ch12/12.10/S12.10_A3.10_T2.js57
-rw-r--r--js/src/tests/test262/ch12/12.10/S12.10_A3.10_T3.js57
-rw-r--r--js/src/tests/test262/ch12/12.10/S12.10_A3.10_T4.js47
-rw-r--r--js/src/tests/test262/ch12/12.10/S12.10_A3.10_T5.js45
-rw-r--r--js/src/tests/test262/ch12/12.10/S12.10_A3.11_T1.js35
-rw-r--r--js/src/tests/test262/ch12/12.10/S12.10_A3.11_T2.js41
-rw-r--r--js/src/tests/test262/ch12/12.10/S12.10_A3.11_T3.js42
-rw-r--r--js/src/tests/test262/ch12/12.10/S12.10_A3.11_T4.js47
-rw-r--r--js/src/tests/test262/ch12/12.10/S12.10_A3.11_T5.js45
-rw-r--r--js/src/tests/test262/ch12/12.10/S12.10_A3.12_T1.js35
-rw-r--r--js/src/tests/test262/ch12/12.10/S12.10_A3.12_T2.js41
-rw-r--r--js/src/tests/test262/ch12/12.10/S12.10_A3.12_T3.js40
-rw-r--r--js/src/tests/test262/ch12/12.10/S12.10_A3.12_T4.js45
-rw-r--r--js/src/tests/test262/ch12/12.10/S12.10_A3.12_T5.js44
-rw-r--r--js/src/tests/test262/ch12/12.10/S12.10_A3.1_T1.js45
-rw-r--r--js/src/tests/test262/ch12/12.10/S12.10_A3.1_T2.js59
-rw-r--r--js/src/tests/test262/ch12/12.10/S12.10_A3.1_T3.js58
-rw-r--r--js/src/tests/test262/ch12/12.10/S12.10_A3.2_T1.js46
-rw-r--r--js/src/tests/test262/ch12/12.10/S12.10_A3.2_T2.js49
-rw-r--r--js/src/tests/test262/ch12/12.10/S12.10_A3.2_T3.js47
-rw-r--r--js/src/tests/test262/ch12/12.10/S12.10_A3.2_T4.js60
-rw-r--r--js/src/tests/test262/ch12/12.10/S12.10_A3.2_T5.js63
-rw-r--r--js/src/tests/test262/ch12/12.10/S12.10_A3.3_T1.js48
-rw-r--r--js/src/tests/test262/ch12/12.10/S12.10_A3.3_T2.js47
-rw-r--r--js/src/tests/test262/ch12/12.10/S12.10_A3.3_T3.js49
-rw-r--r--js/src/tests/test262/ch12/12.10/S12.10_A3.3_T4.js58
-rw-r--r--js/src/tests/test262/ch12/12.10/S12.10_A3.4_T1.js46
-rw-r--r--js/src/tests/test262/ch12/12.10/S12.10_A3.4_T2.js57
-rw-r--r--js/src/tests/test262/ch12/12.10/S12.10_A3.4_T3.js57
-rw-r--r--js/src/tests/test262/ch12/12.10/S12.10_A3.4_T4.js47
-rw-r--r--js/src/tests/test262/ch12/12.10/S12.10_A3.4_T5.js47
-rw-r--r--js/src/tests/test262/ch12/12.10/S12.10_A3.5_T1.js44
-rw-r--r--js/src/tests/test262/ch12/12.10/S12.10_A3.5_T2.js57
-rw-r--r--js/src/tests/test262/ch12/12.10/S12.10_A3.5_T3.js57
-rw-r--r--js/src/tests/test262/ch12/12.10/S12.10_A3.5_T4.js45
-rw-r--r--js/src/tests/test262/ch12/12.10/S12.10_A3.5_T5.js48
-rw-r--r--js/src/tests/test262/ch12/12.10/S12.10_A3.6_T1.js60
-rw-r--r--js/src/tests/test262/ch12/12.10/S12.10_A3.6_T2.js65
-rw-r--r--js/src/tests/test262/ch12/12.10/S12.10_A3.6_T3.js66
-rw-r--r--js/src/tests/test262/ch12/12.10/S12.10_A3.7_T1.js46
-rw-r--r--js/src/tests/test262/ch12/12.10/S12.10_A3.7_T2.js55
-rw-r--r--js/src/tests/test262/ch12/12.10/S12.10_A3.7_T3.js53
-rw-r--r--js/src/tests/test262/ch12/12.10/S12.10_A3.7_T4.js57
-rw-r--r--js/src/tests/test262/ch12/12.10/S12.10_A3.7_T5.js57
-rw-r--r--js/src/tests/test262/ch12/12.10/S12.10_A3.8_T1.js45
-rw-r--r--js/src/tests/test262/ch12/12.10/S12.10_A3.8_T2.js46
-rw-r--r--js/src/tests/test262/ch12/12.10/S12.10_A3.8_T3.js46
-rw-r--r--js/src/tests/test262/ch12/12.10/S12.10_A3.8_T4.js58
-rw-r--r--js/src/tests/test262/ch12/12.10/S12.10_A3.8_T5.js58
-rw-r--r--js/src/tests/test262/ch12/12.10/S12.10_A3.9_T1.js46
-rw-r--r--js/src/tests/test262/ch12/12.10/S12.10_A3.9_T2.js46
-rw-r--r--js/src/tests/test262/ch12/12.10/S12.10_A3.9_T3.js46
-rw-r--r--js/src/tests/test262/ch12/12.10/S12.10_A4_T1.js33
-rw-r--r--js/src/tests/test262/ch12/12.10/S12.10_A4_T2.js33
-rw-r--r--js/src/tests/test262/ch12/12.10/S12.10_A4_T3.js33
-rw-r--r--js/src/tests/test262/ch12/12.10/S12.10_A4_T4.js42
-rw-r--r--js/src/tests/test262/ch12/12.10/S12.10_A4_T5.js33
-rw-r--r--js/src/tests/test262/ch12/12.10/S12.10_A4_T6.js33
-rw-r--r--js/src/tests/test262/ch12/12.10/S12.10_A5_T1.js50
-rw-r--r--js/src/tests/test262/ch12/12.10/S12.10_A5_T2.js50
-rw-r--r--js/src/tests/test262/ch12/12.10/S12.10_A5_T3.js51
-rw-r--r--js/src/tests/test262/ch12/12.10/S12.10_A5_T4.js55
-rw-r--r--js/src/tests/test262/ch12/12.10/S12.10_A5_T5.js55
-rw-r--r--js/src/tests/test262/ch12/12.10/S12.10_A5_T6.js55
-rw-r--r--js/src/tests/test262/ch12/12.10/browser.js0
-rw-r--r--js/src/tests/test262/ch12/12.10/shell.js0
-rw-r--r--js/src/tests/test262/ch12/12.11/S12.11_A1_T1.js74
-rw-r--r--js/src/tests/test262/ch12/12.11/S12.11_A1_T2.js88
-rw-r--r--js/src/tests/test262/ch12/12.11/S12.11_A1_T3.js92
-rw-r--r--js/src/tests/test262/ch12/12.11/S12.11_A1_T4.js80
-rw-r--r--js/src/tests/test262/ch12/12.11/S12.11_A2_T1.js30
-rw-r--r--js/src/tests/test262/ch12/12.11/S12.11_A3_T1.js27
-rw-r--r--js/src/tests/test262/ch12/12.11/S12.11_A3_T2.js27
-rw-r--r--js/src/tests/test262/ch12/12.11/S12.11_A3_T3.js13
-rw-r--r--js/src/tests/test262/ch12/12.11/S12.11_A3_T4.js27
-rw-r--r--js/src/tests/test262/ch12/12.11/S12.11_A3_T5.js28
-rw-r--r--js/src/tests/test262/ch12/12.11/S12.11_A4_T1.js36
-rw-r--r--js/src/tests/test262/ch12/12.11/browser.js0
-rw-r--r--js/src/tests/test262/ch12/12.11/shell.js0
-rw-r--r--js/src/tests/test262/ch12/12.12/S12.12_A1_T1.js22
-rw-r--r--js/src/tests/test262/ch12/12.12/browser.js0
-rw-r--r--js/src/tests/test262/ch12/12.12/shell.js0
-rw-r--r--js/src/tests/test262/ch12/12.13/S12.13_A1.js13
-rw-r--r--js/src/tests/test262/ch12/12.13/S12.13_A2_T1.js18
-rw-r--r--js/src/tests/test262/ch12/12.13/S12.13_A2_T2.js18
-rw-r--r--js/src/tests/test262/ch12/12.13/S12.13_A2_T3.js44
-rw-r--r--js/src/tests/test262/ch12/12.13/S12.13_A2_T4.js27
-rw-r--r--js/src/tests/test262/ch12/12.13/S12.13_A2_T5.js75
-rw-r--r--js/src/tests/test262/ch12/12.13/S12.13_A2_T6.js45
-rw-r--r--js/src/tests/test262/ch12/12.13/S12.13_A2_T7.js30
-rw-r--r--js/src/tests/test262/ch12/12.13/S12.13_A3_T1.js45
-rw-r--r--js/src/tests/test262/ch12/12.13/S12.13_A3_T2.js28
-rw-r--r--js/src/tests/test262/ch12/12.13/S12.13_A3_T3.js92
-rw-r--r--js/src/tests/test262/ch12/12.13/S12.13_A3_T4.js56
-rw-r--r--js/src/tests/test262/ch12/12.13/S12.13_A3_T5.js20
-rw-r--r--js/src/tests/test262/ch12/12.13/S12.13_A3_T6.js58
-rw-r--r--js/src/tests/test262/ch12/12.13/browser.js0
-rw-r--r--js/src/tests/test262/ch12/12.13/shell.js0
-rw-r--r--js/src/tests/test262/ch12/12.14/12.14-1.js23
-rw-r--r--js/src/tests/test262/ch12/12.14/12.14-10.js31
-rw-r--r--js/src/tests/test262/ch12/12.14/12.14-11.js33
-rw-r--r--js/src/tests/test262/ch12/12.14/12.14-12.js31
-rw-r--r--js/src/tests/test262/ch12/12.14/12.14-13.js42
-rw-r--r--js/src/tests/test262/ch12/12.14/12.14-14.js26
-rw-r--r--js/src/tests/test262/ch12/12.14/12.14-15.js28
-rw-r--r--js/src/tests/test262/ch12/12.14/12.14-16.js32
-rw-r--r--js/src/tests/test262/ch12/12.14/12.14-2.js24
-rw-r--r--js/src/tests/test262/ch12/12.14/12.14-3.js30
-rw-r--r--js/src/tests/test262/ch12/12.14/12.14-4.js34
-rw-r--r--js/src/tests/test262/ch12/12.14/12.14-6.js33
-rw-r--r--js/src/tests/test262/ch12/12.14/12.14-7.js39
-rw-r--r--js/src/tests/test262/ch12/12.14/12.14-8.js34
-rw-r--r--js/src/tests/test262/ch12/12.14/12.14-9.js32
-rw-r--r--js/src/tests/test262/ch12/12.14/12.14.1/12.14.1-1-s.js25
-rw-r--r--js/src/tests/test262/ch12/12.14/12.14.1/12.14.1-1gs.js16
-rw-r--r--js/src/tests/test262/ch12/12.14/12.14.1/12.14.1-2-s.js25
-rw-r--r--js/src/tests/test262/ch12/12.14/12.14.1/12.14.1-3-s.js33
-rw-r--r--js/src/tests/test262/ch12/12.14/12.14.1/12.14.1-4-s.js23
-rw-r--r--js/src/tests/test262/ch12/12.14/12.14.1/12.14.1-5-s.js23
-rw-r--r--js/src/tests/test262/ch12/12.14/12.14.1/12.14.1-6-s.js23
-rw-r--r--js/src/tests/test262/ch12/12.14/12.14.1/browser.js0
-rw-r--r--js/src/tests/test262/ch12/12.14/12.14.1/shell.js0
-rw-r--r--js/src/tests/test262/ch12/12.14/S12.14_A1.js52
-rw-r--r--js/src/tests/test262/ch12/12.14/S12.14_A10_T1.js22
-rw-r--r--js/src/tests/test262/ch12/12.14/S12.14_A10_T2.js116
-rw-r--r--js/src/tests/test262/ch12/12.14/S12.14_A10_T3.js151
-rw-r--r--js/src/tests/test262/ch12/12.14/S12.14_A10_T4.js56
-rw-r--r--js/src/tests/test262/ch12/12.14/S12.14_A10_T5.js39
-rw-r--r--js/src/tests/test262/ch12/12.14/S12.14_A11_T1.js20
-rw-r--r--js/src/tests/test262/ch12/12.14/S12.14_A11_T2.js123
-rw-r--r--js/src/tests/test262/ch12/12.14/S12.14_A11_T3.js150
-rw-r--r--js/src/tests/test262/ch12/12.14/S12.14_A11_T4.js56
-rw-r--r--js/src/tests/test262/ch12/12.14/S12.14_A12_T1.js28
-rw-r--r--js/src/tests/test262/ch12/12.14/S12.14_A12_T2.js132
-rw-r--r--js/src/tests/test262/ch12/12.14/S12.14_A12_T3.js162
-rw-r--r--js/src/tests/test262/ch12/12.14/S12.14_A12_T4.js62
-rw-r--r--js/src/tests/test262/ch12/12.14/S12.14_A13_T1.js79
-rw-r--r--js/src/tests/test262/ch12/12.14/S12.14_A13_T2.js182
-rw-r--r--js/src/tests/test262/ch12/12.14/S12.14_A13_T3.js186
-rw-r--r--js/src/tests/test262/ch12/12.14/S12.14_A14.js79
-rw-r--r--js/src/tests/test262/ch12/12.14/S12.14_A15.js92
-rw-r--r--js/src/tests/test262/ch12/12.14/S12.14_A16_T1.js14
-rw-r--r--js/src/tests/test262/ch12/12.14/S12.14_A16_T10.js18
-rw-r--r--js/src/tests/test262/ch12/12.14/S12.14_A16_T11.js20
-rw-r--r--js/src/tests/test262/ch12/12.14/S12.14_A16_T12.js23
-rw-r--r--js/src/tests/test262/ch12/12.14/S12.14_A16_T13.js22
-rw-r--r--js/src/tests/test262/ch12/12.14/S12.14_A16_T14.js19
-rw-r--r--js/src/tests/test262/ch12/12.14/S12.14_A16_T15.js20
-rw-r--r--js/src/tests/test262/ch12/12.14/S12.14_A16_T2.js14
-rw-r--r--js/src/tests/test262/ch12/12.14/S12.14_A16_T3.js14
-rw-r--r--js/src/tests/test262/ch12/12.14/S12.14_A16_T4.js15
-rw-r--r--js/src/tests/test262/ch12/12.14/S12.14_A16_T5.js15
-rw-r--r--js/src/tests/test262/ch12/12.14/S12.14_A16_T6.js15
-rw-r--r--js/src/tests/test262/ch12/12.14/S12.14_A16_T7.js16
-rw-r--r--js/src/tests/test262/ch12/12.14/S12.14_A16_T8.js18
-rw-r--r--js/src/tests/test262/ch12/12.14/S12.14_A16_T9.js17
-rw-r--r--js/src/tests/test262/ch12/12.14/S12.14_A17.js45
-rw-r--r--js/src/tests/test262/ch12/12.14/S12.14_A18_T1.js18
-rw-r--r--js/src/tests/test262/ch12/12.14/S12.14_A18_T2.js18
-rw-r--r--js/src/tests/test262/ch12/12.14/S12.14_A18_T3.js62
-rw-r--r--js/src/tests/test262/ch12/12.14/S12.14_A18_T4.js45
-rw-r--r--js/src/tests/test262/ch12/12.14/S12.14_A18_T5.js102
-rw-r--r--js/src/tests/test262/ch12/12.14/S12.14_A18_T6.js55
-rw-r--r--js/src/tests/test262/ch12/12.14/S12.14_A18_T7.js66
-rw-r--r--js/src/tests/test262/ch12/12.14/S12.14_A19_T1.js68
-rw-r--r--js/src/tests/test262/ch12/12.14/S12.14_A19_T2.js102
-rw-r--r--js/src/tests/test262/ch12/12.14/S12.14_A2.js52
-rw-r--r--js/src/tests/test262/ch12/12.14/S12.14_A3.js53
-rw-r--r--js/src/tests/test262/ch12/12.14/S12.14_A4.js37
-rw-r--r--js/src/tests/test262/ch12/12.14/S12.14_A5.js51
-rw-r--r--js/src/tests/test262/ch12/12.14/S12.14_A6.js67
-rw-r--r--js/src/tests/test262/ch12/12.14/S12.14_A7_T1.js138
-rw-r--r--js/src/tests/test262/ch12/12.14/S12.14_A7_T2.js152
-rw-r--r--js/src/tests/test262/ch12/12.14/S12.14_A7_T3.js169
-rw-r--r--js/src/tests/test262/ch12/12.14/S12.14_A8.js35
-rw-r--r--js/src/tests/test262/ch12/12.14/S12.14_A9_T1.js23
-rw-r--r--js/src/tests/test262/ch12/12.14/S12.14_A9_T2.js122
-rw-r--r--js/src/tests/test262/ch12/12.14/S12.14_A9_T3.js158
-rw-r--r--js/src/tests/test262/ch12/12.14/S12.14_A9_T4.js58
-rw-r--r--js/src/tests/test262/ch12/12.14/S12.14_A9_T5.js41
-rw-r--r--js/src/tests/test262/ch12/12.14/browser.js0
-rw-r--r--js/src/tests/test262/ch12/12.14/shell.js0
-rw-r--r--js/src/tests/test262/ch12/12.2/12.2.1/12.2.1-1-s.js24
-rw-r--r--js/src/tests/test262/ch12/12.2/12.2.1/12.2.1-10-s.js19
-rw-r--r--js/src/tests/test262/ch12/12.2/12.2.1/12.2.1-11.js16
-rw-r--r--js/src/tests/test262/ch12/12.2/12.2.1/12.2.1-12-s.js24
-rw-r--r--js/src/tests/test262/ch12/12.2/12.2.1/12.2.1-12.js16
-rw-r--r--js/src/tests/test262/ch12/12.2/12.2.1/12.2.1-13-s.js24
-rw-r--r--js/src/tests/test262/ch12/12.2/12.2.1/12.2.1-14-s.js26
-rw-r--r--js/src/tests/test262/ch12/12.2/12.2.1/12.2.1-15-s.js26
-rw-r--r--js/src/tests/test262/ch12/12.2/12.2.1/12.2.1-16-s.js20
-rw-r--r--js/src/tests/test262/ch12/12.2/12.2.1/12.2.1-17-s.js22
-rw-r--r--js/src/tests/test262/ch12/12.2/12.2.1/12.2.1-18-s.js26
-rw-r--r--js/src/tests/test262/ch12/12.2/12.2.1/12.2.1-19-s.js26
-rw-r--r--js/src/tests/test262/ch12/12.2/12.2.1/12.2.1-1gs.js14
-rw-r--r--js/src/tests/test262/ch12/12.2/12.2.1/12.2.1-2-s.js24
-rw-r--r--js/src/tests/test262/ch12/12.2/12.2.1/12.2.1-20-s.js21
-rw-r--r--js/src/tests/test262/ch12/12.2/12.2.1/12.2.1-21-s.js21
-rw-r--r--js/src/tests/test262/ch12/12.2/12.2.1/12.2.1-22-s.js27
-rw-r--r--js/src/tests/test262/ch12/12.2/12.2.1/12.2.1-23-s.js26
-rw-r--r--js/src/tests/test262/ch12/12.2/12.2.1/12.2.1-24-s.js26
-rw-r--r--js/src/tests/test262/ch12/12.2/12.2.1/12.2.1-25-s.js26
-rw-r--r--js/src/tests/test262/ch12/12.2/12.2.1/12.2.1-26-s.js26
-rw-r--r--js/src/tests/test262/ch12/12.2/12.2.1/12.2.1-27-s.js26
-rw-r--r--js/src/tests/test262/ch12/12.2/12.2.1/12.2.1-28-s.js26
-rw-r--r--js/src/tests/test262/ch12/12.2/12.2.1/12.2.1-29-s.js26
-rw-r--r--js/src/tests/test262/ch12/12.2/12.2.1/12.2.1-3-s.js24
-rw-r--r--js/src/tests/test262/ch12/12.2/12.2.1/12.2.1-30-s.js26
-rw-r--r--js/src/tests/test262/ch12/12.2/12.2.1/12.2.1-31-s.js26
-rw-r--r--js/src/tests/test262/ch12/12.2/12.2.1/12.2.1-32-s.js26
-rw-r--r--js/src/tests/test262/ch12/12.2/12.2.1/12.2.1-33-s.js26
-rw-r--r--js/src/tests/test262/ch12/12.2/12.2.1/12.2.1-34-s.js24
-rw-r--r--js/src/tests/test262/ch12/12.2/12.2.1/12.2.1-35-s.js24
-rw-r--r--js/src/tests/test262/ch12/12.2/12.2.1/12.2.1-36-s.js24
-rw-r--r--js/src/tests/test262/ch12/12.2/12.2.1/12.2.1-37-s.js24
-rw-r--r--js/src/tests/test262/ch12/12.2/12.2.1/12.2.1-4-s.js24
-rw-r--r--js/src/tests/test262/ch12/12.2/12.2.1/12.2.1-4gs.js14
-rw-r--r--js/src/tests/test262/ch12/12.2/12.2.1/12.2.1-5-s.js18
-rw-r--r--js/src/tests/test262/ch12/12.2/12.2.1/12.2.1-6-s.js20
-rw-r--r--js/src/tests/test262/ch12/12.2/12.2.1/12.2.1-7-s.js24
-rw-r--r--js/src/tests/test262/ch12/12.2/12.2.1/12.2.1-8-s.js24
-rw-r--r--js/src/tests/test262/ch12/12.2/12.2.1/12.2.1-9-s.js19
-rw-r--r--js/src/tests/test262/ch12/12.2/12.2.1/browser.js0
-rw-r--r--js/src/tests/test262/ch12/12.2/12.2.1/shell.js0
-rw-r--r--js/src/tests/test262/ch12/12.2/S12.2_A1.js53
-rw-r--r--js/src/tests/test262/ch12/12.2/S12.2_A10.js24
-rw-r--r--js/src/tests/test262/ch12/12.2/S12.2_A11.js29
-rw-r--r--js/src/tests/test262/ch12/12.2/S12.2_A12.js22
-rw-r--r--js/src/tests/test262/ch12/12.2/S12.2_A2.js47
-rw-r--r--js/src/tests/test262/ch12/12.2/S12.2_A3.js55
-rw-r--r--js/src/tests/test262/ch12/12.2/S12.2_A4.js30
-rw-r--r--js/src/tests/test262/ch12/12.2/S12.2_A5.js33
-rw-r--r--js/src/tests/test262/ch12/12.2/S12.2_A6_T1.js36
-rw-r--r--js/src/tests/test262/ch12/12.2/S12.2_A6_T2.js38
-rw-r--r--js/src/tests/test262/ch12/12.2/S12.2_A7.js25
-rw-r--r--js/src/tests/test262/ch12/12.2/S12.2_A8_T1.js17
-rw-r--r--js/src/tests/test262/ch12/12.2/S12.2_A8_T2.js17
-rw-r--r--js/src/tests/test262/ch12/12.2/S12.2_A8_T3.js17
-rw-r--r--js/src/tests/test262/ch12/12.2/S12.2_A8_T4.js17
-rw-r--r--js/src/tests/test262/ch12/12.2/S12.2_A8_T5.js17
-rw-r--r--js/src/tests/test262/ch12/12.2/S12.2_A8_T6.js18
-rw-r--r--js/src/tests/test262/ch12/12.2/S12.2_A8_T7.js18
-rw-r--r--js/src/tests/test262/ch12/12.2/S12.2_A8_T8.js20
-rw-r--r--js/src/tests/test262/ch12/12.2/S12.2_A9.js24
-rw-r--r--js/src/tests/test262/ch12/12.2/browser.js0
-rw-r--r--js/src/tests/test262/ch12/12.2/shell.js0
-rw-r--r--js/src/tests/test262/ch12/12.3/S12.3_A1.js18
-rw-r--r--js/src/tests/test262/ch12/12.3/browser.js0
-rw-r--r--js/src/tests/test262/ch12/12.3/shell.js0
-rw-r--r--js/src/tests/test262/ch12/12.4/S12.4_A1.js17
-rw-r--r--js/src/tests/test262/ch12/12.4/S12.4_A2_T1.js35
-rw-r--r--js/src/tests/test262/ch12/12.4/S12.4_A2_T2.js35
-rw-r--r--js/src/tests/test262/ch12/12.4/browser.js0
-rw-r--r--js/src/tests/test262/ch12/12.4/shell.js0
-rw-r--r--js/src/tests/test262/ch12/12.5/S12.5_A1.1_T1.js53
-rw-r--r--js/src/tests/test262/ch12/12.5/S12.5_A1.1_T2.js71
-rw-r--r--js/src/tests/test262/ch12/12.5/S12.5_A1.2_T1.js73
-rw-r--r--js/src/tests/test262/ch12/12.5/S12.5_A1.2_T2.js101
-rw-r--r--js/src/tests/test262/ch12/12.5/S12.5_A10_T1.js20
-rw-r--r--js/src/tests/test262/ch12/12.5/S12.5_A10_T2.js20
-rw-r--r--js/src/tests/test262/ch12/12.5/S12.5_A11.js23
-rw-r--r--js/src/tests/test262/ch12/12.5/S12.5_A12_T1.js58
-rw-r--r--js/src/tests/test262/ch12/12.5/S12.5_A12_T2.js50
-rw-r--r--js/src/tests/test262/ch12/12.5/S12.5_A12_T3.js38
-rw-r--r--js/src/tests/test262/ch12/12.5/S12.5_A12_T4.js33
-rw-r--r--js/src/tests/test262/ch12/12.5/S12.5_A1_T1.js39
-rw-r--r--js/src/tests/test262/ch12/12.5/S12.5_A1_T2.js52
-rw-r--r--js/src/tests/test262/ch12/12.5/S12.5_A2.js13
-rw-r--r--js/src/tests/test262/ch12/12.5/S12.5_A3.js35
-rw-r--r--js/src/tests/test262/ch12/12.5/S12.5_A4.js37
-rw-r--r--js/src/tests/test262/ch12/12.5/S12.5_A5.js48
-rw-r--r--js/src/tests/test262/ch12/12.5/S12.5_A6_T1.js17
-rw-r--r--js/src/tests/test262/ch12/12.5/S12.5_A6_T2.js18
-rw-r--r--js/src/tests/test262/ch12/12.5/S12.5_A7.js25
-rw-r--r--js/src/tests/test262/ch12/12.5/S12.5_A8.js17
-rw-r--r--js/src/tests/test262/ch12/12.5/browser.js0
-rw-r--r--js/src/tests/test262/ch12/12.5/shell.js0
-rw-r--r--js/src/tests/test262/ch12/12.6/12.6.1/S12.6.1_A1.js42
-rw-r--r--js/src/tests/test262/ch12/12.6/12.6.1/S12.6.1_A10.js29
-rw-r--r--js/src/tests/test262/ch12/12.6/12.6.1/S12.6.1_A11.js23
-rw-r--r--js/src/tests/test262/ch12/12.6/12.6.1/S12.6.1_A12.js17
-rw-r--r--js/src/tests/test262/ch12/12.6/12.6.1/S12.6.1_A14_T1.js27
-rw-r--r--js/src/tests/test262/ch12/12.6/12.6.1/S12.6.1_A14_T2.js27
-rw-r--r--js/src/tests/test262/ch12/12.6/12.6.1/S12.6.1_A15.js19
-rw-r--r--js/src/tests/test262/ch12/12.6/12.6.1/S12.6.1_A2.js27
-rw-r--r--js/src/tests/test262/ch12/12.6/12.6.1/S12.6.1_A3.js28
-rw-r--r--js/src/tests/test262/ch12/12.6/12.6.1/S12.6.1_A4_T1.js32
-rw-r--r--js/src/tests/test262/ch12/12.6/12.6.1/S12.6.1_A4_T2.js28
-rw-r--r--js/src/tests/test262/ch12/12.6/12.6.1/S12.6.1_A4_T3.js28
-rw-r--r--js/src/tests/test262/ch12/12.6/12.6.1/S12.6.1_A4_T4.js29
-rw-r--r--js/src/tests/test262/ch12/12.6/12.6.1/S12.6.1_A4_T5.js23
-rw-r--r--js/src/tests/test262/ch12/12.6/12.6.1/S12.6.1_A5.js36
-rw-r--r--js/src/tests/test262/ch12/12.6/12.6.1/S12.6.1_A6_T1.js17
-rw-r--r--js/src/tests/test262/ch12/12.6/12.6.1/S12.6.1_A6_T2.js17
-rw-r--r--js/src/tests/test262/ch12/12.6/12.6.1/S12.6.1_A6_T3.js17
-rw-r--r--js/src/tests/test262/ch12/12.6/12.6.1/S12.6.1_A6_T4.js17
-rw-r--r--js/src/tests/test262/ch12/12.6/12.6.1/S12.6.1_A6_T5.js17
-rw-r--r--js/src/tests/test262/ch12/12.6/12.6.1/S12.6.1_A6_T6.js17
-rw-r--r--js/src/tests/test262/ch12/12.6/12.6.1/S12.6.1_A7.js31
-rw-r--r--js/src/tests/test262/ch12/12.6/12.6.1/S12.6.1_A8.js31
-rw-r--r--js/src/tests/test262/ch12/12.6/12.6.1/S12.6.1_A9.js29
-rw-r--r--js/src/tests/test262/ch12/12.6/12.6.1/browser.js0
-rw-r--r--js/src/tests/test262/ch12/12.6/12.6.1/shell.js0
-rw-r--r--js/src/tests/test262/ch12/12.6/12.6.2/S12.6.2_A1.js62
-rw-r--r--js/src/tests/test262/ch12/12.6/12.6.2/S12.6.2_A10.js29
-rw-r--r--js/src/tests/test262/ch12/12.6/12.6.2/S12.6.2_A11.js23
-rw-r--r--js/src/tests/test262/ch12/12.6/12.6.2/S12.6.2_A14_T1.js27
-rw-r--r--js/src/tests/test262/ch12/12.6/12.6.2/S12.6.2_A14_T2.js27
-rw-r--r--js/src/tests/test262/ch12/12.6/12.6.2/S12.6.2_A15.js19
-rw-r--r--js/src/tests/test262/ch12/12.6/12.6.2/S12.6.2_A2.js29
-rw-r--r--js/src/tests/test262/ch12/12.6/12.6.2/S12.6.2_A3.js30
-rw-r--r--js/src/tests/test262/ch12/12.6/12.6.2/S12.6.2_A4_T1.js32
-rw-r--r--js/src/tests/test262/ch12/12.6/12.6.2/S12.6.2_A4_T2.js29
-rw-r--r--js/src/tests/test262/ch12/12.6/12.6.2/S12.6.2_A4_T3.js29
-rw-r--r--js/src/tests/test262/ch12/12.6/12.6.2/S12.6.2_A4_T4.js30
-rw-r--r--js/src/tests/test262/ch12/12.6/12.6.2/S12.6.2_A4_T5.js23
-rw-r--r--js/src/tests/test262/ch12/12.6/12.6.2/S12.6.2_A5.js36
-rw-r--r--js/src/tests/test262/ch12/12.6/12.6.2/S12.6.2_A6_T1.js17
-rw-r--r--js/src/tests/test262/ch12/12.6/12.6.2/S12.6.2_A6_T2.js17
-rw-r--r--js/src/tests/test262/ch12/12.6/12.6.2/S12.6.2_A6_T3.js17
-rw-r--r--js/src/tests/test262/ch12/12.6/12.6.2/S12.6.2_A6_T4.js17
-rw-r--r--js/src/tests/test262/ch12/12.6/12.6.2/S12.6.2_A6_T5.js17
-rw-r--r--js/src/tests/test262/ch12/12.6/12.6.2/S12.6.2_A6_T6.js17
-rw-r--r--js/src/tests/test262/ch12/12.6/12.6.2/S12.6.2_A7.js31
-rw-r--r--js/src/tests/test262/ch12/12.6/12.6.2/S12.6.2_A8.js31
-rw-r--r--js/src/tests/test262/ch12/12.6/12.6.2/S12.6.2_A9.js29
-rw-r--r--js/src/tests/test262/ch12/12.6/12.6.2/browser.js0
-rw-r--r--js/src/tests/test262/ch12/12.6/12.6.2/shell.js0
-rw-r--r--js/src/tests/test262/ch12/12.6/12.6.3/12.6.3_2-3-a-ii-1.js26
-rw-r--r--js/src/tests/test262/ch12/12.6/12.6.3/12.6.3_2-3-a-ii-10.js26
-rw-r--r--js/src/tests/test262/ch12/12.6/12.6.3/12.6.3_2-3-a-ii-11.js24
-rw-r--r--js/src/tests/test262/ch12/12.6/12.6.3/12.6.3_2-3-a-ii-12.js24
-rw-r--r--js/src/tests/test262/ch12/12.6/12.6.3/12.6.3_2-3-a-ii-13.js24
-rw-r--r--js/src/tests/test262/ch12/12.6/12.6.3/12.6.3_2-3-a-ii-14.js24
-rw-r--r--js/src/tests/test262/ch12/12.6/12.6.3/12.6.3_2-3-a-ii-15.js24
-rw-r--r--js/src/tests/test262/ch12/12.6/12.6.3/12.6.3_2-3-a-ii-16.js24
-rw-r--r--js/src/tests/test262/ch12/12.6/12.6.3/12.6.3_2-3-a-ii-17.js25
-rw-r--r--js/src/tests/test262/ch12/12.6/12.6.3/12.6.3_2-3-a-ii-18.js24
-rw-r--r--js/src/tests/test262/ch12/12.6/12.6.3/12.6.3_2-3-a-ii-19.js25
-rw-r--r--js/src/tests/test262/ch12/12.6/12.6.3/12.6.3_2-3-a-ii-2.js26
-rw-r--r--js/src/tests/test262/ch12/12.6/12.6.3/12.6.3_2-3-a-ii-20.js25
-rw-r--r--js/src/tests/test262/ch12/12.6/12.6.3/12.6.3_2-3-a-ii-21.js25
-rw-r--r--js/src/tests/test262/ch12/12.6/12.6.3/12.6.3_2-3-a-ii-3.js26
-rw-r--r--js/src/tests/test262/ch12/12.6/12.6.3/12.6.3_2-3-a-ii-4.js26
-rw-r--r--js/src/tests/test262/ch12/12.6/12.6.3/12.6.3_2-3-a-ii-5.js26
-rw-r--r--js/src/tests/test262/ch12/12.6/12.6.3/12.6.3_2-3-a-ii-6.js26
-rw-r--r--js/src/tests/test262/ch12/12.6/12.6.3/12.6.3_2-3-a-ii-7.js26
-rw-r--r--js/src/tests/test262/ch12/12.6/12.6.3/12.6.3_2-3-a-ii-8.js26
-rw-r--r--js/src/tests/test262/ch12/12.6/12.6.3/12.6.3_2-3-a-ii-9.js26
-rw-r--r--js/src/tests/test262/ch12/12.6/12.6.3/S12.6.3_A1.js36
-rw-r--r--js/src/tests/test262/ch12/12.6/12.6.3/S12.6.3_A10.1.js111
-rw-r--r--js/src/tests/test262/ch12/12.6/12.6.3/S12.6.3_A10.js51
-rw-r--r--js/src/tests/test262/ch12/12.6/12.6.3/S12.6.3_A11.1_T1.js21
-rw-r--r--js/src/tests/test262/ch12/12.6/12.6.3/S12.6.3_A11.1_T2.js63
-rw-r--r--js/src/tests/test262/ch12/12.6/12.6.3/S12.6.3_A11.1_T3.js27
-rw-r--r--js/src/tests/test262/ch12/12.6/12.6.3/S12.6.3_A11_T1.js21
-rw-r--r--js/src/tests/test262/ch12/12.6/12.6.3/S12.6.3_A11_T2.js63
-rw-r--r--js/src/tests/test262/ch12/12.6/12.6.3/S12.6.3_A11_T3.js27
-rw-r--r--js/src/tests/test262/ch12/12.6/12.6.3/S12.6.3_A12.1_T1.js21
-rw-r--r--js/src/tests/test262/ch12/12.6/12.6.3/S12.6.3_A12.1_T2.js64
-rw-r--r--js/src/tests/test262/ch12/12.6/12.6.3/S12.6.3_A12.1_T3.js24
-rw-r--r--js/src/tests/test262/ch12/12.6/12.6.3/S12.6.3_A12_T1.js21
-rw-r--r--js/src/tests/test262/ch12/12.6/12.6.3/S12.6.3_A12_T2.js64
-rw-r--r--js/src/tests/test262/ch12/12.6/12.6.3/S12.6.3_A12_T3.js27
-rw-r--r--js/src/tests/test262/ch12/12.6/12.6.3/S12.6.3_A13.js25
-rw-r--r--js/src/tests/test262/ch12/12.6/12.6.3/S12.6.3_A14.js46
-rw-r--r--js/src/tests/test262/ch12/12.6/12.6.3/S12.6.3_A15.js24
-rw-r--r--js/src/tests/test262/ch12/12.6/12.6.3/S12.6.3_A2.1.js25
-rw-r--r--js/src/tests/test262/ch12/12.6/12.6.3/S12.6.3_A2.2.js25
-rw-r--r--js/src/tests/test262/ch12/12.6/12.6.3/S12.6.3_A2.js33
-rw-r--r--js/src/tests/test262/ch12/12.6/12.6.3/S12.6.3_A3.js41
-rw-r--r--js/src/tests/test262/ch12/12.6/12.6.3/S12.6.3_A4.1.js22
-rw-r--r--js/src/tests/test262/ch12/12.6/12.6.3/S12.6.3_A4_T1.js22
-rw-r--r--js/src/tests/test262/ch12/12.6/12.6.3/S12.6.3_A4_T2.js22
-rw-r--r--js/src/tests/test262/ch12/12.6/12.6.3/S12.6.3_A5.js42
-rw-r--r--js/src/tests/test262/ch12/12.6/12.6.3/S12.6.3_A6.js33
-rw-r--r--js/src/tests/test262/ch12/12.6/12.6.3/S12.6.3_A7.1_T1.js18
-rw-r--r--js/src/tests/test262/ch12/12.6/12.6.3/S12.6.3_A7.1_T2.js18
-rw-r--r--js/src/tests/test262/ch12/12.6/12.6.3/S12.6.3_A7_T1.js18
-rw-r--r--js/src/tests/test262/ch12/12.6/12.6.3/S12.6.3_A7_T2.js18
-rw-r--r--js/src/tests/test262/ch12/12.6/12.6.3/S12.6.3_A8.1_T1.js19
-rw-r--r--js/src/tests/test262/ch12/12.6/12.6.3/S12.6.3_A8.1_T2.js22
-rw-r--r--js/src/tests/test262/ch12/12.6/12.6.3/S12.6.3_A8.1_T3.js22
-rw-r--r--js/src/tests/test262/ch12/12.6/12.6.3/S12.6.3_A8_T1.js19
-rw-r--r--js/src/tests/test262/ch12/12.6/12.6.3/S12.6.3_A8_T2.js19
-rw-r--r--js/src/tests/test262/ch12/12.6/12.6.3/S12.6.3_A8_T3.js22
-rw-r--r--js/src/tests/test262/ch12/12.6/12.6.3/S12.6.3_A9.1.js25
-rw-r--r--js/src/tests/test262/ch12/12.6/12.6.3/S12.6.3_A9.js25
-rw-r--r--js/src/tests/test262/ch12/12.6/12.6.3/browser.js0
-rw-r--r--js/src/tests/test262/ch12/12.6/12.6.3/shell.js0
-rw-r--r--js/src/tests/test262/ch12/12.6/12.6.4/12.6.4-1.js34
-rw-r--r--js/src/tests/test262/ch12/12.6/12.6.4/12.6.4-2.js52
-rw-r--r--js/src/tests/test262/ch12/12.6/12.6.4/S12.6.4_A1.js33
-rw-r--r--js/src/tests/test262/ch12/12.6/12.6.4/S12.6.4_A14_T2.js26
-rw-r--r--js/src/tests/test262/ch12/12.6/12.6.4/S12.6.4_A15.js21
-rw-r--r--js/src/tests/test262/ch12/12.6/12.6.4/S12.6.4_A2.js33
-rw-r--r--js/src/tests/test262/ch12/12.6/12.6.4/S12.6.4_A3.1.js33
-rw-r--r--js/src/tests/test262/ch12/12.6/12.6.4/S12.6.4_A3.js33
-rw-r--r--js/src/tests/test262/ch12/12.6/12.6.4/S12.6.4_A4.1.js34
-rw-r--r--js/src/tests/test262/ch12/12.6/12.6.4/S12.6.4_A4.js34
-rw-r--r--js/src/tests/test262/ch12/12.6/12.6.4/S12.6.4_A5.1.js42
-rw-r--r--js/src/tests/test262/ch12/12.6/12.6.4/S12.6.4_A5.js42
-rw-r--r--js/src/tests/test262/ch12/12.6/12.6.4/S12.6.4_A6.1.js38
-rw-r--r--js/src/tests/test262/ch12/12.6/12.6.4/S12.6.4_A6.js38
-rw-r--r--js/src/tests/test262/ch12/12.6/12.6.4/S12.6.4_A7_T1.js49
-rw-r--r--js/src/tests/test262/ch12/12.6/12.6.4/S12.6.4_A7_T2.js49
-rw-r--r--js/src/tests/test262/ch12/12.6/12.6.4/browser.js0
-rw-r--r--js/src/tests/test262/ch12/12.6/12.6.4/shell.js0
-rw-r--r--js/src/tests/test262/ch12/12.6/browser.js0
-rw-r--r--js/src/tests/test262/ch12/12.6/shell.js0
-rw-r--r--js/src/tests/test262/ch12/12.7/12.7-1.js21
-rw-r--r--js/src/tests/test262/ch12/12.7/S12.7_A1_T1.js19
-rw-r--r--js/src/tests/test262/ch12/12.7/S12.7_A1_T2.js21
-rw-r--r--js/src/tests/test262/ch12/12.7/S12.7_A1_T3.js23
-rw-r--r--js/src/tests/test262/ch12/12.7/S12.7_A1_T4.js22
-rw-r--r--js/src/tests/test262/ch12/12.7/S12.7_A2.js64
-rw-r--r--js/src/tests/test262/ch12/12.7/S12.7_A5_T1.js26
-rw-r--r--js/src/tests/test262/ch12/12.7/S12.7_A5_T2.js26
-rw-r--r--js/src/tests/test262/ch12/12.7/S12.7_A5_T3.js27
-rw-r--r--js/src/tests/test262/ch12/12.7/S12.7_A6.js19
-rw-r--r--js/src/tests/test262/ch12/12.7/S12.7_A7.js29
-rw-r--r--js/src/tests/test262/ch12/12.7/S12.7_A8_T1.js28
-rw-r--r--js/src/tests/test262/ch12/12.7/S12.7_A8_T2.js28
-rw-r--r--js/src/tests/test262/ch12/12.7/S12.7_A9_T1.js32
-rw-r--r--js/src/tests/test262/ch12/12.7/S12.7_A9_T2.js32
-rw-r--r--js/src/tests/test262/ch12/12.7/browser.js0
-rw-r--r--js/src/tests/test262/ch12/12.7/shell.js0
-rw-r--r--js/src/tests/test262/ch12/12.8/12.8-1.js23
-rw-r--r--js/src/tests/test262/ch12/12.8/S12.8_A1_T1.js19
-rw-r--r--js/src/tests/test262/ch12/12.8/S12.8_A1_T2.js21
-rw-r--r--js/src/tests/test262/ch12/12.8/S12.8_A1_T3.js21
-rw-r--r--js/src/tests/test262/ch12/12.8/S12.8_A1_T4.js23
-rw-r--r--js/src/tests/test262/ch12/12.8/S12.8_A2.js64
-rw-r--r--js/src/tests/test262/ch12/12.8/S12.8_A3.js34
-rw-r--r--js/src/tests/test262/ch12/12.8/S12.8_A4_T1.js35
-rw-r--r--js/src/tests/test262/ch12/12.8/S12.8_A4_T2.js41
-rw-r--r--js/src/tests/test262/ch12/12.8/S12.8_A4_T3.js41
-rw-r--r--js/src/tests/test262/ch12/12.8/S12.8_A5_T1.js29
-rw-r--r--js/src/tests/test262/ch12/12.8/S12.8_A5_T2.js29
-rw-r--r--js/src/tests/test262/ch12/12.8/S12.8_A5_T3.js32
-rw-r--r--js/src/tests/test262/ch12/12.8/S12.8_A6.js19
-rw-r--r--js/src/tests/test262/ch12/12.8/S12.8_A7.js29
-rw-r--r--js/src/tests/test262/ch12/12.8/S12.8_A8_T1.js29
-rw-r--r--js/src/tests/test262/ch12/12.8/S12.8_A8_T2.js29
-rw-r--r--js/src/tests/test262/ch12/12.8/S12.8_A9_T1.js32
-rw-r--r--js/src/tests/test262/ch12/12.8/S12.8_A9_T2.js32
-rw-r--r--js/src/tests/test262/ch12/12.8/browser.js0
-rw-r--r--js/src/tests/test262/ch12/12.8/shell.js0
-rw-r--r--js/src/tests/test262/ch12/12.9/12.9-1.js25
-rw-r--r--js/src/tests/test262/ch12/12.9/S12.9_A1_T1.js17
-rw-r--r--js/src/tests/test262/ch12/12.9/S12.9_A1_T10.js17
-rw-r--r--js/src/tests/test262/ch12/12.9/S12.9_A1_T2.js19
-rw-r--r--js/src/tests/test262/ch12/12.9/S12.9_A1_T3.js21
-rw-r--r--js/src/tests/test262/ch12/12.9/S12.9_A1_T4.js17
-rw-r--r--js/src/tests/test262/ch12/12.9/S12.9_A1_T5.js21
-rw-r--r--js/src/tests/test262/ch12/12.9/S12.9_A1_T6.js21
-rw-r--r--js/src/tests/test262/ch12/12.9/S12.9_A1_T7.js21
-rw-r--r--js/src/tests/test262/ch12/12.9/S12.9_A1_T8.js21
-rw-r--r--js/src/tests/test262/ch12/12.9/S12.9_A1_T9.js21
-rw-r--r--js/src/tests/test262/ch12/12.9/S12.9_A2.js55
-rw-r--r--js/src/tests/test262/ch12/12.9/S12.9_A3.js20
-rw-r--r--js/src/tests/test262/ch12/12.9/S12.9_A4.js28
-rw-r--r--js/src/tests/test262/ch12/12.9/S12.9_A5.js40
-rw-r--r--js/src/tests/test262/ch12/12.9/browser.js0
-rw-r--r--js/src/tests/test262/ch12/12.9/shell.js0
-rw-r--r--js/src/tests/test262/ch12/browser.js0
-rw-r--r--js/src/tests/test262/ch12/shell.js0
-rw-r--r--js/src/tests/test262/ch13/13.0/13.0-1.js20
-rw-r--r--js/src/tests/test262/ch13/13.0/13.0-10-s.js32
-rw-r--r--js/src/tests/test262/ch13/13.0/13.0-11-s.js32
-rw-r--r--js/src/tests/test262/ch13/13.0/13.0-12-s.js24
-rw-r--r--js/src/tests/test262/ch13/13.0/13.0-13-s.js25
-rw-r--r--js/src/tests/test262/ch13/13.0/13.0-14-s.js26
-rw-r--r--js/src/tests/test262/ch13/13.0/13.0-15-s.js26
-rw-r--r--js/src/tests/test262/ch13/13.0/13.0-16-s.js26
-rw-r--r--js/src/tests/test262/ch13/13.0/13.0-17-s.js21
-rw-r--r--js/src/tests/test262/ch13/13.0/13.0-2.js20
-rw-r--r--js/src/tests/test262/ch13/13.0/13.0-3.js21
-rw-r--r--js/src/tests/test262/ch13/13.0/13.0-4.js22
-rw-r--r--js/src/tests/test262/ch13/13.0/13.0-7-s.js26
-rw-r--r--js/src/tests/test262/ch13/13.0/13.0-8-s.js27
-rw-r--r--js/src/tests/test262/ch13/13.0/13.0-9-s.js30
-rw-r--r--js/src/tests/test262/ch13/13.0/13.0_4-17gs.js16
-rw-r--r--js/src/tests/test262/ch13/13.0/13.0_4-5gs.js16
-rw-r--r--js/src/tests/test262/ch13/13.0/S13_A1.js31
-rw-r--r--js/src/tests/test262/ch13/13.0/S13_A10.js32
-rw-r--r--js/src/tests/test262/ch13/13.0/S13_A11_T1.js20
-rw-r--r--js/src/tests/test262/ch13/13.0/S13_A11_T2.js23
-rw-r--r--js/src/tests/test262/ch13/13.0/S13_A11_T3.js25
-rw-r--r--js/src/tests/test262/ch13/13.0/S13_A11_T4.js28
-rw-r--r--js/src/tests/test262/ch13/13.0/S13_A12_T1.js32
-rw-r--r--js/src/tests/test262/ch13/13.0/S13_A12_T2.js37
-rw-r--r--js/src/tests/test262/ch13/13.0/S13_A13_T1.js26
-rw-r--r--js/src/tests/test262/ch13/13.0/S13_A13_T2.js27
-rw-r--r--js/src/tests/test262/ch13/13.0/S13_A13_T3.js31
-rw-r--r--js/src/tests/test262/ch13/13.0/S13_A14.js20
-rw-r--r--js/src/tests/test262/ch13/13.0/S13_A15_T1.js22
-rw-r--r--js/src/tests/test262/ch13/13.0/S13_A15_T2.js25
-rw-r--r--js/src/tests/test262/ch13/13.0/S13_A15_T3.js35
-rw-r--r--js/src/tests/test262/ch13/13.0/S13_A15_T4.js25
-rw-r--r--js/src/tests/test262/ch13/13.0/S13_A15_T5.js34
-rw-r--r--js/src/tests/test262/ch13/13.0/S13_A16.js44
-rw-r--r--js/src/tests/test262/ch13/13.0/S13_A17_T1.js45
-rw-r--r--js/src/tests/test262/ch13/13.0/S13_A17_T2.js46
-rw-r--r--js/src/tests/test262/ch13/13.0/S13_A18.js32
-rw-r--r--js/src/tests/test262/ch13/13.0/S13_A19_T1.js32
-rw-r--r--js/src/tests/test262/ch13/13.0/S13_A19_T2.js35
-rw-r--r--js/src/tests/test262/ch13/13.0/S13_A2_T1.js29
-rw-r--r--js/src/tests/test262/ch13/13.0/S13_A2_T2.js29
-rw-r--r--js/src/tests/test262/ch13/13.0/S13_A2_T3.js29
-rw-r--r--js/src/tests/test262/ch13/13.0/S13_A3_T1.js29
-rw-r--r--js/src/tests/test262/ch13/13.0/S13_A3_T2.js29
-rw-r--r--js/src/tests/test262/ch13/13.0/S13_A3_T3.js28
-rw-r--r--js/src/tests/test262/ch13/13.0/S13_A4_T1.js28
-rw-r--r--js/src/tests/test262/ch13/13.0/S13_A4_T2.js28
-rw-r--r--js/src/tests/test262/ch13/13.0/S13_A4_T3.js28
-rw-r--r--js/src/tests/test262/ch13/13.0/S13_A4_T4.js46
-rw-r--r--js/src/tests/test262/ch13/13.0/S13_A6_T1.js36
-rw-r--r--js/src/tests/test262/ch13/13.0/S13_A6_T2.js36
-rw-r--r--js/src/tests/test262/ch13/13.0/S13_A7_T1.js73
-rw-r--r--js/src/tests/test262/ch13/13.0/S13_A7_T2.js49
-rw-r--r--js/src/tests/test262/ch13/13.0/S13_A7_T3.js13
-rw-r--r--js/src/tests/test262/ch13/13.0/S13_A8_T1.js33
-rw-r--r--js/src/tests/test262/ch13/13.0/S13_A8_T2.js38
-rw-r--r--js/src/tests/test262/ch13/13.0/S13_A9.js22
-rw-r--r--js/src/tests/test262/ch13/13.0/browser.js0
-rw-r--r--js/src/tests/test262/ch13/13.0/shell.js0
-rw-r--r--js/src/tests/test262/ch13/13.1/13.1-1-1.js21
-rw-r--r--js/src/tests/test262/ch13/13.1/13.1-1-2.js21
-rw-r--r--js/src/tests/test262/ch13/13.1/13.1-1-s.js27
-rw-r--r--js/src/tests/test262/ch13/13.1/13.1-10-s.js27
-rw-r--r--js/src/tests/test262/ch13/13.1/13.1-11-s.js22
-rw-r--r--js/src/tests/test262/ch13/13.1/13.1-12-s.js24
-rw-r--r--js/src/tests/test262/ch13/13.1/13.1-13-s.js23
-rw-r--r--js/src/tests/test262/ch13/13.1/13.1-13gs.js14
-rw-r--r--js/src/tests/test262/ch13/13.1/13.1-14-s.js24
-rw-r--r--js/src/tests/test262/ch13/13.1/13.1-15-s.js26
-rw-r--r--js/src/tests/test262/ch13/13.1/13.1-16-s.js26
-rw-r--r--js/src/tests/test262/ch13/13.1/13.1-17-s.js26
-rw-r--r--js/src/tests/test262/ch13/13.1/13.1-18-s.js26
-rw-r--r--js/src/tests/test262/ch13/13.1/13.1-19-s.js26
-rw-r--r--js/src/tests/test262/ch13/13.1/13.1-1gs.js14
-rw-r--r--js/src/tests/test262/ch13/13.1/13.1-2-1.js21
-rw-r--r--js/src/tests/test262/ch13/13.1/13.1-2-2.js17
-rw-r--r--js/src/tests/test262/ch13/13.1/13.1-2-5.js21
-rw-r--r--js/src/tests/test262/ch13/13.1/13.1-2-6.js17
-rw-r--r--js/src/tests/test262/ch13/13.1/13.1-2-s.js27
-rw-r--r--js/src/tests/test262/ch13/13.1/13.1-20-s.js26
-rw-r--r--js/src/tests/test262/ch13/13.1/13.1-21-s.js26
-rw-r--r--js/src/tests/test262/ch13/13.1/13.1-22-s.js26
-rw-r--r--js/src/tests/test262/ch13/13.1/13.1-23-s.js26
-rw-r--r--js/src/tests/test262/ch13/13.1/13.1-24-s.js26
-rw-r--r--js/src/tests/test262/ch13/13.1/13.1-25-s.js26
-rw-r--r--js/src/tests/test262/ch13/13.1/13.1-26-s.js26
-rw-r--r--js/src/tests/test262/ch13/13.1/13.1-27-s.js26
-rw-r--r--js/src/tests/test262/ch13/13.1/13.1-28-s.js27
-rw-r--r--js/src/tests/test262/ch13/13.1/13.1-29-s.js26
-rw-r--r--js/src/tests/test262/ch13/13.1/13.1-3-1.js21
-rw-r--r--js/src/tests/test262/ch13/13.1/13.1-3-2.js21
-rw-r--r--js/src/tests/test262/ch13/13.1/13.1-3-7.js21
-rw-r--r--js/src/tests/test262/ch13/13.1/13.1-3-8.js21
-rw-r--r--js/src/tests/test262/ch13/13.1/13.1-3-s.js27
-rw-r--r--js/src/tests/test262/ch13/13.1/13.1-30-s.js26
-rw-r--r--js/src/tests/test262/ch13/13.1/13.1-31-s.js26
-rw-r--r--js/src/tests/test262/ch13/13.1/13.1-32-s.js26
-rw-r--r--js/src/tests/test262/ch13/13.1/13.1-33-s.js26
-rw-r--r--js/src/tests/test262/ch13/13.1/13.1-34-s.js26
-rw-r--r--js/src/tests/test262/ch13/13.1/13.1-35-s.js22
-rw-r--r--js/src/tests/test262/ch13/13.1/13.1-36-s.js22
-rw-r--r--js/src/tests/test262/ch13/13.1/13.1-37-s.js22
-rw-r--r--js/src/tests/test262/ch13/13.1/13.1-38-s.js22
-rw-r--r--js/src/tests/test262/ch13/13.1/13.1-39-s.js22
-rw-r--r--js/src/tests/test262/ch13/13.1/13.1-4-s.js27
-rw-r--r--js/src/tests/test262/ch13/13.1/13.1-40-s.js22
-rw-r--r--js/src/tests/test262/ch13/13.1/13.1-41-s.js22
-rw-r--r--js/src/tests/test262/ch13/13.1/13.1-42-s.js22
-rw-r--r--js/src/tests/test262/ch13/13.1/13.1-4gs.js14
-rw-r--r--js/src/tests/test262/ch13/13.1/13.1-5-s.js27
-rw-r--r--js/src/tests/test262/ch13/13.1/13.1-5gs.js14
-rw-r--r--js/src/tests/test262/ch13/13.1/13.1-6-s.js27
-rw-r--r--js/src/tests/test262/ch13/13.1/13.1-7-s.js27
-rw-r--r--js/src/tests/test262/ch13/13.1/13.1-8-s.js27
-rw-r--r--js/src/tests/test262/ch13/13.1/13.1-8gs.js14
-rw-r--r--js/src/tests/test262/ch13/13.1/13.1-9-s.js27
-rw-r--r--js/src/tests/test262/ch13/13.1/browser.js0
-rw-r--r--js/src/tests/test262/ch13/13.1/shell.js0
-rw-r--r--js/src/tests/test262/ch13/13.2/13.2-1-s.js22
-rw-r--r--js/src/tests/test262/ch13/13.2/13.2-10-s.js24
-rw-r--r--js/src/tests/test262/ch13/13.2/13.2-11-s.js24
-rw-r--r--js/src/tests/test262/ch13/13.2/13.2-12-s.js18
-rw-r--r--js/src/tests/test262/ch13/13.2/13.2-13-s.js24
-rw-r--r--js/src/tests/test262/ch13/13.2/13.2-14-s.js24
-rw-r--r--js/src/tests/test262/ch13/13.2/13.2-15-1.js35
-rw-r--r--js/src/tests/test262/ch13/13.2/13.2-15-s.js24
-rw-r--r--js/src/tests/test262/ch13/13.2/13.2-16-s.js18
-rw-r--r--js/src/tests/test262/ch13/13.2/13.2-17-1.js55
-rw-r--r--js/src/tests/test262/ch13/13.2/13.2-17-s.js24
-rw-r--r--js/src/tests/test262/ch13/13.2/13.2-18-1.js53
-rw-r--r--js/src/tests/test262/ch13/13.2/13.2-18-s.js24
-rw-r--r--js/src/tests/test262/ch13/13.2/13.2-19-b-3gs.js15
-rw-r--r--js/src/tests/test262/ch13/13.2/13.2-19-s.js24
-rw-r--r--js/src/tests/test262/ch13/13.2/13.2-2-s.js24
-rw-r--r--js/src/tests/test262/ch13/13.2/13.2-20-s.js18
-rw-r--r--js/src/tests/test262/ch13/13.2/13.2-21-s.js24
-rw-r--r--js/src/tests/test262/ch13/13.2/13.2-22-s.js24
-rw-r--r--js/src/tests/test262/ch13/13.2/13.2-23-s.js23
-rw-r--r--js/src/tests/test262/ch13/13.2/13.2-24-s.js26
-rw-r--r--js/src/tests/test262/ch13/13.2/13.2-25-s.js24
-rw-r--r--js/src/tests/test262/ch13/13.2/13.2-26-s.js24
-rw-r--r--js/src/tests/test262/ch13/13.2/13.2-27-s.js24
-rw-r--r--js/src/tests/test262/ch13/13.2/13.2-28-s.js26
-rw-r--r--js/src/tests/test262/ch13/13.2/13.2-29-s.js19
-rw-r--r--js/src/tests/test262/ch13/13.2/13.2-3-s.js22
-rw-r--r--js/src/tests/test262/ch13/13.2/13.2-30-s.js18
-rw-r--r--js/src/tests/test262/ch13/13.2/13.2-31-s.js18
-rw-r--r--js/src/tests/test262/ch13/13.2/13.2-32-s.js19
-rw-r--r--js/src/tests/test262/ch13/13.2/13.2-33-s.js19
-rw-r--r--js/src/tests/test262/ch13/13.2/13.2-34-s.js18
-rw-r--r--js/src/tests/test262/ch13/13.2/13.2-35-s.js18
-rw-r--r--js/src/tests/test262/ch13/13.2/13.2-36-s.js19
-rw-r--r--js/src/tests/test262/ch13/13.2/13.2-4-s.js24
-rw-r--r--js/src/tests/test262/ch13/13.2/13.2-5-s.js23
-rw-r--r--js/src/tests/test262/ch13/13.2/13.2-6-s.js24
-rw-r--r--js/src/tests/test262/ch13/13.2/13.2-7-s.js23
-rw-r--r--js/src/tests/test262/ch13/13.2/13.2-8-s.js17
-rw-r--r--js/src/tests/test262/ch13/13.2/13.2-9-s.js24
-rw-r--r--js/src/tests/test262/ch13/13.2/S13.2.1_A1_T1.js74
-rw-r--r--js/src/tests/test262/ch13/13.2/S13.2.1_A4_T1.js27
-rw-r--r--js/src/tests/test262/ch13/13.2/S13.2.1_A4_T2.js27
-rw-r--r--js/src/tests/test262/ch13/13.2/S13.2.1_A4_T3.js27
-rw-r--r--js/src/tests/test262/ch13/13.2/S13.2.1_A4_T4.js27
-rw-r--r--js/src/tests/test262/ch13/13.2/S13.2.1_A5_T1.js30
-rw-r--r--js/src/tests/test262/ch13/13.2/S13.2.1_A5_T2.js27
-rw-r--r--js/src/tests/test262/ch13/13.2/S13.2.1_A6_T1.js31
-rw-r--r--js/src/tests/test262/ch13/13.2/S13.2.1_A6_T2.js31
-rw-r--r--js/src/tests/test262/ch13/13.2/S13.2.1_A7_T1.js27
-rw-r--r--js/src/tests/test262/ch13/13.2/S13.2.1_A7_T2.js27
-rw-r--r--js/src/tests/test262/ch13/13.2/S13.2.1_A7_T3.js55
-rw-r--r--js/src/tests/test262/ch13/13.2/S13.2.1_A7_T4.js58
-rw-r--r--js/src/tests/test262/ch13/13.2/S13.2.1_A8_T1.js27
-rw-r--r--js/src/tests/test262/ch13/13.2/S13.2.1_A8_T2.js29
-rw-r--r--js/src/tests/test262/ch13/13.2/S13.2.1_A9.1_T1.js33
-rw-r--r--js/src/tests/test262/ch13/13.2/S13.2.1_A9.1_T2.js33
-rw-r--r--js/src/tests/test262/ch13/13.2/S13.2.1_A9_T1.js34
-rw-r--r--js/src/tests/test262/ch13/13.2/S13.2.1_A9_T2.js34
-rw-r--r--js/src/tests/test262/ch13/13.2/S13.2.2_A10.js38
-rw-r--r--js/src/tests/test262/ch13/13.2/S13.2.2_A11.js32
-rw-r--r--js/src/tests/test262/ch13/13.2/S13.2.2_A12.js38
-rw-r--r--js/src/tests/test262/ch13/13.2/S13.2.2_A13.js29
-rw-r--r--js/src/tests/test262/ch13/13.2/S13.2.2_A14.js29
-rw-r--r--js/src/tests/test262/ch13/13.2/S13.2.2_A15_T1.js45
-rw-r--r--js/src/tests/test262/ch13/13.2/S13.2.2_A15_T2.js45
-rw-r--r--js/src/tests/test262/ch13/13.2/S13.2.2_A15_T3.js45
-rw-r--r--js/src/tests/test262/ch13/13.2/S13.2.2_A15_T4.js46
-rw-r--r--js/src/tests/test262/ch13/13.2/S13.2.2_A16_T1.js36
-rw-r--r--js/src/tests/test262/ch13/13.2/S13.2.2_A16_T2.js36
-rw-r--r--js/src/tests/test262/ch13/13.2/S13.2.2_A16_T3.js44
-rw-r--r--js/src/tests/test262/ch13/13.2/S13.2.2_A17_T2.js72
-rw-r--r--js/src/tests/test262/ch13/13.2/S13.2.2_A17_T3.js68
-rw-r--r--js/src/tests/test262/ch13/13.2/S13.2.2_A18_T1.js54
-rw-r--r--js/src/tests/test262/ch13/13.2/S13.2.2_A18_T2.js57
-rw-r--r--js/src/tests/test262/ch13/13.2/S13.2.2_A19_T1.js29
-rw-r--r--js/src/tests/test262/ch13/13.2/S13.2.2_A19_T2.js27
-rw-r--r--js/src/tests/test262/ch13/13.2/S13.2.2_A19_T3.js37
-rw-r--r--js/src/tests/test262/ch13/13.2/S13.2.2_A19_T4.js39
-rw-r--r--js/src/tests/test262/ch13/13.2/S13.2.2_A19_T5.js40
-rw-r--r--js/src/tests/test262/ch13/13.2/S13.2.2_A19_T6.js46
-rw-r--r--js/src/tests/test262/ch13/13.2/S13.2.2_A19_T7.js54
-rw-r--r--js/src/tests/test262/ch13/13.2/S13.2.2_A19_T8.js74
-rw-r--r--js/src/tests/test262/ch13/13.2/S13.2.2_A1_T1.js44
-rw-r--r--js/src/tests/test262/ch13/13.2/S13.2.2_A1_T2.js44
-rw-r--r--js/src/tests/test262/ch13/13.2/S13.2.2_A2.js42
-rw-r--r--js/src/tests/test262/ch13/13.2/S13.2.2_A3_T1.js35
-rw-r--r--js/src/tests/test262/ch13/13.2/S13.2.2_A3_T2.js35
-rw-r--r--js/src/tests/test262/ch13/13.2/S13.2.2_A4_T1.js38
-rw-r--r--js/src/tests/test262/ch13/13.2/S13.2.2_A4_T2.js38
-rw-r--r--js/src/tests/test262/ch13/13.2/S13.2.2_A5_T1.js80
-rw-r--r--js/src/tests/test262/ch13/13.2/S13.2.2_A5_T2.js80
-rw-r--r--js/src/tests/test262/ch13/13.2/S13.2.2_A6_T1.js41
-rw-r--r--js/src/tests/test262/ch13/13.2/S13.2.2_A6_T2.js41
-rw-r--r--js/src/tests/test262/ch13/13.2/S13.2.2_A7_T1.js42
-rw-r--r--js/src/tests/test262/ch13/13.2/S13.2.2_A7_T2.js42
-rw-r--r--js/src/tests/test262/ch13/13.2/S13.2.2_A8_T1.js54
-rw-r--r--js/src/tests/test262/ch13/13.2/S13.2.2_A8_T2.js52
-rw-r--r--js/src/tests/test262/ch13/13.2/S13.2.2_A8_T3.js52
-rw-r--r--js/src/tests/test262/ch13/13.2/S13.2.2_A9.js31
-rw-r--r--js/src/tests/test262/ch13/13.2/S13.2.3_A1.js61
-rw-r--r--js/src/tests/test262/ch13/13.2/S13.2_A1_T1.js20
-rw-r--r--js/src/tests/test262/ch13/13.2/S13.2_A1_T2.js20
-rw-r--r--js/src/tests/test262/ch13/13.2/S13.2_A2_T1.js28
-rw-r--r--js/src/tests/test262/ch13/13.2/S13.2_A2_T2.js30
-rw-r--r--js/src/tests/test262/ch13/13.2/S13.2_A3.js31
-rw-r--r--js/src/tests/test262/ch13/13.2/S13.2_A4_T1.js52
-rw-r--r--js/src/tests/test262/ch13/13.2/S13.2_A4_T2.js52
-rw-r--r--js/src/tests/test262/ch13/13.2/S13.2_A5.js34
-rw-r--r--js/src/tests/test262/ch13/13.2/S13.2_A6_T1.js13
-rw-r--r--js/src/tests/test262/ch13/13.2/S13.2_A6_T2.js13
-rw-r--r--js/src/tests/test262/ch13/13.2/S13.2_A7_T1.js14
-rw-r--r--js/src/tests/test262/ch13/13.2/S13.2_A7_T2.js14
-rw-r--r--js/src/tests/test262/ch13/13.2/S13.2_A8_T1.js14
-rw-r--r--js/src/tests/test262/ch13/13.2/S13.2_A8_T2.js14
-rw-r--r--js/src/tests/test262/ch13/13.2/browser.js0
-rw-r--r--js/src/tests/test262/ch13/13.2/shell.js0
-rw-r--r--js/src/tests/test262/ch13/browser.js0
-rw-r--r--js/src/tests/test262/ch13/shell.js0
-rw-r--r--js/src/tests/test262/ch14/14.0/S14_A1.js35
-rw-r--r--js/src/tests/test262/ch14/14.0/S14_A2.js31
-rw-r--r--js/src/tests/test262/ch14/14.0/S14_A3.js30
-rw-r--r--js/src/tests/test262/ch14/14.0/S14_A5_T1.js22
-rw-r--r--js/src/tests/test262/ch14/14.0/S14_A5_T2.js21
-rw-r--r--js/src/tests/test262/ch14/14.0/browser.js0
-rw-r--r--js/src/tests/test262/ch14/14.0/shell.js0
-rw-r--r--js/src/tests/test262/ch14/14.1/14.1-1-s.js23
-rw-r--r--js/src/tests/test262/ch14/14.1/14.1-10-s.js24
-rw-r--r--js/src/tests/test262/ch14/14.1/14.1-11-s.js26
-rw-r--r--js/src/tests/test262/ch14/14.1/14.1-12-s.js24
-rw-r--r--js/src/tests/test262/ch14/14.1/14.1-13-s.js23
-rw-r--r--js/src/tests/test262/ch14/14.1/14.1-14-s.js24
-rw-r--r--js/src/tests/test262/ch14/14.1/14.1-15-s.js29
-rw-r--r--js/src/tests/test262/ch14/14.1/14.1-16-s.js23
-rw-r--r--js/src/tests/test262/ch14/14.1/14.1-17-s.js23
-rw-r--r--js/src/tests/test262/ch14/14.1/14.1-2-s.js23
-rw-r--r--js/src/tests/test262/ch14/14.1/14.1-3-s.js23
-rw-r--r--js/src/tests/test262/ch14/14.1/14.1-4-s.js24
-rw-r--r--js/src/tests/test262/ch14/14.1/14.1-4gs.js14
-rw-r--r--js/src/tests/test262/ch14/14.1/14.1-5-s.js23
-rw-r--r--js/src/tests/test262/ch14/14.1/14.1-5gs.js16
-rw-r--r--js/src/tests/test262/ch14/14.1/14.1-6-s.js23
-rw-r--r--js/src/tests/test262/ch14/14.1/14.1-7-s.js23
-rw-r--r--js/src/tests/test262/ch14/14.1/14.1-8-s.js24
-rw-r--r--js/src/tests/test262/ch14/14.1/14.1-9-s.js24
-rw-r--r--js/src/tests/test262/ch14/14.1/browser.js0
-rw-r--r--js/src/tests/test262/ch14/14.1/shell.js0
-rw-r--r--js/src/tests/test262/ch14/browser.js0
-rw-r--r--js/src/tests/test262/ch14/shell.js0
-rw-r--r--js/src/tests/test262/intl402/browser.js1315
-rw-r--r--js/src/tests/test262/intl402/ch06/6.2/6.2.2_a.js40
-rw-r--r--js/src/tests/test262/intl402/ch06/6.2/6.2.2_b.js41
-rw-r--r--js/src/tests/test262/intl402/ch06/6.2/6.2.2_c.js47
-rw-r--r--js/src/tests/test262/intl402/ch06/6.2/6.2.3.js69
-rw-r--r--js/src/tests/test262/intl402/ch06/6.2/6.2.4.js19
-rw-r--r--js/src/tests/test262/intl402/ch06/6.2/browser.js0
-rw-r--r--js/src/tests/test262/intl402/ch06/6.2/shell.js0
-rw-r--r--js/src/tests/test262/intl402/ch06/6.3/6.3.1_a.js25
-rw-r--r--js/src/tests/test262/intl402/ch06/6.3/6.3.1_b.js35
-rw-r--r--js/src/tests/test262/intl402/ch06/6.3/browser.js0
-rw-r--r--js/src/tests/test262/intl402/ch06/6.3/shell.js0
-rw-r--r--js/src/tests/test262/intl402/ch06/6.4/6.4_a.js22
-rw-r--r--js/src/tests/test262/intl402/ch06/6.4/6.4_b.js34
-rw-r--r--js/src/tests/test262/intl402/ch06/6.4/6.4_c.js36
-rw-r--r--js/src/tests/test262/intl402/ch06/6.4/browser.js0
-rw-r--r--js/src/tests/test262/intl402/ch06/6.4/shell.js0
-rw-r--r--js/src/tests/test262/intl402/ch06/browser.js0
-rw-r--r--js/src/tests/test262/intl402/ch06/shell.js0
-rw-r--r--js/src/tests/test262/intl402/ch08/8.0/8.0.js12
-rw-r--r--js/src/tests/test262/intl402/ch08/8.0/8.0_L15.js15
-rw-r--r--js/src/tests/test262/intl402/ch08/8.0/browser.js0
-rw-r--r--js/src/tests/test262/intl402/ch08/8.0/shell.js0
-rw-r--r--js/src/tests/test262/intl402/ch08/browser.js0
-rw-r--r--js/src/tests/test262/intl402/ch08/shell.js0
-rw-r--r--js/src/tests/test262/intl402/ch09/9.1/9.1_a.js18
-rw-r--r--js/src/tests/test262/intl402/ch09/9.1/9.1_b.js32
-rw-r--r--js/src/tests/test262/intl402/ch09/9.1/browser.js0
-rw-r--r--js/src/tests/test262/intl402/ch09/9.1/shell.js0
-rw-r--r--js/src/tests/test262/intl402/ch09/9.2/9.2.1_1.js23
-rw-r--r--js/src/tests/test262/intl402/ch09/9.2/9.2.1_2.js21
-rw-r--r--js/src/tests/test262/intl402/ch09/9.2/9.2.1_3.js87
-rw-r--r--js/src/tests/test262/intl402/ch09/9.2/9.2.1_4.js46
-rw-r--r--js/src/tests/test262/intl402/ch09/9.2/9.2.1_8_c_ii.js30
-rw-r--r--js/src/tests/test262/intl402/ch09/9.2/9.2.1_8_c_vi.js18
-rw-r--r--js/src/tests/test262/intl402/ch09/9.2/9.2.2.js45
-rw-r--r--js/src/tests/test262/intl402/ch09/9.2/9.2.3_5.js22
-rw-r--r--js/src/tests/test262/intl402/ch09/9.2/9.2.5_11_g_ii_2.js26
-rw-r--r--js/src/tests/test262/intl402/ch09/9.2/9.2.5_6.js22
-rw-r--r--js/src/tests/test262/intl402/ch09/9.2/9.2.6_2.js27
-rw-r--r--js/src/tests/test262/intl402/ch09/9.2/9.2.6_4.js23
-rw-r--r--js/src/tests/test262/intl402/ch09/9.2/9.2.6_4_b.js47
-rw-r--r--js/src/tests/test262/intl402/ch09/9.2/9.2.6_4_c.js32
-rw-r--r--js/src/tests/test262/intl402/ch09/9.2/9.2.8_1_c.js36
-rw-r--r--js/src/tests/test262/intl402/ch09/9.2/9.2.8_4.js35
-rw-r--r--js/src/tests/test262/intl402/ch09/9.2/browser.js0
-rw-r--r--js/src/tests/test262/intl402/ch09/9.2/shell.js0
-rw-r--r--js/src/tests/test262/intl402/ch09/browser.js0
-rw-r--r--js/src/tests/test262/intl402/ch09/shell.js0
-rw-r--r--js/src/tests/test262/intl402/ch10/10.1/10.1.1_1.js43
-rw-r--r--js/src/tests/test262/intl402/ch10/10.1/10.1.1_10.js18
-rw-r--r--js/src/tests/test262/intl402/ch10/10.1/10.1.1_11.js12
-rw-r--r--js/src/tests/test262/intl402/ch10/10.1/10.1.1_13.js13
-rw-r--r--js/src/tests/test262/intl402/ch10/10.1/10.1.1_19_b.js44
-rw-r--r--js/src/tests/test262/intl402/ch10/10.1/10.1.1_19_c.js63
-rw-r--r--js/src/tests/test262/intl402/ch10/10.1/10.1.1_20.js13
-rw-r--r--js/src/tests/test262/intl402/ch10/10.1/10.1.1_23.js13
-rw-r--r--js/src/tests/test262/intl402/ch10/10.1/10.1.1_6.js12
-rw-r--r--js/src/tests/test262/intl402/ch10/10.1/10.1.1_a.js14
-rw-r--r--js/src/tests/test262/intl402/ch10/10.1/10.1.2.1_4.js21
-rw-r--r--js/src/tests/test262/intl402/ch10/10.1/10.1.2_a.js30
-rw-r--r--js/src/tests/test262/intl402/ch10/10.1/10.1.3.js19
-rw-r--r--js/src/tests/test262/intl402/ch10/10.1/10.1_L15.js14
-rw-r--r--js/src/tests/test262/intl402/ch10/10.1/browser.js0
-rw-r--r--js/src/tests/test262/intl402/ch10/10.1/shell.js0
-rw-r--r--js/src/tests/test262/intl402/ch10/10.2/10.2.1.js22
-rw-r--r--js/src/tests/test262/intl402/ch10/10.2/10.2.2_L15.js14
-rw-r--r--js/src/tests/test262/intl402/ch10/10.2/10.2.2_a.js27
-rw-r--r--js/src/tests/test262/intl402/ch10/10.2/10.2.2_b.js13
-rw-r--r--js/src/tests/test262/intl402/ch10/10.2/10.2.3_b.js52
-rw-r--r--js/src/tests/test262/intl402/ch10/10.2/browser.js0
-rw-r--r--js/src/tests/test262/intl402/ch10/10.2/shell.js0
-rw-r--r--js/src/tests/test262/intl402/ch10/10.3/10.3.1.js13
-rw-r--r--js/src/tests/test262/intl402/ch10/10.3/10.3.2_1_a_L15.js14
-rw-r--r--js/src/tests/test262/intl402/ch10/10.3/10.3.2_1_c.js36
-rw-r--r--js/src/tests/test262/intl402/ch10/10.3/10.3.2_CS_a.js68
-rw-r--r--js/src/tests/test262/intl402/ch10/10.3/10.3.2_CS_b_NN.js22
-rw-r--r--js/src/tests/test262/intl402/ch10/10.3/10.3.2_CS_c_NN.js22
-rw-r--r--js/src/tests/test262/intl402/ch10/10.3/10.3.2_CS_d_NN.js34
-rw-r--r--js/src/tests/test262/intl402/ch10/10.3/10.3.2_L15.js14
-rw-r--r--js/src/tests/test262/intl402/ch10/10.3/10.3.3.js47
-rw-r--r--js/src/tests/test262/intl402/ch10/10.3/10.3.3_L15.js14
-rw-r--r--js/src/tests/test262/intl402/ch10/10.3/10.3_L15.js14
-rw-r--r--js/src/tests/test262/intl402/ch10/10.3/10.3_a.js15
-rw-r--r--js/src/tests/test262/intl402/ch10/10.3/10.3_b.js33
-rw-r--r--js/src/tests/test262/intl402/ch10/10.3/browser.js0
-rw-r--r--js/src/tests/test262/intl402/ch10/10.3/shell.js0
-rw-r--r--js/src/tests/test262/intl402/ch10/10.4/10.4_a.js15
-rw-r--r--js/src/tests/test262/intl402/ch10/10.4/browser.js0
-rw-r--r--js/src/tests/test262/intl402/ch10/10.4/shell.js0
-rw-r--r--js/src/tests/test262/intl402/ch10/browser.js0
-rw-r--r--js/src/tests/test262/intl402/ch10/shell.js0
-rw-r--r--js/src/tests/test262/intl402/ch11/11.1/11.1.1_1.js43
-rw-r--r--js/src/tests/test262/intl402/ch11/11.1/11.1.1_15.js13
-rw-r--r--js/src/tests/test262/intl402/ch11/11.1/11.1.1_17.js81
-rw-r--r--js/src/tests/test262/intl402/ch11/11.1/11.1.1_19.js31
-rw-r--r--js/src/tests/test262/intl402/ch11/11.1/11.1.1_20_c.js196
-rw-r--r--js/src/tests/test262/intl402/ch11/11.1/11.1.1_21.js15
-rw-r--r--js/src/tests/test262/intl402/ch11/11.1/11.1.1_32.js44
-rw-r--r--js/src/tests/test262/intl402/ch11/11.1/11.1.1_34.js12
-rw-r--r--js/src/tests/test262/intl402/ch11/11.1/11.1.1_6.js18
-rw-r--r--js/src/tests/test262/intl402/ch11/11.1/11.1.1_7.js12
-rw-r--r--js/src/tests/test262/intl402/ch11/11.1/11.1.1_a.js18
-rw-r--r--js/src/tests/test262/intl402/ch11/11.1/11.1.2.1_4.js21
-rw-r--r--js/src/tests/test262/intl402/ch11/11.1/11.1.2.js30
-rw-r--r--js/src/tests/test262/intl402/ch11/11.1/11.1.3.js19
-rw-r--r--js/src/tests/test262/intl402/ch11/11.1/11.1_L15.js14
-rw-r--r--js/src/tests/test262/intl402/ch11/11.1/browser.js0
-rw-r--r--js/src/tests/test262/intl402/ch11/11.1/shell.js0
-rw-r--r--js/src/tests/test262/intl402/ch11/11.2/11.2.1.js22
-rw-r--r--js/src/tests/test262/intl402/ch11/11.2/11.2.2_L15.js14
-rw-r--r--js/src/tests/test262/intl402/ch11/11.2/11.2.2_a.js28
-rw-r--r--js/src/tests/test262/intl402/ch11/11.2/11.2.2_b.js13
-rw-r--r--js/src/tests/test262/intl402/ch11/11.2/11.2.3_b.js46
-rw-r--r--js/src/tests/test262/intl402/ch11/11.2/browser.js0
-rw-r--r--js/src/tests/test262/intl402/ch11/11.2/shell.js0
-rw-r--r--js/src/tests/test262/intl402/ch11/11.3/11.3.1.js14
-rw-r--r--js/src/tests/test262/intl402/ch11/11.3/11.3.2_1_a_L15.js14
-rw-r--r--js/src/tests/test262/intl402/ch11/11.3/11.3.2_1_a_ii.js27
-rw-r--r--js/src/tests/test262/intl402/ch11/11.3/11.3.2_1_c.js41
-rw-r--r--js/src/tests/test262/intl402/ch11/11.3/11.3.2_FN_1.js19
-rw-r--r--js/src/tests/test262/intl402/ch11/11.3/11.3.2_FN_2.js59
-rw-r--r--js/src/tests/test262/intl402/ch11/11.3/11.3.2_FN_3_b.js27
-rw-r--r--js/src/tests/test262/intl402/ch11/11.3/11.3.2_FN_3_e.js47
-rw-r--r--js/src/tests/test262/intl402/ch11/11.3/11.3.2_L15.js14
-rw-r--r--js/src/tests/test262/intl402/ch11/11.3/11.3.2_TRF.js56
-rw-r--r--js/src/tests/test262/intl402/ch11/11.3/11.3.2_TRP.js56
-rw-r--r--js/src/tests/test262/intl402/ch11/11.3/11.3.3.js31
-rw-r--r--js/src/tests/test262/intl402/ch11/11.3/11.3.3_L15.js14
-rw-r--r--js/src/tests/test262/intl402/ch11/11.3/11.3_L15.js14
-rw-r--r--js/src/tests/test262/intl402/ch11/11.3/11.3_a.js16
-rw-r--r--js/src/tests/test262/intl402/ch11/11.3/11.3_b.js33
-rw-r--r--js/src/tests/test262/intl402/ch11/11.3/browser.js0
-rw-r--r--js/src/tests/test262/intl402/ch11/11.3/shell.js0
-rw-r--r--js/src/tests/test262/intl402/ch11/11.4/11.4_a.js15
-rw-r--r--js/src/tests/test262/intl402/ch11/11.4/browser.js0
-rw-r--r--js/src/tests/test262/intl402/ch11/11.4/shell.js0
-rw-r--r--js/src/tests/test262/intl402/ch11/browser.js0
-rw-r--r--js/src/tests/test262/intl402/ch11/shell.js0
-rw-r--r--js/src/tests/test262/intl402/ch12/12.1/12.1.1_1.js43
-rw-r--r--js/src/tests/test262/intl402/ch12/12.1/12.1.1_18.js15
-rw-r--r--js/src/tests/test262/intl402/ch12/12.1/12.1.1_22.js18
-rw-r--r--js/src/tests/test262/intl402/ch12/12.1/12.1.1_23.js14
-rw-r--r--js/src/tests/test262/intl402/ch12/12.1/12.1.1_25.js12
-rw-r--r--js/src/tests/test262/intl402/ch12/12.1/12.1.1_5.js18
-rw-r--r--js/src/tests/test262/intl402/ch12/12.1/12.1.1_6.js12
-rw-r--r--js/src/tests/test262/intl402/ch12/12.1/12.1.1_TDTO.js107
-rw-r--r--js/src/tests/test262/intl402/ch12/12.1/12.1.1_a.js18
-rw-r--r--js/src/tests/test262/intl402/ch12/12.1/12.1.2.1_4.js21
-rw-r--r--js/src/tests/test262/intl402/ch12/12.1/12.1.2.js30
-rw-r--r--js/src/tests/test262/intl402/ch12/12.1/12.1.3.js19
-rw-r--r--js/src/tests/test262/intl402/ch12/12.1/12.1_L15.js14
-rw-r--r--js/src/tests/test262/intl402/ch12/12.1/browser.js0
-rw-r--r--js/src/tests/test262/intl402/ch12/12.1/shell.js0
-rw-r--r--js/src/tests/test262/intl402/ch12/12.2/12.2.1.js22
-rw-r--r--js/src/tests/test262/intl402/ch12/12.2/12.2.2_L15.js14
-rw-r--r--js/src/tests/test262/intl402/ch12/12.2/12.2.2_a.js28
-rw-r--r--js/src/tests/test262/intl402/ch12/12.2/12.2.2_b.js13
-rw-r--r--js/src/tests/test262/intl402/ch12/12.2/12.2.3_b.js47
-rw-r--r--js/src/tests/test262/intl402/ch12/12.2/12.2.3_c.js52
-rw-r--r--js/src/tests/test262/intl402/ch12/12.2/browser.js0
-rw-r--r--js/src/tests/test262/intl402/ch12/12.2/shell.js0
-rw-r--r--js/src/tests/test262/intl402/ch12/12.3/12.3.1.js14
-rw-r--r--js/src/tests/test262/intl402/ch12/12.3/12.3.2_1_a_L15.js14
-rw-r--r--js/src/tests/test262/intl402/ch12/12.3/12.3.2_1_c.js34
-rw-r--r--js/src/tests/test262/intl402/ch12/12.3/12.3.2_FDT_1.js26
-rw-r--r--js/src/tests/test262/intl402/ch12/12.3/12.3.2_FDT_7_a_iv.js32
-rw-r--r--js/src/tests/test262/intl402/ch12/12.3/12.3.2_L15.js14
-rw-r--r--js/src/tests/test262/intl402/ch12/12.3/12.3.2_TLT_2.js16
-rw-r--r--js/src/tests/test262/intl402/ch12/12.3/12.3.3.js52
-rw-r--r--js/src/tests/test262/intl402/ch12/12.3/12.3.3_L15.js14
-rw-r--r--js/src/tests/test262/intl402/ch12/12.3/12.3_L15.js14
-rw-r--r--js/src/tests/test262/intl402/ch12/12.3/12.3_a.js16
-rw-r--r--js/src/tests/test262/intl402/ch12/12.3/12.3_b.js33
-rw-r--r--js/src/tests/test262/intl402/ch12/12.3/browser.js0
-rw-r--r--js/src/tests/test262/intl402/ch12/12.3/shell.js0
-rw-r--r--js/src/tests/test262/intl402/ch12/12.4/12.4_a.js15
-rw-r--r--js/src/tests/test262/intl402/ch12/12.4/browser.js0
-rw-r--r--js/src/tests/test262/intl402/ch12/12.4/shell.js0
-rw-r--r--js/src/tests/test262/intl402/ch12/browser.js0
-rw-r--r--js/src/tests/test262/intl402/ch12/shell.js0
-rw-r--r--js/src/tests/test262/intl402/ch13/13.1/13.1.1_1.js24
-rw-r--r--js/src/tests/test262/intl402/ch13/13.1/13.1.1_2.js26
-rw-r--r--js/src/tests/test262/intl402/ch13/13.1/13.1.1_3_1.js26
-rw-r--r--js/src/tests/test262/intl402/ch13/13.1/13.1.1_3_2.js22
-rw-r--r--js/src/tests/test262/intl402/ch13/13.1/13.1.1_6_1.js65
-rw-r--r--js/src/tests/test262/intl402/ch13/13.1/13.1.1_6_2.js13
-rw-r--r--js/src/tests/test262/intl402/ch13/13.1/13.1.1_7.js33
-rw-r--r--js/src/tests/test262/intl402/ch13/13.1/13.1.1_L15.js14
-rw-r--r--js/src/tests/test262/intl402/ch13/13.1/browser.js0
-rw-r--r--js/src/tests/test262/intl402/ch13/13.1/shell.js0
-rw-r--r--js/src/tests/test262/intl402/ch13/13.2/13.2.1_1.js37
-rw-r--r--js/src/tests/test262/intl402/ch13/13.2/13.2.1_4_1.js67
-rw-r--r--js/src/tests/test262/intl402/ch13/13.2/13.2.1_4_2.js13
-rw-r--r--js/src/tests/test262/intl402/ch13/13.2/13.2.1_5.js41
-rw-r--r--js/src/tests/test262/intl402/ch13/13.2/13.2.1_L15.js14
-rw-r--r--js/src/tests/test262/intl402/ch13/13.2/browser.js0
-rw-r--r--js/src/tests/test262/intl402/ch13/13.2/shell.js0
-rw-r--r--js/src/tests/test262/intl402/ch13/13.3/13.3.0_1.js32
-rw-r--r--js/src/tests/test262/intl402/ch13/13.3/13.3.0_2.js26
-rw-r--r--js/src/tests/test262/intl402/ch13/13.3/13.3.0_6_1.js74
-rw-r--r--js/src/tests/test262/intl402/ch13/13.3/13.3.0_6_2.js15
-rw-r--r--js/src/tests/test262/intl402/ch13/13.3/13.3.0_7.js58
-rw-r--r--js/src/tests/test262/intl402/ch13/13.3/13.3.1_L15.js14
-rw-r--r--js/src/tests/test262/intl402/ch13/13.3/13.3.2_L15.js14
-rw-r--r--js/src/tests/test262/intl402/ch13/13.3/13.3.3_L15.js14
-rw-r--r--js/src/tests/test262/intl402/ch13/13.3/browser.js0
-rw-r--r--js/src/tests/test262/intl402/ch13/13.3/shell.js0
-rw-r--r--js/src/tests/test262/intl402/ch13/browser.js0
-rw-r--r--js/src/tests/test262/intl402/ch13/shell.js0
-rw-r--r--js/src/tests/test262/intl402/shell.js10
-rw-r--r--js/src/tests/test262/shell.js940
4033 files changed, 155745 insertions, 0 deletions
diff --git a/js/src/tests/test262/HG-INFO b/js/src/tests/test262/HG-INFO
new file mode 100644
index 000000000..a44725501
--- /dev/null
+++ b/js/src/tests/test262/HG-INFO
@@ -0,0 +1,7 @@
+URL: http://hg.ecmascript.org/tests/test262/
+changeset: 378:d067d2f0ca30
+tag: tip
+user: Brent Baker <brbaker@adobe.com>
+date: Thu Jun 13 10:07:45 2013 -0400
+summary: Bug 1128: use Date.prototype.getFullYear() in S15.2.2.1_A2_T5
+
diff --git a/js/src/tests/test262/LICENSE b/js/src/tests/test262/LICENSE
new file mode 100644
index 000000000..46b55a37b
--- /dev/null
+++ b/js/src/tests/test262/LICENSE
@@ -0,0 +1,28 @@
+The << Software identified by reference to the Ecma Standard* ("Software)">> is protected by copyright and is being
+made available under the "BSD License", included below. This Software may be subject to third party rights (rights
+from parties other than Ecma International), including patent rights, and no licenses under such third party rights
+are granted under this license even if the third party concerned is a member of Ecma International. SEE THE ECMA
+CODE OF CONDUCT IN PATENT MATTERS AVAILABLE AT http://www.ecma-international.org/memento/codeofconduct.htm FOR
+INFORMATION REGARDING THE LICENSING OF PATENT CLAIMS THAT ARE REQUIRED TO IMPLEMENT ECMA INTERNATIONAL STANDARDS*.
+
+Copyright (C) 2012-2013 Ecma International
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification, are permitted provided that the
+following conditions are met:
+1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following
+ disclaimer.
+2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the
+ following disclaimer in the documentation and/or other materials provided with the distribution.
+3. Neither the name of the authors nor Ecma International may be used to endorse or promote products derived from
+ this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE ECMA INTERNATIONAL "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
+SHALL ECMA INTERNATIONAL BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGE.
+
+* Ecma International Standards hereafter means Ecma International Standards as well as Ecma Technical Reports \ No newline at end of file
diff --git a/js/src/tests/test262/browser.js b/js/src/tests/test262/browser.js
new file mode 100644
index 000000000..fb4c18106
--- /dev/null
+++ b/js/src/tests/test262/browser.js
@@ -0,0 +1,11 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+/*
+ * Test262 function $INCLUDE loads a file with support functions for the tests.
+ * Our initial import strategy will be to attempt to load all these files
+ * unconditionally (this may change at some point), so just ignore the call.
+ * This function replaces one in shell.js.
+ */
+function $INCLUDE(file) {}
diff --git a/js/src/tests/test262/built-ins/Object/getOwnPropertyDescriptors/duplicate-keys.js b/js/src/tests/test262/built-ins/Object/getOwnPropertyDescriptors/duplicate-keys.js
new file mode 100644
index 000000000..371c6c1da
--- /dev/null
+++ b/js/src/tests/test262/built-ins/Object/getOwnPropertyDescriptors/duplicate-keys.js
@@ -0,0 +1,38 @@
+// Copyright (C) 2016 Jordan Harband. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+description: Object.getOwnPropertyDescriptors on a proxy with duplicate ownKeys should work
+esid: pending
+author: Jordan Harband
+features: [Proxy]
+---*/
+
+var i = 0;
+var descriptors = [
+ { enumerable: false, value: "A1", writable: true, configurable: true },
+ { enumerable: true, value: "A2", writable: true, configurable: true }
+];
+var log = '';
+var proxy = new Proxy({}, {
+ ownKeys() {
+ log += 'ownKeys|';
+ return ['DUPLICATE', 'DUPLICATE', 'DUPLICATE'];
+ },
+ getOwnPropertyDescriptor(t, name) {
+ log += 'getOwnPropertyDescriptor:' + name + '|';
+ return descriptors[i++];
+ }
+});
+
+var result = Object.getOwnPropertyDescriptors(proxy);
+assert.sameValue(result.hasOwnProperty('DUPLICATE'), true);
+
+var lastDescriptor = descriptors[descriptors.length - 1];
+assert.notSameValue(result.DUPLICATE, lastDescriptor);
+assert.sameValue(result.DUPLICATE.enumerable, lastDescriptor.enumerable);
+assert.sameValue(result.DUPLICATE.configurable, lastDescriptor.configurable);
+assert.sameValue(result.DUPLICATE.value, lastDescriptor.value);
+assert.sameValue(result.DUPLICATE.writable, lastDescriptor.writable);
+
+assert.sameValue(log, 'ownKeys|getOwnPropertyDescriptor:DUPLICATE|getOwnPropertyDescriptor:DUPLICATE|getOwnPropertyDescriptor:DUPLICATE|');
diff --git a/js/src/tests/test262/built-ins/Object/getOwnPropertyDescriptors/exception-not-object-coercible.js b/js/src/tests/test262/built-ins/Object/getOwnPropertyDescriptors/exception-not-object-coercible.js
new file mode 100644
index 000000000..0bfc62bd4
--- /dev/null
+++ b/js/src/tests/test262/built-ins/Object/getOwnPropertyDescriptors/exception-not-object-coercible.js
@@ -0,0 +1,16 @@
+// Copyright (C) 2016 Jordan Harband. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+description: Object.getOwnPropertyDescriptors should fail if given a null or undefined value
+esid: pending
+author: Jordan Harband
+---*/
+
+assert.throws(TypeError, function () {
+ Object.getOwnPropertyDescriptors(null);
+});
+
+assert.throws(TypeError, function () {
+ Object.getOwnPropertyDescriptors(undefined);
+});
diff --git a/js/src/tests/test262/built-ins/Object/getOwnPropertyDescriptors/function-length.js b/js/src/tests/test262/built-ins/Object/getOwnPropertyDescriptors/function-length.js
new file mode 100644
index 000000000..af96f51d9
--- /dev/null
+++ b/js/src/tests/test262/built-ins/Object/getOwnPropertyDescriptors/function-length.js
@@ -0,0 +1,16 @@
+// Copyright (C) 2016 Jordan Harband. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+description: Object.getOwnPropertyDescriptors should have length 1
+esid: pending
+author: Jordan Harband
+includes: [propertyHelper.js]
+---*/
+
+assert.sameValue(Object.getOwnPropertyDescriptors.length, 1, 'Expected Object.getOwnPropertyDescriptors.length to be 1');
+
+var desc = Object.getOwnPropertyDescriptor(Object.getOwnPropertyDescriptors, 'length');
+assertEq(desc.enumerable, false);
+assertEq(desc.writable, false);
+assertEq(desc.configurable, true);
diff --git a/js/src/tests/test262/built-ins/Object/getOwnPropertyDescriptors/function-name.js b/js/src/tests/test262/built-ins/Object/getOwnPropertyDescriptors/function-name.js
new file mode 100644
index 000000000..553ef7eba
--- /dev/null
+++ b/js/src/tests/test262/built-ins/Object/getOwnPropertyDescriptors/function-name.js
@@ -0,0 +1,20 @@
+// Copyright (C) 2016 Jordan Harband. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+description: Object.getOwnPropertyDescriptors should have name property with value 'getOwnPropertyDescriptors'
+esid: pending
+author: Jordan Harband
+includes: [propertyHelper.js]
+---*/
+
+assert.sameValue(
+ Object.getOwnPropertyDescriptors.name,
+ 'getOwnPropertyDescriptors',
+ 'Expected Object.getOwnPropertyDescriptors.name to be "getOwnPropertyDescriptors"'
+);
+
+var desc = Object.getOwnPropertyDescriptor(Object.getOwnPropertyDescriptors, 'name');
+assertEq(desc.enumerable, false);
+assertEq(desc.writable, false);
+assertEq(desc.configurable, true);
diff --git a/js/src/tests/test262/built-ins/Object/getOwnPropertyDescriptors/function-property-descriptor.js b/js/src/tests/test262/built-ins/Object/getOwnPropertyDescriptors/function-property-descriptor.js
new file mode 100644
index 000000000..b71f054a0
--- /dev/null
+++ b/js/src/tests/test262/built-ins/Object/getOwnPropertyDescriptors/function-property-descriptor.js
@@ -0,0 +1,14 @@
+// Copyright (C) 2016 Jordan Harband. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+description: Object.getOwnPropertyDescriptors should be writable, non-enumerable, and configurable
+esid: pending
+author: Jordan Harband
+includes: [propertyHelper.js]
+---*/
+
+var desc = Object.getOwnPropertyDescriptor(Object, 'getOwnPropertyDescriptors');
+assertEq(desc.enumerable, false);
+assertEq(desc.writable, true);
+assertEq(desc.configurable, true);
diff --git a/js/src/tests/test262/built-ins/Object/getOwnPropertyDescriptors/inherited-properties-omitted.js b/js/src/tests/test262/built-ins/Object/getOwnPropertyDescriptors/inherited-properties-omitted.js
new file mode 100644
index 000000000..c19d40c59
--- /dev/null
+++ b/js/src/tests/test262/built-ins/Object/getOwnPropertyDescriptors/inherited-properties-omitted.js
@@ -0,0 +1,43 @@
+// Copyright (C) 2016 Jordan Harband. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+description: Object.getOwnPropertyDescriptors does not see inherited properties.
+esid: pending
+author: Jordan Harband
+---*/
+
+var F = function () {};
+F.prototype.a = {};
+F.prototype.b = {};
+
+var f = new F();
+var bValue = {};
+f.b = bValue; // shadow the prototype
+Object.defineProperty(f, 'c', {
+ enumerable: false,
+ configurable: true,
+ writable: false,
+ value: {}
+}); // solely an own property
+
+var result = Object.getOwnPropertyDescriptors(f);
+
+assert.sameValue(!!result.b, true, 'b has a descriptor');
+assert.sameValue(!!result.c, true, 'c has a descriptor');
+
+assert.sameValue(result.b.enumerable, true, 'b is enumerable');
+assert.sameValue(result.b.configurable, true, 'b is configurable');
+assert.sameValue(result.b.writable, true, 'b is writable');
+assert.sameValue(result.b.value, bValue, 'b’s value is `bValue`');
+
+assert.sameValue(result.c.enumerable, false, 'c is enumerable');
+assert.sameValue(result.c.configurable, true, 'c is configurable');
+assert.sameValue(result.c.writable, false, 'c is writable');
+assert.sameValue(result.c.value, f.c, 'c’s value is `f.c`');
+
+assert.sameValue(
+ Object.keys(result).length,
+ 2,
+ 'result has same number of own property names as f'
+);
diff --git a/js/src/tests/test262/built-ins/Object/getOwnPropertyDescriptors/normal-object.js b/js/src/tests/test262/built-ins/Object/getOwnPropertyDescriptors/normal-object.js
new file mode 100644
index 000000000..8ef7f8c5c
--- /dev/null
+++ b/js/src/tests/test262/built-ins/Object/getOwnPropertyDescriptors/normal-object.js
@@ -0,0 +1,13 @@
+// Copyright (C) 2016 Jordan Harband. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+description: Object.getOwnPropertyDescriptors should produce a normal object inheriting from Object.prototype
+esid: pending
+author: Jordan Harband
+---*/
+
+assert.sameValue(
+ Object.getPrototypeOf(Object.getOwnPropertyDescriptors({})),
+ Object.prototype
+);
diff --git a/js/src/tests/test262/built-ins/Object/getOwnPropertyDescriptors/observable-operations.js b/js/src/tests/test262/built-ins/Object/getOwnPropertyDescriptors/observable-operations.js
new file mode 100644
index 000000000..c1211613d
--- /dev/null
+++ b/js/src/tests/test262/built-ins/Object/getOwnPropertyDescriptors/observable-operations.js
@@ -0,0 +1,34 @@
+// Copyright (C) 2016 Jordan Harband. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+description: Object.getOwnPropertyDescriptors should perform observable operations in the correct order
+esid: pending
+author: Jordan Harband
+features: [Proxy]
+includes: [proxyTrapsHelper.js]
+---*/
+
+var log = "";
+var object = { a: 0, b: 0, c: 0 };
+var handler = {
+ getOwnPropertyDescriptor: function (target, propertyKey) {
+ assert.sameValue(target, object, "getOwnPropertyDescriptor");
+ log += "|getOwnPropertyDescriptor:" + propertyKey;
+ return Object.getOwnPropertyDescriptor(target, propertyKey);
+ },
+ ownKeys: function (target) {
+ assert.sameValue(target, object, "ownKeys");
+ log += "|ownKeys";
+ return Object.getOwnPropertyNames(target);
+ }
+};
+var check = {
+ get: function (target, propertyKey, receiver) {
+ assertEq(propertyKey in target, true, "handler check: " + propertyKey);
+ return target[propertyKey];
+ }
+};
+var proxy = new Proxy(object, new Proxy(handler, check));
+var result = Object.getOwnPropertyDescriptors(proxy);
+assert.sameValue(log, "|ownKeys|getOwnPropertyDescriptor:a|getOwnPropertyDescriptor:b|getOwnPropertyDescriptor:c", 'log');
diff --git a/js/src/tests/test262/built-ins/Object/getOwnPropertyDescriptors/primitive-booleans.js b/js/src/tests/test262/built-ins/Object/getOwnPropertyDescriptors/primitive-booleans.js
new file mode 100644
index 000000000..899aaa0e5
--- /dev/null
+++ b/js/src/tests/test262/built-ins/Object/getOwnPropertyDescriptors/primitive-booleans.js
@@ -0,0 +1,16 @@
+// Copyright (C) 2016 Jordan Harband. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+description: Object.getOwnPropertyDescriptors accepts boolean primitives.
+esid: pending
+author: Jordan Harband
+---*/
+
+var trueResult = Object.getOwnPropertyDescriptors(true);
+
+assert.sameValue(Object.keys(trueResult).length, 0, 'trueResult has 0 items');
+
+var falseResult = Object.getOwnPropertyDescriptors(false);
+
+assert.sameValue(Object.keys(falseResult).length, 0, 'falseResult has 0 items');
diff --git a/js/src/tests/test262/built-ins/Object/getOwnPropertyDescriptors/primitive-numbers.js b/js/src/tests/test262/built-ins/Object/getOwnPropertyDescriptors/primitive-numbers.js
new file mode 100644
index 000000000..495796ae4
--- /dev/null
+++ b/js/src/tests/test262/built-ins/Object/getOwnPropertyDescriptors/primitive-numbers.js
@@ -0,0 +1,15 @@
+// Copyright (C) 2016 Jordan Harband. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+description: Object.getOwnPropertyDescriptors accepts number primitives.
+esid: pending
+author: Jordan Harband
+---*/
+
+assert.sameValue(Object.keys(Object.getOwnPropertyDescriptors(0)).length, 0, '0 has zero descriptors');
+assert.sameValue(Object.keys(Object.getOwnPropertyDescriptors(-0)).length, 0, '-0 has zero descriptors');
+assert.sameValue(Object.keys(Object.getOwnPropertyDescriptors(Infinity)).length, 0, 'Infinity has zero descriptors');
+assert.sameValue(Object.keys(Object.getOwnPropertyDescriptors(-Infinity)).length, 0, '-Infinity has zero descriptors');
+assert.sameValue(Object.keys(Object.getOwnPropertyDescriptors(NaN)).length, 0, 'NaN has zero descriptors');
+assert.sameValue(Object.keys(Object.getOwnPropertyDescriptors(Math.PI)).length, 0, 'Math.PI has zero descriptors');
diff --git a/js/src/tests/test262/built-ins/Object/getOwnPropertyDescriptors/primitive-strings.js b/js/src/tests/test262/built-ins/Object/getOwnPropertyDescriptors/primitive-strings.js
new file mode 100644
index 000000000..c8d3be9ec
--- /dev/null
+++ b/js/src/tests/test262/built-ins/Object/getOwnPropertyDescriptors/primitive-strings.js
@@ -0,0 +1,33 @@
+// Copyright (C) 2016 Jordan Harband. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+description: Object.getOwnPropertyDescriptors accepts string primitives.
+esid: pending
+author: Jordan Harband
+---*/
+
+var result = Object.getOwnPropertyDescriptors('abc');
+
+assert.sameValue(Object.keys(result).length, 4, 'string has 4 descriptors');
+
+assert.sameValue(result.length.configurable, false, 'length is not configurable');
+assert.sameValue(result.length.enumerable, false, 'length is not enumerable');
+assert.sameValue(result.length.writable, false, 'length is not writable');
+assert.sameValue(result.length.value, 3, 'length is 3');
+
+assert.sameValue(result[0].configurable, false, 'index 0 is not configurable');
+assert.sameValue(result[0].enumerable, true, 'index 0 is enumerable');
+assert.sameValue(result[0].writable, false, 'index 0 is not writable');
+assert.sameValue(result[0].value, 'a', 'index 0 is "a"');
+
+assert.sameValue(result[1].configurable, false, 'index 1 is not configurable');
+assert.sameValue(result[1].enumerable, true, 'index 1 is enumerable');
+assert.sameValue(result[1].writable, false, 'index 1 is not writable');
+assert.sameValue(result[1].value, 'b', 'index 1 is "b"');
+
+assert.sameValue(result[2].configurable, false, 'index 2 is not configurable');
+assert.sameValue(result[2].enumerable, true, 'index 2 is enumerable');
+assert.sameValue(result[2].writable, false, 'index 2 is not writable');
+assert.sameValue(result[2].value, 'c', 'index 2 is "c"');
+
diff --git a/js/src/tests/test262/built-ins/Object/getOwnPropertyDescriptors/primitive-symbols.js b/js/src/tests/test262/built-ins/Object/getOwnPropertyDescriptors/primitive-symbols.js
new file mode 100644
index 000000000..d30fa3f46
--- /dev/null
+++ b/js/src/tests/test262/built-ins/Object/getOwnPropertyDescriptors/primitive-symbols.js
@@ -0,0 +1,13 @@
+// Copyright (C) 2016 Jordan Harband. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+description: Object.getOwnPropertyDescriptors accepts Symbol primitives.
+esid: pending
+author: Jordan Harband
+features: [Symbol]
+---*/
+
+var result = Object.getOwnPropertyDescriptors(Symbol());
+
+assert.sameValue(Object.keys(result).length, 0, 'symbol primitive has no descriptors');
diff --git a/js/src/tests/test262/built-ins/Object/getOwnPropertyDescriptors/proxy-undefined-descriptor.js b/js/src/tests/test262/built-ins/Object/getOwnPropertyDescriptors/proxy-undefined-descriptor.js
new file mode 100644
index 000000000..6eb6c7071
--- /dev/null
+++ b/js/src/tests/test262/built-ins/Object/getOwnPropertyDescriptors/proxy-undefined-descriptor.js
@@ -0,0 +1,32 @@
+// Copyright (C) 2016 Jordan Harband. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+description: Object.getOwnPropertyDescriptors should filter out undefined OwnPropertyDescriptors
+esid: sec-object.getownpropertydescriptors
+author: Jordan Harband
+featurewws: [Proxy]
+includes: [proxyTrapsHelper.js]
+---*/
+
+var key = "a";
+var ownKeys = [key];
+var badProxyHandlers = {
+ getOwnPropertyDescriptor: function () {},
+ ownKeys: function () {
+ return ownKeys;
+ }
+};
+var proxy = new Proxy({}, badProxyHandlers);
+
+var keys = Reflect.ownKeys(proxy);
+assert.notSameValue(keys, ownKeys, 'Object.keys returns a new Array');
+assert.sameValue(Array.isArray(keys), true, 'Object.keys returns an Array');
+assert.sameValue(keys.length, ownKeys.length, 'keys and ownKeys have the same length');
+assert.sameValue(keys[0], ownKeys[0], 'keys and ownKeys have the same contents');
+
+var descriptor = Object.getOwnPropertyDescriptor(proxy, key);
+assert.sameValue(descriptor, undefined, "Descriptor matches result of [[GetOwnPropertyDescriptor]] trap");
+
+var result = Object.getOwnPropertyDescriptors(proxy);
+assert.sameValue(key in result, false, "key is not present in result");
diff --git a/js/src/tests/test262/built-ins/Object/getOwnPropertyDescriptors/shell.js b/js/src/tests/test262/built-ins/Object/getOwnPropertyDescriptors/shell.js
new file mode 100644
index 000000000..6ed766e94
--- /dev/null
+++ b/js/src/tests/test262/built-ins/Object/getOwnPropertyDescriptors/shell.js
@@ -0,0 +1,27 @@
+var assert = {
+ sameValue: assertEq,
+ notSameValue(a, b, msg) {
+ try {
+ assertEq(a, b);
+ throw "equal"
+ } catch (e) {
+ if (e === "equal")
+ throw new Error("Assertion failed: expected different values, got " + a);
+ }
+ },
+ throws(ctor, f) {
+ var fullmsg;
+ try {
+ f();
+ } catch (exc) {
+ if (exc instanceof ctor)
+ return;
+ fullmsg = "Assertion failed: expected exception " + ctor.name + ", got " + exc;
+ }
+ if (fullmsg === undefined)
+ fullmsg = "Assertion failed: expected exception " + ctor.name + ", no exception thrown";
+ if (msg !== undefined)
+ fullmsg += " - " + msg;
+ throw new Error(fullmsg);
+ }
+}
diff --git a/js/src/tests/test262/built-ins/Object/getOwnPropertyDescriptors/symbols-included.js b/js/src/tests/test262/built-ins/Object/getOwnPropertyDescriptors/symbols-included.js
new file mode 100644
index 000000000..5b3241126
--- /dev/null
+++ b/js/src/tests/test262/built-ins/Object/getOwnPropertyDescriptors/symbols-included.js
@@ -0,0 +1,38 @@
+// Copyright (C) 2016 Jordan Harband. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+description: Object.getOwnPropertyDescriptors includes Symbol keys.
+esid: pending
+author: Jordan Harband
+features: [Symbol]
+---*/
+
+var value = {};
+var enumSym = Symbol('enum');
+var nonEnumSym = Symbol('nonenum');
+var symValue = Symbol('value');
+
+var obj = { key: symValue };
+obj[enumSym] = value;
+Object.defineProperty(obj, nonEnumSym, { writable: true, enumerable: false, configurable: true, value: value });
+
+var result = Object.getOwnPropertyDescriptors(obj);
+
+assert.sameValue(Object.keys(result).length, 1, 'obj has 1 string-keyed descriptor');
+assert.sameValue(Object.getOwnPropertySymbols(result).length, 2, 'obj has 2 symbol-keyed descriptors');
+
+assert.sameValue(result.key.configurable, true, 'result.key is configurable');
+assert.sameValue(result.key.enumerable, true, 'result.key is enumerable');
+assert.sameValue(result.key.writable, true, 'result.key is writable');
+assert.sameValue(result.key.value, symValue, 'result.key has value symValue');
+
+assert.sameValue(result[enumSym].configurable, true, 'result[enumSym] is configurable');
+assert.sameValue(result[enumSym].enumerable, true, 'result[enumSym] is enumerable');
+assert.sameValue(result[enumSym].writable, true, 'result[enumSym] is writable');
+assert.sameValue(result[enumSym].value, value, 'result[enumSym] has value `value`');
+
+assert.sameValue(result[nonEnumSym].configurable, true, 'result[nonEnumSym] is configurable');
+assert.sameValue(result[nonEnumSym].enumerable, false, 'result[nonEnumSym] is not enumerable');
+assert.sameValue(result[nonEnumSym].writable, true, 'result[nonEnumSym] is writable');
+assert.sameValue(result[nonEnumSym].value, value, 'result[nonEnumSym] has value `value`');
diff --git a/js/src/tests/test262/built-ins/Object/getOwnPropertyDescriptors/tamper-with-global-object.js b/js/src/tests/test262/built-ins/Object/getOwnPropertyDescriptors/tamper-with-global-object.js
new file mode 100644
index 000000000..a76b5ba2a
--- /dev/null
+++ b/js/src/tests/test262/built-ins/Object/getOwnPropertyDescriptors/tamper-with-global-object.js
@@ -0,0 +1,21 @@
+// Copyright (C) 2016 Jordan Harband. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+description: >
+ Object.getOwnPropertyDescriptors should not have its behavior impacted by modifications to the global property Object
+esid: pending
+author: Jordan Harband
+---*/
+
+function fakeObject() {
+ $ERROR('The overriden version of Object was called!');
+}
+fakeObject.getOwnPropertyDescriptors = Object.getOwnPropertyDescriptors;
+fakeObject.keys = Object.keys;
+
+var global = this;
+global.Object = fakeObject;
+
+assert.sameValue(Object, fakeObject, 'Sanity check failed: could not modify the global Object');
+assert.sameValue(Object.keys(Object.getOwnPropertyDescriptors('a')).length, 2, 'Expected string primitive to have 2 descriptors');
diff --git a/js/src/tests/test262/built-ins/Object/getOwnPropertyDescriptors/tamper-with-object-keys.js b/js/src/tests/test262/built-ins/Object/getOwnPropertyDescriptors/tamper-with-object-keys.js
new file mode 100644
index 000000000..1f4d69893
--- /dev/null
+++ b/js/src/tests/test262/built-ins/Object/getOwnPropertyDescriptors/tamper-with-object-keys.js
@@ -0,0 +1,22 @@
+// Copyright (C) 2016 Jordan Harband. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+description: >
+ Object.getOwnPropertyDescriptors should not have its behavior impacted by modifications to Object.getOwnPropertyDescriptor
+esid: pending
+author: Jordan Harband
+---*/
+
+function fakeObjectGetOwnPropertyDescriptor() {
+ $ERROR('The overriden version of Object.getOwnPropertyDescriptor was called!');
+}
+Object.getOwnPropertyDescriptor = fakeObjectGetOwnPropertyDescriptor;
+
+assert.sameValue(
+ Object.getOwnPropertyDescriptor,
+ fakeObjectGetOwnPropertyDescriptor,
+ 'Sanity check failed: could not modify the global Object.getOwnPropertyDescriptor'
+);
+
+assert.sameValue(Object.keys(Object.getOwnPropertyDescriptors({ a: 1 })).length, 1, 'Expected object with 1 key to have 1 descriptor');
diff --git a/js/src/tests/test262/built-ins/Object/shell.js b/js/src/tests/test262/built-ins/Object/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/built-ins/Object/shell.js
diff --git a/js/src/tests/test262/built-ins/shell.js b/js/src/tests/test262/built-ins/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/built-ins/shell.js
diff --git a/js/src/tests/test262/ch06/6.1.js b/js/src/tests/test262/ch06/6.1.js
new file mode 100644
index 000000000..f53b105f5
--- /dev/null
+++ b/js/src/tests/test262/ch06/6.1.js
@@ -0,0 +1,21 @@
+// Copyright (c) 2012 Ecma International. All rights reserved.
+// Ecma International makes this code available under the terms and conditions set
+// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+// "Use Terms"). Any redistribution of this code must retain the above
+// copyright and this notice and otherwise comply with the Use Terms.
+
+/**
+ * @description Test for handling of supplementary characters
+ */
+
+var chars = "𐒠"; // Single Unicode character at codepoint \u{104A0}
+if(chars.length !== 2) {
+ $ERROR("A character outside the BMP (Unicode CodePoint > 0xFFFF) should consume two code units");
+}
+if(chars.charCodeAt(0) !== 0xD801) {
+ $ERROR("First code unit of surrogate pair for 0x104A0 should be 0xD801");
+}
+
+if(chars.charCodeAt(1) !== 0xDCA0) {
+ $ERROR("Second code unit of surrogate pair for 0x104A0 should be 0xDCA0");
+}
diff --git a/js/src/tests/test262/ch06/browser.js b/js/src/tests/test262/ch06/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch06/browser.js
diff --git a/js/src/tests/test262/ch06/shell.js b/js/src/tests/test262/ch06/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch06/shell.js
diff --git a/js/src/tests/test262/ch07/7.2/S7.2_A1.1_T1.js b/js/src/tests/test262/ch07/7.2/S7.2_A1.1_T1.js
new file mode 100644
index 000000000..1c8e5a9ca
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.2/S7.2_A1.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.
+
+/**
+ * HORIZONTAL TAB (U+0009) between any two tokens is allowed
+ *
+ * @path ch07/7.2/S7.2_A1.1_T1.js
+ * @description Insert HORIZONTAL TAB(\u0009 and \t) between tokens of var x=1
+ */
+
+// CHECK#1
+eval("\u0009var\u0009x\u0009=\u00091\u0009");
+if (x !== 1) {
+ $ERROR('#1: eval("\\u0009var\\u0009x\\u0009=\\u00091\\u0009"); x === 1. Actual: ' + (x));
+}
+
+//CHECK#2
+eval("\u0009" + "var" + "\u0009" + "x" + "\u0009" + "=" + "\u0009" + "1" + "\u0009");
+if (x !== 1) {
+ $ERROR('#2: eval("\\u0009" + "var" + "\\u0009" + "x" + "\\u0009" + "=" + "\\u0009" + "1" + "\\u0009"); x === 1. Actual: ' + (x));
+}
+
+//CHECK#3
+eval("\tvar\tx\t=\t1\t");
+if (x !== 1) {
+ $ERROR('#3: eval("\\tvar\\tx\\t=\\t1\\t"); x === 1. Actual: ' + (x));
+}
+
+//CHECK#4
+eval("\t" + "var" + "\t" + "x" + "\t" + "=" + "\t" + "1" + "\t");
+if (x !== 1) {
+ $ERROR('#4: eval("\\t" + "var" + "\\t" + "x" + "\\t" + "=" + "\\t" + "1" + "\\t"); x === 1. Actual: ' + (x));
+}
+
+//CHECK#5
+eval("\u0009" + "var" + "\t" + "x" + "\u0009" + "=" + "\t" + "1" + "\u0009");
+if (x !== 1) {
+ $ERROR('#5: eval("\\u0009" + "var" + "\\t" + "x" + "\\u0009" + "=" + "\\t" + "1" + "\\u0009"); x === 1. Actual: ' + (x));
+}
+
diff --git a/js/src/tests/test262/ch07/7.2/S7.2_A1.1_T2.js b/js/src/tests/test262/ch07/7.2/S7.2_A1.1_T2.js
new file mode 100644
index 000000000..081c60ef3
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.2/S7.2_A1.1_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.
+
+/**
+ * HORIZONTAL TAB (U+0009) between any two tokens is allowed
+ *
+ * @path ch07/7.2/S7.2_A1.1_T2.js
+ * @description Insert real HORIZONTAL TAB between tokens of var x=1
+ */
+
+//CHECK#1
+ var x = 1 ;
+if (x !== 1) {
+ $ERROR('#1: var x = 1 ; x === 1. Actual: ' + (x));
+}
+
+//CHECK#2
+eval(" var\tx =\t2 ");
+if (x !== 2) {
+ $ERROR('#2: var\\tx =\\t1 ; x === 2. Actual: ' + (x));
+}
+
diff --git a/js/src/tests/test262/ch07/7.2/S7.2_A1.2_T1.js b/js/src/tests/test262/ch07/7.2/S7.2_A1.2_T1.js
new file mode 100644
index 000000000..19be1c7e2
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.2/S7.2_A1.2_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.
+
+/**
+ * VERTICAL TAB (U+000B) between any two tokens is allowed
+ *
+ * @path ch07/7.2/S7.2_A1.2_T1.js
+ * @description Insert VERTICAL TAB(\u000B and \v) between tokens of var x=1
+ */
+
+// CHECK#1
+eval("\u000Bvar\u000Bx\u000B=\u000B1\u000B");
+if (x !== 1) {
+ $ERROR('#1: eval("\\u000Bvar\\u000Bx\\u000B=\\u000B1\\u000B"); x === 1. Actual: ' + (x));
+}
+
+//CHECK#2
+eval("\u000B" + "var" + "\u000B" + "x" + "\u000B" + "=" + "\u000B" + "1" + "\u000B");
+if (x !== 1) {
+ $ERROR('#2: eval("\\u000B" + "var" + "\\u000B" + "x" + "\\u000B" + "=" + "\\u000B" + "1" + "\\u000B"); x === 1. Actual: ' + (x));
+}
+
+//CHECK#3
+eval("\vvar\vx\v=\v1\v");
+if (x !== 1) {
+ $ERROR('#3: eval("\\vvar\\vx\\v=\\v1\\v"); x === 1. Actual: ' + (x));
+}
+
+//CHECK#4
+eval("\v" + "var" + "\v" + "x" + "\v" + "=" + "\v" + "1" + "\v");
+if (x !== 1) {
+ $ERROR('#4: eval("\\v" + "var" + "\\v" + "x" + "\\v" + "=" + "\\v" + "1" + "\\v"); x === 1. Actual: ' + (x));
+}
+
+//CHECK#5
+eval("\u000B" + "var" + "\v" + "x" + "\u000B" + "=" + "\v" + "1" + "\u000B");
+if (x !== 1) {
+ $ERROR('#5: eval("\\u000B" + "var" + "\\v" + "x" + "\\u000B" + "=" + "\\v" + "1" + "\\u000B"); x === 1. Actual: ' + (x));
+}
+
diff --git a/js/src/tests/test262/ch07/7.2/S7.2_A1.2_T2.js b/js/src/tests/test262/ch07/7.2/S7.2_A1.2_T2.js
new file mode 100644
index 000000000..f5ab425f5
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.2/S7.2_A1.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.
+
+/**
+ * VERTICAL TAB (U+000B) between any two tokens is allowed
+ *
+ * @path ch07/7.2/S7.2_A1.2_T2.js
+ * @description Insert real VERTICAL TAB between tokens of var x=1
+ */
+
+//CHECK#1
+ var x = 1 ;
+if (x !== 1) {
+ $ERROR('#1: var x = 1 ; x === 1. Actual: ' + (x));
+}
+
+//CHECK#2
+eval(" var\vx =\v1 ");
+if (x !== 1) {
+ $ERROR('#2: var\\vx =\\v1 ; x === 1. Actual: ' + (x));
+}
+
+
diff --git a/js/src/tests/test262/ch07/7.2/S7.2_A1.3_T1.js b/js/src/tests/test262/ch07/7.2/S7.2_A1.3_T1.js
new file mode 100644
index 000000000..eb8c2f85c
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.2/S7.2_A1.3_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.
+
+/**
+ * FORM FEED (U+000C) between any two tokens is allowed
+ *
+ * @path ch07/7.2/S7.2_A1.3_T1.js
+ * @description Insert FORM FEED(\u000C and \f) between tokens of var x=1
+ */
+
+// CHECK#1
+eval("\u000Cvar\u000Cx\u000C=\u000C1\u000C");
+if (x !== 1) {
+ $ERROR('#1: eval("\\u000Cvar\\u000Cx\\u000C=\\u000C1\\u000C"); x === 1. Actual: ' + (x));
+}
+
+//CHECK#2
+eval("\u000C" + "var" + "\u000C" + "x" + "\u000C" + "=" + "\u000C" + "1" + "\u000C");
+if (x !== 1) {
+ $ERROR('#2: eval("\\u000C" + "var" + "\\u000C" + "x" + "\\u000C" + "=" + "\\u000C" + "1" + "\\u000C"); x === 1. Actual: ' + (x));
+}
+
+//CHECK#3
+eval("\fvar\fx\f=\f1\f");
+if (x !== 1) {
+ $ERROR('#3: eval("\\fvar\\fx\\f=\\f1\\f"); x === 1. Actual: ' + (x));
+}
+
+//CHECK#4
+eval("\f" + "var" + "\f" + "x" + "\f" + "=" + "\f" + "1" + "\f");
+if (x !== 1) {
+ $ERROR('#4: eval("\\f" + "var" + "\\f" + "x" + "\\f" + "=" + "\\f" + "1" + "\\f"); x === 1. Actual: ' + (x));
+}
+
+//CHECK#5
+eval("\u000C" + "var" + "\f" + "x" + "\u000C" + "=" + "\f" + "1" + "\u000C");
+if (x !== 1) {
+ $ERROR('#5: eval("\\u000C" + "var" + "\\f" + "x" + "\\u000C" + "=" + "\\f" + "1" + "\\u000C"); x === 1. Actual: ' + (x));
+}
+
diff --git a/js/src/tests/test262/ch07/7.2/S7.2_A1.3_T2.js b/js/src/tests/test262/ch07/7.2/S7.2_A1.3_T2.js
new file mode 100644
index 000000000..90fe95742
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.2/S7.2_A1.3_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.
+
+/**
+ * FORM FEED (U+000C) between any two tokens is allowed
+ *
+ * @path ch07/7.2/S7.2_A1.3_T2.js
+ * @description Insert real FORM FEED between tokens of var x=1
+ */
+
+//CHECK#1
+ var x = 1 ;
+if (x !== 1) {
+ $ERROR('#1: var x = 1 ; x === 1. Actual: ' + (x));
+}
+
+//CHECK#2
+eval(" var\fx =\f1 ");
+if (x !== 1) {
+ $ERROR('#2: var\\fx =\\f1 ; x === 1. Actual: ' + (x));
+}
+
+
diff --git a/js/src/tests/test262/ch07/7.2/S7.2_A1.4_T1.js b/js/src/tests/test262/ch07/7.2/S7.2_A1.4_T1.js
new file mode 100644
index 000000000..1f10f9166
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.2/S7.2_A1.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.
+
+/**
+ * SPACE (U+0020) between any two tokens is allowed
+ *
+ * @path ch07/7.2/S7.2_A1.4_T1.js
+ * @description Insert SPACE(\u0020) between tokens of var x=1
+ */
+
+// CHECK#1
+eval("\u0020var\u0020x\u0020=\u00201\u0020");
+if (x !== 1) {
+ $ERROR('#1: eval("\\u0020var\\u0020x\\u0020=\\u00201\\u0020"); x === 1;');
+}
+
+//CHECK#2
+eval("\u0020" + "var" + "\u0020" + "x" + "\u0020" + "=" + "\u0020" + "1" + "\u0020");
+if (x !== 1) {
+ $ERROR('#2: eval("\\u0020" + "var" + "\\u0020" + "x" + "\\u0020" + "=" + "\\u0020" + "1" + "\\u0020"); x === 1. Actual: ' + (x));
+}
+
diff --git a/js/src/tests/test262/ch07/7.2/S7.2_A1.4_T2.js b/js/src/tests/test262/ch07/7.2/S7.2_A1.4_T2.js
new file mode 100644
index 000000000..67c9c96c1
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.2/S7.2_A1.4_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.
+
+/**
+ * SPACE (U+0020) between any two tokens is allowed
+ *
+ * @path ch07/7.2/S7.2_A1.4_T2.js
+ * @description Insert real SPACE between tokens of var x=1
+ */
+
+//CHECK#1
+eval("\u0020var x\u0020= 1\u0020");
+if (x !== 1) {
+ $ERROR('#1: eval("\\u0020var x\\u0020= 1\\u0020"); x === 1. Actual: ' + (x));
+}
+
+//CHECK#2
+ var x = 1 ;
+if (x !== 1) {
+ $ERROR('#2: var x = 1 ; x === 1. Actual: ' + (x));
+}
+
+
diff --git a/js/src/tests/test262/ch07/7.2/S7.2_A1.5_T1.js b/js/src/tests/test262/ch07/7.2/S7.2_A1.5_T1.js
new file mode 100644
index 000000000..59339116e
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.2/S7.2_A1.5_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.
+
+/**
+ * NO-BREAK SPACE (U+00A0) between any two tokens is allowed
+ *
+ * @path ch07/7.2/S7.2_A1.5_T1.js
+ * @description Insert NO-BREAK SPACE(\u00A0) between tokens of var x=1
+ */
+
+// CHECK#1
+eval("\u00A0var\u00A0x\u00A0=\u00A01\u00A0");
+if (x !== 1) {
+ $ERROR('#1: eval("\\u00A0var\\u00A0x\\u00A0=\\u00A01\\u00A0"); x === 1. Actual: ' + (x));
+}
+
+//CHECK#2
+eval("\u00A0" + "var" + "\u00A0" + "x" + "\u00A0" + "=" + "\u00A0" + "1" + "\u00A0");
+if (x !== 1) {
+ $ERROR('#2: eval("\\u00A0" + "var" + "\\u00A0" + "x" + "\\u00A0" + "=" + "\\u00A0" + "1" + "\\u00A0"); x === 1. Actual: ' + (x));
+}
+
diff --git a/js/src/tests/test262/ch07/7.2/S7.2_A1.5_T2.js b/js/src/tests/test262/ch07/7.2/S7.2_A1.5_T2.js
new file mode 100644
index 000000000..e4635e697
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.2/S7.2_A1.5_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.
+
+/**
+ * NO-BREAK SPACE (U+00A0) between any two tokens is allowed
+ *
+ * @path ch07/7.2/S7.2_A1.5_T2.js
+ * @description Insert real NO-BREAK SPACE between tokens of var x=1
+ */
+
+//CHECK#1
+eval("\u00A0var x\u00A0= 1\u00A0");
+if (x !== 1) {
+ $ERROR('#1: eval("\\u00A0var x\\u00A0= 1\\u00A0"); x === 1. Actual: ' + (x));
+}
+
+//CHECK#2
+ var x = 1 ;
+if (x !== 1) {
+ $ERROR('#2:  var x = 1 ; x === 1. Actual: ' + (x));
+}
+
+
diff --git a/js/src/tests/test262/ch07/7.2/S7.2_A2.1_T1.js b/js/src/tests/test262/ch07/7.2/S7.2_A2.1_T1.js
new file mode 100644
index 000000000..c7fdaaf3e
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.2/S7.2_A2.1_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.
+
+/**
+ * HORIZONTAL TAB (U+0009) may occur within strings
+ *
+ * @path ch07/7.2/S7.2_A2.1_T1.js
+ * @description Use HORIZONTAL TAB(\u0009 and \t)
+ */
+
+// CHECK#1
+if (eval("'\u0009str\u0009ing\u0009'") !== "\u0009str\u0009ing\u0009") {
+ $ERROR('#1: eval("\'\\u0009str\\u0009ing\\u0009\'") === "\\u0009str\\u0009ing\\u0009"');
+}
+
+//CHECK#2
+if (eval("'\tstr\ting\t'") !== "\tstr\ting\t") {
+ $ERROR('#2: eval("\'\\tstr\\ting\\t\'") === "\\tstr\\ting\\t"');
+}
+
diff --git a/js/src/tests/test262/ch07/7.2/S7.2_A2.1_T2.js b/js/src/tests/test262/ch07/7.2/S7.2_A2.1_T2.js
new file mode 100644
index 000000000..7a89875ba
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.2/S7.2_A2.1_T2.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.
+
+/**
+ * HORIZONTAL TAB (U+0009) may occur within strings
+ *
+ * @path ch07/7.2/S7.2_A2.1_T2.js
+ * @description Use real HORIZONTAL TAB
+ */
+
+//CHECK#1
+if (" str ing " !== "\u0009str\u0009ing\u0009") {
+ $ERROR('#1: " str ing " === "\\u0009str\\u0009ing\\u0009"');
+}
+
diff --git a/js/src/tests/test262/ch07/7.2/S7.2_A2.2_T1.js b/js/src/tests/test262/ch07/7.2/S7.2_A2.2_T1.js
new file mode 100644
index 000000000..69c8de8ff
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.2/S7.2_A2.2_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.
+
+/**
+ * VERTICAL TAB (U+000B) may occur within strings
+ *
+ * @path ch07/7.2/S7.2_A2.2_T1.js
+ * @description Use VERTICAL TAB(\u000B and \v)
+ */
+
+// CHECK#1
+if (eval("'\u000Bstr\u000Bing\u000B'") !== "\u000Bstr\u000Bing\u000B") {
+ $ERROR('#1: eval("\'\\u000Bstr\\u000Bing\\u000B\'") === "\\u000Bstr\\u000Bing\\u000B"');
+}
+
+//CHECK#2
+if (eval("'\vstr\ving\v'") !== "\vstr\ving\v") {
+ $ERROR('#2: eval("\'\\vstr\\ving\\v\'") === "\\vstr\\ving\\v"');
+}
+
diff --git a/js/src/tests/test262/ch07/7.2/S7.2_A2.2_T2.js b/js/src/tests/test262/ch07/7.2/S7.2_A2.2_T2.js
new file mode 100644
index 000000000..f7b415972
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.2/S7.2_A2.2_T2.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.
+
+/**
+ * VERTICAL TAB (U+000B) may occur within strings
+ *
+ * @path ch07/7.2/S7.2_A2.2_T2.js
+ * @description Use real VERTICAL TAB
+ */
+
+//CHECK#1
+if (" str ing " !== "\u000Bstr\u000Bing\u000B") {
+ $ERROR('#1: " str ing " === "\\u000Bstr\\u000Bing\\u000B"');
+}
+
diff --git a/js/src/tests/test262/ch07/7.2/S7.2_A2.3_T1.js b/js/src/tests/test262/ch07/7.2/S7.2_A2.3_T1.js
new file mode 100644
index 000000000..9b30396fc
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.2/S7.2_A2.3_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.
+
+/**
+ * FORM FEED (U+000C) may occur within strings
+ *
+ * @path ch07/7.2/S7.2_A2.3_T1.js
+ * @description Use FORM FEED(\u000C and \f)
+ */
+
+// CHECK#1
+if (eval("'\u000Cstr\u000Cing\u000C'") !== "\u000Cstr\u000Cing\u000C") {
+ $ERROR('#1: eval("\'\\u000Cstr\\u000Cing\\u000C\'") === "\\u000Cstr\\u000Cing\\u000C"');
+}
+
+//CHECK#2
+if (eval("'\fstr\fing\f'") !== "\fstr\fing\f") {
+ $ERROR('#2: eval("\'\\fstr\\fing\\f\'") === "\\fstr\\fing\\f"');
+}
+
diff --git a/js/src/tests/test262/ch07/7.2/S7.2_A2.3_T2.js b/js/src/tests/test262/ch07/7.2/S7.2_A2.3_T2.js
new file mode 100644
index 000000000..a575f8a0d
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.2/S7.2_A2.3_T2.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.
+
+/**
+ * FORM FEED (U+000C) may occur within strings
+ *
+ * @path ch07/7.2/S7.2_A2.3_T2.js
+ * @description Use real FORM FEED
+ */
+
+//CHECK#1
+if (" str ing " !== "\u000Cstr\u000Cing\u000C") {
+ $ERROR('#1: " str ing " === "\\u000Cstr\\u000Cing\\u000C"');
+}
+
diff --git a/js/src/tests/test262/ch07/7.2/S7.2_A2.4_T1.js b/js/src/tests/test262/ch07/7.2/S7.2_A2.4_T1.js
new file mode 100644
index 000000000..4b41932c7
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.2/S7.2_A2.4_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.
+
+/**
+ * SPACE (U+0020) may occur within strings
+ *
+ * @path ch07/7.2/S7.2_A2.4_T1.js
+ * @description Use SPACE(\u0020)
+ */
+
+// CHECK#1
+if (eval("'\u0020str\u0020ing\u0020'") !== "\u0020str\u0020ing\u0020") {
+ $ERROR('#1: eval("\'\\u0020str\\u0020ing\\u0020\'") === "\\u0020str\\u0020ing\\u0020"');
+}
+
+//CHECK#2
+if (eval("' str ing '") !== " str ing ") {
+ $ERROR('#2: eval("\' str ing \'") === " str ing "');
+}
+
diff --git a/js/src/tests/test262/ch07/7.2/S7.2_A2.4_T2.js b/js/src/tests/test262/ch07/7.2/S7.2_A2.4_T2.js
new file mode 100644
index 000000000..b61d2313d
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.2/S7.2_A2.4_T2.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.
+
+/**
+ * SPACE (U+0020) may occur within strings
+ *
+ * @path ch07/7.2/S7.2_A2.4_T2.js
+ * @description Use real SPACE
+ */
+
+//CHECK#1
+if (" str ing " !== "\u0020str\u0020ing\u0020") {
+ $ERROR('#1: " str ing " === "\\u0020str\\u0020ing\\u0020"');
+}
+
diff --git a/js/src/tests/test262/ch07/7.2/S7.2_A2.5_T1.js b/js/src/tests/test262/ch07/7.2/S7.2_A2.5_T1.js
new file mode 100644
index 000000000..60fb7f358
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.2/S7.2_A2.5_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.
+
+/**
+ * NO-BREAK SPACE (U+00A0) may occur within strings
+ *
+ * @path ch07/7.2/S7.2_A2.5_T1.js
+ * @description Use NO-BREAK SPACE(\u00A0)
+ */
+
+// CHECK#1
+if (eval("'\u00A0str\u00A0ing\u00A0'") !== "\u00A0str\u00A0ing\u00A0") {
+ $ERROR('#1: eval("\'\\u00A0str\\u00A0ing\\u00A0\'") === "\\u00A0str\\u00A0ing\\u00A0"');
+}
+
diff --git a/js/src/tests/test262/ch07/7.2/S7.2_A2.5_T2.js b/js/src/tests/test262/ch07/7.2/S7.2_A2.5_T2.js
new file mode 100644
index 000000000..0cf26e596
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.2/S7.2_A2.5_T2.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.
+
+/**
+ * NO-BREAK SPACE (U+00A0) may occur within strings
+ *
+ * @path ch07/7.2/S7.2_A2.5_T2.js
+ * @description Use real NO-BREAK SPACE
+ */
+
+//CHECK#1
+if (" str ing " !== "\u00A0str\u00A0ing\u00A0") {
+ $ERROR('#1: " str ing " === "\\u00A0str\\u00A0ing\\u00A0"');
+}
+
diff --git a/js/src/tests/test262/ch07/7.2/S7.2_A3.1_T1.js b/js/src/tests/test262/ch07/7.2/S7.2_A3.1_T1.js
new file mode 100644
index 000000000..c8eae5be2
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.2/S7.2_A3.1_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.
+
+/**
+ * Single line comment can contain HORIZONTAL TAB (U+0009)
+ *
+ * @path ch07/7.2/S7.2_A3.1_T1.js
+ * @description Use HORIZONTAL TAB(\u0009)
+ */
+
+// CHECK#1
+eval("//\u0009 single line \u0009 comment \u0009");
+
+//CHECK#2
+var x = 0;
+eval("//\u0009 single line \u0009 comment \u0009 x = 1;");
+if (x !== 0) {
+ $ERROR('#1: var x = 0; eval("//\\u0009 single line \\u0009 comment \\u0009 x = 1;"); x === 0. Actual: ' + (x));
+}
+
diff --git a/js/src/tests/test262/ch07/7.2/S7.2_A3.1_T2.js b/js/src/tests/test262/ch07/7.2/S7.2_A3.1_T2.js
new file mode 100644
index 000000000..b5b479240
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.2/S7.2_A3.1_T2.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.
+
+/**
+ * Single line comment can contain HORIZONTAL TAB (U+0009)
+ *
+ * @path ch07/7.2/S7.2_A3.1_T2.js
+ * @description Use real HORIZONTAL TAB
+ */
+
+//CHECK#1
+var x = 0;
+// single line comment x = 1;
+if (x !== 0) {
+ $ERROR('#1: var x = 0; // single line comment x = 1; x === 0. Actual: ' + (x));
+}
+
diff --git a/js/src/tests/test262/ch07/7.2/S7.2_A3.2_T1.js b/js/src/tests/test262/ch07/7.2/S7.2_A3.2_T1.js
new file mode 100644
index 000000000..435a2493f
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.2/S7.2_A3.2_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.
+
+/**
+ * Single line comment can contain VERTICAL TAB (U+000B)
+ *
+ * @path ch07/7.2/S7.2_A3.2_T1.js
+ * @description Use VERTICAL TAB(\u000B)
+ */
+
+// CHECK#1
+eval("//\u000B single line \u000B comment \u000B");
+
+//CHECK#2
+var x = 0;
+eval("//\u000B single line \u000B comment \u000B x = 1;");
+if (x !== 0) {
+ $ERROR('#1: var x = 0; eval("//\\u000B single line \\u000B comment \\u000B x = 1;"); x === 0. Actual: ' + (x));
+}
+
diff --git a/js/src/tests/test262/ch07/7.2/S7.2_A3.2_T2.js b/js/src/tests/test262/ch07/7.2/S7.2_A3.2_T2.js
new file mode 100644
index 000000000..cfdd6bc0a
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.2/S7.2_A3.2_T2.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.
+
+/**
+ * Single line comment can contain VERTICAL TAB (U+000B)
+ *
+ * @path ch07/7.2/S7.2_A3.2_T2.js
+ * @description Use real VERTICAL TAB
+ */
+
+//CHECK#1
+var x = 0;
+// single line comment x = 1;
+if (x !== 0) {
+ $ERROR('#1: var x = 0; // single line comment x = 1; x === 0. Actual: ' + (x));
+}
+
diff --git a/js/src/tests/test262/ch07/7.2/S7.2_A3.3_T1.js b/js/src/tests/test262/ch07/7.2/S7.2_A3.3_T1.js
new file mode 100644
index 000000000..260d07073
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.2/S7.2_A3.3_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.
+
+/**
+ * Single line comment can contain FORM FEED (U+000C)
+ *
+ * @path ch07/7.2/S7.2_A3.3_T1.js
+ * @description Use FORM FEED(\u000C)
+ */
+
+// CHECK#1
+eval("//\u000C single line \u000C comment \u000C");
+
+//CHECK#2
+var x = 0;
+eval("//\u000C single line \u000C comment \u000C x = 1;");
+if (x !== 0) {
+ $ERROR('#1: var x = 0; eval("//\\u000C single line \\u000C comment \\u000C x = 1;"); x === 0. Actual: ' + (x));
+}
+
diff --git a/js/src/tests/test262/ch07/7.2/S7.2_A3.3_T2.js b/js/src/tests/test262/ch07/7.2/S7.2_A3.3_T2.js
new file mode 100644
index 000000000..f1ce32510
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.2/S7.2_A3.3_T2.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.
+
+/**
+ * Single line comment can contain FORM FEED (U+000C)
+ *
+ * @path ch07/7.2/S7.2_A3.3_T2.js
+ * @description Use real FORM FEED
+ */
+
+//CHECK#1
+var x = 0;
+// single line comment x = 1;
+if (x !== 0) {
+ $ERROR('#1: var x = 0; // single line comment x = 1; x === 0. Actual: ' + (x));
+}
+
diff --git a/js/src/tests/test262/ch07/7.2/S7.2_A3.4_T1.js b/js/src/tests/test262/ch07/7.2/S7.2_A3.4_T1.js
new file mode 100644
index 000000000..41264606b
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.2/S7.2_A3.4_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.
+
+/**
+ * Single line comment can contain SPACE (U+0020)
+ *
+ * @path ch07/7.2/S7.2_A3.4_T1.js
+ * @description Use SPACE(\u0020)
+ */
+
+// CHECK#1
+eval("//\u0020 single line \u0020 comment \u0020");
+
+//CHECK#2
+var x = 0;
+eval("//\u0020 single line \u0020 comment \u0020 x = 1;");
+if (x !== 0) {
+ $ERROR('#1: var x = 0; eval("//\\u0020 single line \\u0020 comment \\u0020 x = 1;"); x === 0. Actual: ' + (x));
+}
+
diff --git a/js/src/tests/test262/ch07/7.2/S7.2_A3.4_T2.js b/js/src/tests/test262/ch07/7.2/S7.2_A3.4_T2.js
new file mode 100644
index 000000000..bfc4650fe
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.2/S7.2_A3.4_T2.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.
+
+/**
+ * Single line comment can contain SPACE (U+0020)
+ *
+ * @path ch07/7.2/S7.2_A3.4_T2.js
+ * @description Use real SPACE
+ */
+
+//CHECK#1
+var x = 0;
+// single line comment x = 1;
+if (x !== 0) {
+ $ERROR('#1: var x = 0; // single line comment x = 1; x === 0. Actual: ' + (x));
+}
+
diff --git a/js/src/tests/test262/ch07/7.2/S7.2_A3.5_T1.js b/js/src/tests/test262/ch07/7.2/S7.2_A3.5_T1.js
new file mode 100644
index 000000000..6d12abddf
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.2/S7.2_A3.5_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.
+
+/**
+ * Single line comment can contain NO-BREAK SPACE (U+00A0)
+ *
+ * @path ch07/7.2/S7.2_A3.5_T1.js
+ * @description Use NO-BREAK SPACE(\u00A0)
+ */
+
+// CHECK#1
+eval("//\u00A0 single line \u00A0 comment \u00A0");
+
+//CHECK#2
+var x = 0;
+eval("//\u00A0 single line \u00A0 comment \u00A0 x = 1;");
+if (x !== 0) {
+ $ERROR('#1: var x = 0; eval("//\\u00A0 single line \\u00A0 comment \\u00A0 x = 1;"); x === 0. Actual: ' + (x));
+}
+
diff --git a/js/src/tests/test262/ch07/7.2/S7.2_A3.5_T2.js b/js/src/tests/test262/ch07/7.2/S7.2_A3.5_T2.js
new file mode 100644
index 000000000..2085a3b38
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.2/S7.2_A3.5_T2.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.
+
+/**
+ * Single line comment can contain NO-BREAK SPACE (U+00A0)
+ *
+ * @path ch07/7.2/S7.2_A3.5_T2.js
+ * @description Use real NO-BREAK SPACE
+ */
+
+//CHECK#1
+var x = 0;
+// single line comment x = 1;
+if (x !== 0) {
+ $ERROR('#1: var x = 0; // single line comment x = 1; x === 0. Actual: ' + (x));
+}
+
diff --git a/js/src/tests/test262/ch07/7.2/S7.2_A4.1_T1.js b/js/src/tests/test262/ch07/7.2/S7.2_A4.1_T1.js
new file mode 100644
index 000000000..6881a144f
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.2/S7.2_A4.1_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.
+
+/**
+ * Multi line comment can contain HORIZONTAL TAB (U+0009)
+ *
+ * @path ch07/7.2/S7.2_A4.1_T1.js
+ * @description Use HORIZONTAL TAB(\u0009)
+ */
+
+// CHECK#1
+eval("/*\u0009 multi line \u0009 comment \u0009*/");
+
+//CHECK#2
+var x = 0;
+eval("/*\u0009 multi line \u0009 comment \u0009 x = 1;*/");
+if (x !== 0) {
+ $ERROR('#1: var x = 0; eval("/*\\u0009 multi line \\u0009 comment \\u0009 x = 1;*/"); x === 0. Actual: ' + (x));
+}
+
diff --git a/js/src/tests/test262/ch07/7.2/S7.2_A4.1_T2.js b/js/src/tests/test262/ch07/7.2/S7.2_A4.1_T2.js
new file mode 100644
index 000000000..a7d7cb758
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.2/S7.2_A4.1_T2.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.
+
+/**
+ * Multi line comment can contain HORIZONTAL TAB (U+0009)
+ *
+ * @path ch07/7.2/S7.2_A4.1_T2.js
+ * @description Use real HORIZONTAL TAB
+ */
+
+/*CHECK#1*/
+var x = 0;
+/* multi line comment x = 1;*/
+if (x !== 0) {
+ $ERROR('#1: var x = 0; /* multi line comment x = 1;*/ x === 0. Actual: ' + (x));
+}
+
diff --git a/js/src/tests/test262/ch07/7.2/S7.2_A4.2_T1.js b/js/src/tests/test262/ch07/7.2/S7.2_A4.2_T1.js
new file mode 100644
index 000000000..a3361d47c
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.2/S7.2_A4.2_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.
+
+/**
+ * Multi line comment can contain VERTICAL TAB (U+000B)
+ *
+ * @path ch07/7.2/S7.2_A4.2_T1.js
+ * @description Use VERTICAL TAB(\u000B)
+ */
+
+// CHECK#1
+eval("/*\u000B multi line \u000B comment \u000B*/");
+
+//CHECK#2
+var x = 0;
+eval("/*\u000B multi line \u000B comment \u000B x = 1;*/");
+if (x !== 0) {
+ $ERROR('#1: var x = 0; eval("/*\\u000B multi line \\u000B comment \\u000B x = 1;*/"); x === 0. Actual: ' + (x));
+}
+
diff --git a/js/src/tests/test262/ch07/7.2/S7.2_A4.2_T2.js b/js/src/tests/test262/ch07/7.2/S7.2_A4.2_T2.js
new file mode 100644
index 000000000..87ef32235
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.2/S7.2_A4.2_T2.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.
+
+/**
+ * Multi line comment can contain VERTICAL TAB (U+000B)
+ *
+ * @path ch07/7.2/S7.2_A4.2_T2.js
+ * @description Use real VERTICAL TAB
+ */
+
+/*CHECK#1*/
+var x = 0;
+/* multi line comment x = 1;*/
+if (x !== 0) {
+ $ERROR('#1: var x = 0; /* multi line comment x = 1;*/ x === 0. Actual: ' + (x));
+}
+
diff --git a/js/src/tests/test262/ch07/7.2/S7.2_A4.3_T1.js b/js/src/tests/test262/ch07/7.2/S7.2_A4.3_T1.js
new file mode 100644
index 000000000..689d28790
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.2/S7.2_A4.3_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.
+
+/**
+ * Multi line comment can contain FORM FEED (U+000C)
+ *
+ * @path ch07/7.2/S7.2_A4.3_T1.js
+ * @description Use FORM FEED(\u000C)
+ */
+
+// CHECK#1
+eval("/*\u000C multi line \u000C comment \u000C*/");
+
+//CHECK#2
+var x = 0;
+eval("/*\u000C multi line \u000C comment \u000C x = 1;*/");
+if (x !== 0) {
+ $ERROR('#1: var x = 0; eval("/*\\u000C multi line \\u000C comment \\u000C x = 1;*/"); x === 0. Actual: ' + (x));
+}
+
diff --git a/js/src/tests/test262/ch07/7.2/S7.2_A4.3_T2.js b/js/src/tests/test262/ch07/7.2/S7.2_A4.3_T2.js
new file mode 100644
index 000000000..f6f404372
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.2/S7.2_A4.3_T2.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.
+
+/**
+ * Multi line comment can contain FORM FEED (U+000C)
+ *
+ * @path ch07/7.2/S7.2_A4.3_T2.js
+ * @description Use real FORM FEED
+ */
+
+/*CHECK#1*/
+var x = 0;
+/* multi line comment x = 1;*/
+if (x !== 0) {
+ $ERROR('#1: var x = 0; /* multi line comment x = 1;*/ x === 0. Actual: ' + (x));
+}
+
diff --git a/js/src/tests/test262/ch07/7.2/S7.2_A4.4_T1.js b/js/src/tests/test262/ch07/7.2/S7.2_A4.4_T1.js
new file mode 100644
index 000000000..9f5908e17
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.2/S7.2_A4.4_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.
+
+/**
+ * Multi line comment can contain SPACE (U+0020)
+ *
+ * @path ch07/7.2/S7.2_A4.4_T1.js
+ * @description Use SPACE(\u0020)
+ */
+
+// CHECK#1
+eval("/*\u0020 multi line \u0020 comment \u0020*/");
+
+//CHECK#2
+var x = 0;
+eval("/*\u0020 multi line \u0020 comment \u0020 x = 1;*/");
+if (x !== 0) {
+ $ERROR('#1: var x = 0; eval("/*\\u0020 multi line \\u0020 comment \\u0020 x = 1;*/"); x === 0. Actual: ' + (x));
+}
+
diff --git a/js/src/tests/test262/ch07/7.2/S7.2_A4.4_T2.js b/js/src/tests/test262/ch07/7.2/S7.2_A4.4_T2.js
new file mode 100644
index 000000000..ce446861e
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.2/S7.2_A4.4_T2.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.
+
+/**
+ * Multi line comment can contain SPACE (U+0020)
+ *
+ * @path ch07/7.2/S7.2_A4.4_T2.js
+ * @description Use real SPACE
+ */
+
+/*CHECK#1*/
+var x = 0;
+/* multi line comment x = 1;*/
+if (x !== 0) {
+ $ERROR('#1: var x = 0; /* multi line comment x = 1;*/ x === 0. Actual: ' + (x));
+}
+
diff --git a/js/src/tests/test262/ch07/7.2/S7.2_A4.5_T1.js b/js/src/tests/test262/ch07/7.2/S7.2_A4.5_T1.js
new file mode 100644
index 000000000..cef5216e3
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.2/S7.2_A4.5_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.
+
+/**
+ * Multi line comment can contain NO-BREAK SPACE (U+00A0)
+ *
+ * @path ch07/7.2/S7.2_A4.5_T1.js
+ * @description Use NO-BREAK SPACE(\u00A0)
+ */
+
+// CHECK#1
+eval("/*\u00A0 multi line \u00A0 comment \u00A0*/");
+
+//CHECK#2
+var x = 0;
+eval("/*\u00A0 multi line \u00A0 comment \u00A0 x = 1;*/");
+if (x !== 0) {
+ $ERROR('#1: var x = 0; eval("/*\\u00A0 multi line \\u00A0 comment \\u00A0 x = 1;*/"); x === 0. Actual: ' + (x));
+}
+
diff --git a/js/src/tests/test262/ch07/7.2/S7.2_A4.5_T2.js b/js/src/tests/test262/ch07/7.2/S7.2_A4.5_T2.js
new file mode 100644
index 000000000..c4457c432
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.2/S7.2_A4.5_T2.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.
+
+/**
+ * Multi line comment can contain NO-BREAK SPACE (U+00A0)
+ *
+ * @path ch07/7.2/S7.2_A4.5_T2.js
+ * @description Use real NO-BREAK SPACE
+ */
+
+/*CHECK#1*/
+var x = 0;
+/* multi line comment x = 1;*/
+if (x !== 0) {
+ $ERROR('#1: var x = 0; /* multi line comment x = 1;*/ x === 0. Actual: ' + (x));
+}
+
diff --git a/js/src/tests/test262/ch07/7.2/S7.2_A5_T1.js b/js/src/tests/test262/ch07/7.2/S7.2_A5_T1.js
new file mode 100644
index 000000000..6fb19c55d
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.2/S7.2_A5_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.
+
+/**
+ * White space cannot be expressed as a Unicode escape sequence consisting of six characters, namely \u plus four hexadecimal digits
+ *
+ * @path ch07/7.2/S7.2_A5_T1.js
+ * @description Use TAB (U+0009)
+ * @negative
+ */
+
+var\u0009x;
+
diff --git a/js/src/tests/test262/ch07/7.2/S7.2_A5_T2.js b/js/src/tests/test262/ch07/7.2/S7.2_A5_T2.js
new file mode 100644
index 000000000..1036b4ffa
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.2/S7.2_A5_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.
+
+/**
+ * White space cannot be expressed as a Unicode escape sequence consisting of six characters, namely \u plus four hexadecimal digits
+ *
+ * @path ch07/7.2/S7.2_A5_T2.js
+ * @description Use VERTICAL TAB (U+000B)
+ * @negative
+ */
+
+var\u000Bx;
+
diff --git a/js/src/tests/test262/ch07/7.2/S7.2_A5_T3.js b/js/src/tests/test262/ch07/7.2/S7.2_A5_T3.js
new file mode 100644
index 000000000..4eb8212cd
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.2/S7.2_A5_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.
+
+/**
+ * White space cannot be expressed as a Unicode escape sequence consisting of six characters, namely \u plus four hexadecimal digits
+ *
+ * @path ch07/7.2/S7.2_A5_T3.js
+ * @description Use FORM FEED (U+000C)
+ * @negative
+ */
+
+var\u000Cx;
+
diff --git a/js/src/tests/test262/ch07/7.2/S7.2_A5_T4.js b/js/src/tests/test262/ch07/7.2/S7.2_A5_T4.js
new file mode 100644
index 000000000..9a47a618d
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.2/S7.2_A5_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.
+
+/**
+ * White space cannot be expressed as a Unicode escape sequence consisting of six characters, namely \u plus four hexadecimal digits
+ *
+ * @path ch07/7.2/S7.2_A5_T4.js
+ * @description Use SPACE (U+0020)
+ * @negative
+ */
+
+var\u0020x;
+
diff --git a/js/src/tests/test262/ch07/7.2/S7.2_A5_T5.js b/js/src/tests/test262/ch07/7.2/S7.2_A5_T5.js
new file mode 100644
index 000000000..5076c3b24
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.2/S7.2_A5_T5.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.
+
+/**
+ * White space cannot be expressed as a Unicode escape sequence consisting of six characters, namely \u plus four hexadecimal digits
+ *
+ * @path ch07/7.2/S7.2_A5_T5.js
+ * @description Use NO-BREAK SPACE (U+00A0)
+ * @negative
+ */
+
+var\u00A0x;
+
diff --git a/js/src/tests/test262/ch07/7.2/browser.js b/js/src/tests/test262/ch07/7.2/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.2/browser.js
diff --git a/js/src/tests/test262/ch07/7.2/shell.js b/js/src/tests/test262/ch07/7.2/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.2/shell.js
diff --git a/js/src/tests/test262/ch07/7.3/7.3-1.js b/js/src/tests/test262/ch07/7.3/7.3-1.js
new file mode 100644
index 000000000..3309e649a
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.3/7.3-1.js
@@ -0,0 +1,16 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.3/7.3-1.js
+ * @description 7.3 - ES5 recognizes the character <LS> (\u2028) as line terminators when parsing statements
+ */
+
+
+function testcase() {
+ eval("var test7_3_1\u2028prop = 66;");
+ return (prop === 66) && ((typeof test7_3_1) === "undefined");
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch07/7.3/7.3-10.js b/js/src/tests/test262/ch07/7.3/7.3-10.js
new file mode 100644
index 000000000..141841b9c
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.3/7.3-10.js
@@ -0,0 +1,20 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.3/7.3-10.js
+ * @description 7.3 - ES5 recognizes the character <PS> (\u2029) as a NonEscapeCharacter
+ */
+
+
+function testcase() {
+ try {
+ eval("var prop = \\u2029;");
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch07/7.3/7.3-11.js b/js/src/tests/test262/ch07/7.3/7.3-11.js
new file mode 100644
index 000000000..42116da20
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.3/7.3-11.js
@@ -0,0 +1,19 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.3/7.3-11.js
+ * @description 7.3 - ES5 specifies that a multiline comment that contains a line terminator character <LS> (\u2028) must be treated as a single line terminator for the purposes of semicolon insertion
+ */
+
+
+function testcase() {
+ /*MultiLine
+ Comments
+ \u2028 var = ;
+ */
+ return true;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch07/7.3/7.3-12.js b/js/src/tests/test262/ch07/7.3/7.3-12.js
new file mode 100644
index 000000000..b993f5bde
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.3/7.3-12.js
@@ -0,0 +1,19 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.3/7.3-12.js
+ * @description 7.3 - ES5 specifies that a multiline comment that contains a line terminator character <PS> (\u2029) must be treated as a single line terminator for the purposes of semicolon insertion
+ */
+
+
+function testcase() {
+ /*MultiLine
+ Comments
+ \u2029 var = ;
+ */
+ return true;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch07/7.3/7.3-13.js b/js/src/tests/test262/ch07/7.3/7.3-13.js
new file mode 100644
index 000000000..d7f941c38
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.3/7.3-13.js
@@ -0,0 +1,19 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.3/7.3-13.js
+ * @description 7.3 - ES5 specifies that a multiline comment that contains a line terminator character <CR> (\u000D) must be treated as a single line terminator for the purposes of semicolon insertion
+ */
+
+
+function testcase() {
+ /*MultiLine
+ Comments
+ \u000D var = ;
+ */
+ return true;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch07/7.3/7.3-14.js b/js/src/tests/test262/ch07/7.3/7.3-14.js
new file mode 100644
index 000000000..8f973ae06
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.3/7.3-14.js
@@ -0,0 +1,19 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.3/7.3-14.js
+ * @description 7.3 - ES5 specifies that a multiline comment that contains a line terminator character <LF> (\u000A) must be treated as a single line terminator for the purposes of semicolon insertion
+ */
+
+
+function testcase() {
+ /*MultiLine
+ Comments
+ \u000A var = ;
+ */
+ return true;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch07/7.3/7.3-15.js b/js/src/tests/test262/ch07/7.3/7.3-15.js
new file mode 100644
index 000000000..7dc88a644
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.3/7.3-15.js
@@ -0,0 +1,16 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.3/7.3-15.js
+ * @description 7.3 - ES5 recognize <BOM> (\uFFFF) as a whitespace character
+ */
+
+
+function testcase() {
+ var prop = "a\uFFFFa";
+ return prop.length === 3 && prop !== "aa" && prop[1] === "\uFFFF";
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch07/7.3/7.3-2.js b/js/src/tests/test262/ch07/7.3/7.3-2.js
new file mode 100644
index 000000000..95fb24280
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.3/7.3-2.js
@@ -0,0 +1,16 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.3/7.3-2.js
+ * @description 7.3 - ES5 recognizes the character <PS> (\u2029) as line terminators when parsing statements
+ */
+
+
+function testcase() {
+ eval("var test7_3_2\u2029prop = 66;");
+ return (prop===66) && ((typeof test7_3_2) === "undefined");
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch07/7.3/7.3-3.js b/js/src/tests/test262/ch07/7.3/7.3-3.js
new file mode 100644
index 000000000..5a05cd16e
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.3/7.3-3.js
@@ -0,0 +1,20 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.3/7.3-3.js
+ * @description 7.3 - ES5 recognizes the character <LS> (\u2028) as terminating SingleLineComments
+ */
+
+
+function testcase() {
+ try {
+ eval("//Single Line Comments\u2028 var =;");
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch07/7.3/7.3-4.js b/js/src/tests/test262/ch07/7.3/7.3-4.js
new file mode 100644
index 000000000..41285cb46
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.3/7.3-4.js
@@ -0,0 +1,20 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.3/7.3-4.js
+ * @description 7.3 - ES5 recognizes the character <PS> (\u2029) as terminating SingleLineComments
+ */
+
+
+function testcase() {
+ try {
+ eval("//Single Line Comments\u2029 var =;");
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch07/7.3/7.3-5.js b/js/src/tests/test262/ch07/7.3/7.3-5.js
new file mode 100644
index 000000000..ad65ebbf2
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.3/7.3-5.js
@@ -0,0 +1,16 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.3/7.3-5.js
+ * @description 7.3 - ES5 recognizes the character <LS> (\u2028) as terminating string literal
+ */
+
+
+function testcase() {
+ var prop = "66\u2028123";
+ return prop === "66\u2028123" && prop[2] === "\u2028" && prop.length === 6;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch07/7.3/7.3-6.js b/js/src/tests/test262/ch07/7.3/7.3-6.js
new file mode 100644
index 000000000..5035eae1c
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.3/7.3-6.js
@@ -0,0 +1,16 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.3/7.3-6.js
+ * @description 7.3 - ES5 recognizes the character <PS> (\u2029) as terminating string literal
+ */
+
+
+function testcase() {
+ var prop = "66\u2029123";
+ return prop === "66\u2029123" && prop[2] === "\u2029" && prop.length === 6;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch07/7.3/7.3-7.js b/js/src/tests/test262/ch07/7.3/7.3-7.js
new file mode 100644
index 000000000..641117ddf
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.3/7.3-7.js
@@ -0,0 +1,21 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.3/7.3-7.js
+ * @description 7.3 - ES5 recognizes the character <LS> (\u2028) as terminating regular expression literals
+ */
+
+
+function testcase() {
+ try {
+ eval("var regExp = /[\u2028]/");
+ regExp.test("");
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch07/7.3/7.3-8.js b/js/src/tests/test262/ch07/7.3/7.3-8.js
new file mode 100644
index 000000000..7ac4481b1
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.3/7.3-8.js
@@ -0,0 +1,21 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.3/7.3-8.js
+ * @description 7.3 - ES5 recognizes the character <PS> (\u2029) as terminating regular expression literals
+ */
+
+
+function testcase() {
+ try {
+ eval("var regExp = /[\u2029]/");
+ regExp.test("");
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch07/7.3/7.3-9.js b/js/src/tests/test262/ch07/7.3/7.3-9.js
new file mode 100644
index 000000000..53e964491
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.3/7.3-9.js
@@ -0,0 +1,20 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.3/7.3-9.js
+ * @description 7.3 - ES5 recognizes the character <LS> (\u2028) as a NonEscapeCharacter
+ */
+
+
+function testcase() {
+ try {
+ eval("var prop = \\u2028;");
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch07/7.3/S7.3_A1.1_T1.js b/js/src/tests/test262/ch07/7.3/S7.3_A1.1_T1.js
new file mode 100644
index 000000000..b5814c2e0
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.3/S7.3_A1.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.
+
+/**
+ * LINE FEED (U+000A) may occur between any two tokens
+ *
+ * @path ch07/7.3/S7.3_A1.1_T1.js
+ * @description Insert LINE FEED (\u000A and \n) between tokens of var x=1
+ */
+
+// CHECK#1
+eval("\u000Avar\u000Ax\u000A=\u000A1\u000A");
+if (x !== 1) {
+ $ERROR('#1: eval("\\u000Avar\\u000Ax\\u000A=\\u000A1\\u000A"); x === 1. Actual: ' + (x));
+}
+
+//CHECK#2
+eval("\u000A" + "var" + "\u000A" + "x" + "\u000A" + "=" + "\u000A" + "1" + "\u000A");
+if (x !== 1) {
+ $ERROR('#2: eval("\\u000A" + "var" + "\\u000A" + "x" + "\\u000A" + "=" + "\\u000A" + "1" + "\\u000A"); x === 1. Actual: ' + (x));
+}
+
+//CHECK#3
+eval("\nvar\nx\n=\n1\n");
+if (x !== 1) {
+ $ERROR('#3: eval("\\nvar\\nx\\n=\\n1\\n"); x === 1. Actual: ' + (x));
+}
+
+//CHECK#4
+eval("\n" + "var" + "\n" + "x" + "\n" + "=" + "\n" + "1" + "\n");
+if (x !== 1) {
+ $ERROR('#4: eval("\\n" + "var" + "\\n" + "x" + "\\n" + "=" + "\\n" + "1" + "\\n"); x === 1. Actual: ' + (x));
+}
+
+//CHECK#5
+eval("\u000A" + "var" + "\n" + "x" + "\u000A" + "=" + "\n" + "1" + "\u000A");
+if (x !== 1) {
+ $ERROR('#5: eval("\\u000A" + "var" + "\\n" + "x" + "\\u000A" + "=" + "\\n" + "1" + "\\u000A"); x === 1. Actual: ' + (x));
+}
+
diff --git a/js/src/tests/test262/ch07/7.3/S7.3_A1.1_T2.js b/js/src/tests/test262/ch07/7.3/S7.3_A1.1_T2.js
new file mode 100644
index 000000000..b4780361b
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.3/S7.3_A1.1_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.
+
+/**
+ * LINE FEED (U+000A) may occur between any two tokens
+ *
+ * @path ch07/7.3/S7.3_A1.1_T2.js
+ * @description Insert real LINE FEED between tokens of var x=1
+ */
+
+//CHECK#1
+var
+x
+=
+1;
+if (x !== 1) {
+ $ERROR('#1: var\\nx\\n=\\n1\\n; x === 1. Actual: ' + (x));
+}
+
diff --git a/js/src/tests/test262/ch07/7.3/S7.3_A1.2_T1.js b/js/src/tests/test262/ch07/7.3/S7.3_A1.2_T1.js
new file mode 100644
index 000000000..bb11122f7
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.3/S7.3_A1.2_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.
+
+/**
+ * CARRIAGE RETURN (U+000D) may occur between any two tokens
+ *
+ * @path ch07/7.3/S7.3_A1.2_T1.js
+ * @description Insert CARRIAGE RETURN (\u000D and \r) between tokens of var x=1
+ */
+
+// CHECK#1
+eval("\u000Dvar\u000Dx\u000D=\u000D1\u000D");
+if (x !== 1) {
+ $ERROR('#1: eval("\\u000Dvar\\u000Dx\\u000D=\\u000D1\\u000D"); x === 1. Actual: ' + (x));
+}
+
+//CHECK#2
+eval("\u000D" + "var" + "\u000D" + "x" + "\u000D" + "=" + "\u000D" + "1" + "\u000D");
+if (x !== 1) {
+ $ERROR('#2: eval("\\u000D" + "var" + "\\u000D" + "x" + "\\u000D" + "=" + "\\u000D" + "1" + "\\u000D"); x === 1. Actual: ' + (x));
+}
+
+//CHECK#3
+eval("\rvar\rx\r=\r1\r");
+if (x !== 1) {
+ $ERROR('#3: eval("\\rvar\\rx\\r=\\r1\\r"); x === 1. Actual: ' + (x));
+}
+
+//CHECK#4
+eval("\r" + "var" + "\r" + "x" + "\r" + "=" + "\r" + "1" + "\r");
+if (x !== 1) {
+ $ERROR('#4: eval("\\r" + "var" + "\\r" + "x" + "\\r" + "=" + "\\r" + "1" + "\\r"); x === 1. Actual: ' + (x));
+}
+
+//CHECK#5
+eval("\u000D" + "var" + "\r" + "x" + "\u000D" + "=" + "\r" + "1" + "\u000D");
+if (x !== 1) {
+ $ERROR('#5: eval("\\u000D" + "var" + "\\r" + "x" + "\\u000D" + "=" + "\\r" + "1" + "\\u000D"); x === 1. Actual: ' + (x));
+}
+
diff --git a/js/src/tests/test262/ch07/7.3/S7.3_A1.2_T2.js b/js/src/tests/test262/ch07/7.3/S7.3_A1.2_T2.js
new file mode 100644
index 000000000..52fb9b52a
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.3/S7.3_A1.2_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.
+
+/**
+ * CARRIAGE RETURN (U+000D) may occur between any two tokens
+ *
+ * @path ch07/7.3/S7.3_A1.2_T2.js
+ * @description Insert real CARRIAGE RETURN between tokens of var x=1
+ */
+
+//CHECK#1
+var
+x
+=
+1;
+if (x !== 1) {
+ $ERROR('#1: var\\nx\\n=\\n1\\n; x === 1. Actual: ' + (x));
+}
+
diff --git a/js/src/tests/test262/ch07/7.3/S7.3_A1.3.js b/js/src/tests/test262/ch07/7.3/S7.3_A1.3.js
new file mode 100644
index 000000000..bf8281937
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.3/S7.3_A1.3.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.
+
+/**
+ * LINE SEPARATOR (U+2028) may occur between any two tokens
+ *
+ * @path ch07/7.3/S7.3_A1.3.js
+ * @description Insert LINE SEPARATOR (\u2028) between tokens of var x=1
+ */
+
+// CHECK#1
+eval("\u2028var\u2028x\u2028=\u20281\u2028");
+if (x !== 1) {
+ $ERROR('#1: eval("\\u2028var\\u2028x\\u2028=\\u20281\\u2028"); x === 1. Actual: ' + (x));
+}
+
+//CHECK#2
+eval("\u2028" + "var" + "\u2028" + "x" + "\u2028" + "=" + "\u2028" + "1" + "\u2028");
+if (x !== 1) {
+ $ERROR('#2: eval("\\u2028" + "var" + "\\u2028" + "x" + "\\u2028" + "=" + "\\u2028" + "1" + "\\u2028"); x === 1. Actual: ' + (x));
+}
+
+
diff --git a/js/src/tests/test262/ch07/7.3/S7.3_A1.4.js b/js/src/tests/test262/ch07/7.3/S7.3_A1.4.js
new file mode 100644
index 000000000..f761d0376
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.3/S7.3_A1.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.
+
+/**
+ * PARAGRAPH SEPARATOR (U+2029) may occur between any two tokens
+ *
+ * @path ch07/7.3/S7.3_A1.4.js
+ * @description Insert PARAGRAPH SEPARATOR (\u2029) between tokens of var x=1
+ */
+
+// CHECK#1
+eval("\u2029var\u2029x\u2029=\u20291\u2029");
+if (x !== 1) {
+ $ERROR('#1: eval("\\u2029var\\u2029x\\u2029=\\u20291\\u2029"); x === 1. Actual: ' + (x));
+}
+
+//CHECK#2
+eval("\u2029" + "var" + "\u2029" + "x" + "\u2029" + "=" + "\u2029" + "1" + "\u2029");
+if (x !== 1) {
+ $ERROR('#2: eval("\\u2029" + "var" + "\\u2029" + "x" + "\\u2029" + "=" + "\\u2029" + "1" + "\\u2029"); x === 1. Actual: ' + (x));
+}
+
+
+
+
diff --git a/js/src/tests/test262/ch07/7.3/S7.3_A2.1_T1.js b/js/src/tests/test262/ch07/7.3/S7.3_A2.1_T1.js
new file mode 100644
index 000000000..16cb25e69
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.3/S7.3_A2.1_T1.js
@@ -0,0 +1,16 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * LINE FEED (U+000A) within strings is not allowed
+ *
+ * @path ch07/7.3/S7.3_A2.1_T1.js
+ * @description Insert LINE FEED (\u000A) into string
+ * @negative
+ */
+
+// CHECK#1
+if (eval("'\u000Astr\u000Aing\u000A'") === "\u000Astr\u000Aing\u000A") {
+ $ERROR('#1: eval("\'\\u000Astr\\u000Aing\\u000A\'") === "\\u000Astr\\u000Aing\\u000A"');
+}
+
diff --git a/js/src/tests/test262/ch07/7.3/S7.3_A2.1_T2.js b/js/src/tests/test262/ch07/7.3/S7.3_A2.1_T2.js
new file mode 100644
index 000000000..f587ec97e
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.3/S7.3_A2.1_T2.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.
+
+/**
+ * LINE FEED (U+000A) within strings is not allowed
+ *
+ * @path ch07/7.3/S7.3_A2.1_T2.js
+ * @description Use real LINE FEED into string
+ * @negative
+ */
+
+//CHECK#1
+"
+str
+ing
+";
+
diff --git a/js/src/tests/test262/ch07/7.3/S7.3_A2.2_T1.js b/js/src/tests/test262/ch07/7.3/S7.3_A2.2_T1.js
new file mode 100644
index 000000000..b58d20227
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.3/S7.3_A2.2_T1.js
@@ -0,0 +1,16 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * CARRIAGE RETURN (U+000D) within strings is not allowed
+ *
+ * @path ch07/7.3/S7.3_A2.2_T1.js
+ * @description Insert CARRIAGE RETURN (\u000D) into string
+ * @negative
+ */
+
+// CHECK#1
+if (eval("'\u000Dstr\u000Ding\u000D'") === "\u000Dstr\u000Ding\u000D") {
+ $ERROR('#1: eval("\'\\u000Dstr\\u000Ding\\u000D\'") === "\\u000Dstr\\u000Ding\\u000D"');
+}
+
diff --git a/js/src/tests/test262/ch07/7.3/S7.3_A2.2_T2.js b/js/src/tests/test262/ch07/7.3/S7.3_A2.2_T2.js
new file mode 100644
index 000000000..9e8c5e30d
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.3/S7.3_A2.2_T2.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.
+
+/**
+ * CARRIAGE RETURN (U+000D) within strings is not allowed
+ *
+ * @path ch07/7.3/S7.3_A2.2_T2.js
+ * @description Insert real CARRIAGE RETURN into string
+ * @negative
+ */
+
+//CHECK#1
+"
+str
+ing
+";
+
diff --git a/js/src/tests/test262/ch07/7.3/S7.3_A2.3.js b/js/src/tests/test262/ch07/7.3/S7.3_A2.3.js
new file mode 100644
index 000000000..645dfaaf3
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.3/S7.3_A2.3.js
@@ -0,0 +1,16 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * LINE SEPARATOR (U+2028) within strings is not allowed
+ *
+ * @path ch07/7.3/S7.3_A2.3.js
+ * @description Insert LINE SEPARATOR (\u2028) into string
+ * @negative
+ */
+
+// CHECK#1
+if (eval("'\u2028str\u2028ing\u2028'") === "\u2028str\u2028ing\u2028") {
+ $ERROR('#1: eval("\'\\u2028str\\u2028ing\\u2028\'") === "\\u2028str\\u2028ing\\u2028"');
+}
+
diff --git a/js/src/tests/test262/ch07/7.3/S7.3_A2.4.js b/js/src/tests/test262/ch07/7.3/S7.3_A2.4.js
new file mode 100644
index 000000000..00e185037
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.3/S7.3_A2.4.js
@@ -0,0 +1,16 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * PARAGRAPH SEPARATOR (U+2029) within strings is not allowed
+ *
+ * @path ch07/7.3/S7.3_A2.4.js
+ * @description Insert PARAGRAPH SEPARATOR (\u2029) into string
+ * @negative
+ */
+
+// CHECK#1
+if (eval("'\u2029str\u2029ing\u2029'") === "\u2029str\u2029ing\u2029") {
+ $ERROR('#1: eval("\'\\u2029str\\u2029ing\\u2029\'") === "\\u2029str\\u2029ing\\u2029"');
+}
+
diff --git a/js/src/tests/test262/ch07/7.3/S7.3_A3.1_T1.js b/js/src/tests/test262/ch07/7.3/S7.3_A3.1_T1.js
new file mode 100644
index 000000000..f44c153cf
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.3/S7.3_A3.1_T1.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.
+
+/**
+ * Single line comments can not contain LINE FEED (U+000A) inside
+ *
+ * @path ch07/7.3/S7.3_A3.1_T1.js
+ * @description Insert LINE FEED (\u000A) into single line comment
+ * @negative
+ */
+
+// CHECK#1
+eval("// single line \u000A comment");
+
diff --git a/js/src/tests/test262/ch07/7.3/S7.3_A3.1_T2.js b/js/src/tests/test262/ch07/7.3/S7.3_A3.1_T2.js
new file mode 100644
index 000000000..cb808a87a
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.3/S7.3_A3.1_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.
+
+/**
+ * Single line comments can not contain LINE FEED (U+000A) inside
+ *
+ * @path ch07/7.3/S7.3_A3.1_T2.js
+ * @description Insert LINE FEED (\u000A) into begin of single line comment
+ * @negative
+ */
+
+// CHECK#1
+eval("//\u000A single line comment");
+
diff --git a/js/src/tests/test262/ch07/7.3/S7.3_A3.1_T3.js b/js/src/tests/test262/ch07/7.3/S7.3_A3.1_T3.js
new file mode 100644
index 000000000..6394c939c
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.3/S7.3_A3.1_T3.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.
+
+/**
+ * Single line comments can not contain LINE FEED (U+000A) inside
+ *
+ * @path ch07/7.3/S7.3_A3.1_T3.js
+ * @description Insert real LINE FEED into single line comment
+ * @negative
+ */
+
+// CHECK#1
+//single
+line comment
+
diff --git a/js/src/tests/test262/ch07/7.3/S7.3_A3.2_T1.js b/js/src/tests/test262/ch07/7.3/S7.3_A3.2_T1.js
new file mode 100644
index 000000000..2fa270693
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.3/S7.3_A3.2_T1.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.
+
+/**
+ * Single line comments can not contain CARRIAGE RETURN (U+000D) inside
+ *
+ * @path ch07/7.3/S7.3_A3.2_T1.js
+ * @description Insert CARRIAGE RETURN (\u000D) into single line comment
+ * @negative
+ */
+
+// CHECK#1
+eval("// single line \u000D comment");
+
diff --git a/js/src/tests/test262/ch07/7.3/S7.3_A3.2_T2.js b/js/src/tests/test262/ch07/7.3/S7.3_A3.2_T2.js
new file mode 100644
index 000000000..9ffdc5cf9
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.3/S7.3_A3.2_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.
+
+/**
+ * Single line comments can not contain CARRIAGE RETURN (U+000D) inside
+ *
+ * @path ch07/7.3/S7.3_A3.2_T2.js
+ * @description Insert CARRIAGE RETURN (\u000D) into begin of single line comment
+ * @negative
+ */
+
+// CHECK#1
+eval("//\u000D single line comment");
+
diff --git a/js/src/tests/test262/ch07/7.3/S7.3_A3.2_T3.js b/js/src/tests/test262/ch07/7.3/S7.3_A3.2_T3.js
new file mode 100644
index 000000000..d16ee33be
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.3/S7.3_A3.2_T3.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.
+
+/**
+ * Single line comments can not contain CARRIAGE RETURN (U+000D) inside
+ *
+ * @path ch07/7.3/S7.3_A3.2_T3.js
+ * @description Insert real CARRIAGE RETURN into single line comment
+ * @negative
+ */
+
+// CHECK#1
+//single
+line comment
+
diff --git a/js/src/tests/test262/ch07/7.3/S7.3_A3.3_T1.js b/js/src/tests/test262/ch07/7.3/S7.3_A3.3_T1.js
new file mode 100644
index 000000000..ae926c456
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.3/S7.3_A3.3_T1.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.
+
+/**
+ * Single line comments can not contain LINE SEPARATOR (U+2028) inside
+ *
+ * @path ch07/7.3/S7.3_A3.3_T1.js
+ * @description Insert LINE SEPARATOR (\u2028) into single line comment
+ * @negative
+ */
+
+// CHECK#1
+eval("// single line \u2028 comment");
+
diff --git a/js/src/tests/test262/ch07/7.3/S7.3_A3.3_T2.js b/js/src/tests/test262/ch07/7.3/S7.3_A3.3_T2.js
new file mode 100644
index 000000000..43ff45843
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.3/S7.3_A3.3_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.
+
+/**
+ * Single line comments can not contain LINE SEPARATOR (U+2028) inside
+ *
+ * @path ch07/7.3/S7.3_A3.3_T2.js
+ * @description Insert LINE SEPARATOR (\u2028) into begin of single line comment
+ * @negative
+ */
+
+// CHECK#1
+eval("//\u2028 single line comment");
+
diff --git a/js/src/tests/test262/ch07/7.3/S7.3_A3.4_T1.js b/js/src/tests/test262/ch07/7.3/S7.3_A3.4_T1.js
new file mode 100644
index 000000000..1a8fae53f
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.3/S7.3_A3.4_T1.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.
+
+/**
+ * Single line comments can not contain PARAGRAPH SEPARATOR (U+2029) inside
+ *
+ * @path ch07/7.3/S7.3_A3.4_T1.js
+ * @description Insert PARAGRAPH SEPARATOR (\u2029) into single line comment
+ * @negative
+ */
+
+// CHECK#1
+eval("// single line \u2029 comment");
+
diff --git a/js/src/tests/test262/ch07/7.3/S7.3_A3.4_T2.js b/js/src/tests/test262/ch07/7.3/S7.3_A3.4_T2.js
new file mode 100644
index 000000000..8a6c59d8d
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.3/S7.3_A3.4_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.
+
+/**
+ * Single line comments can not contain PARAGRAPH SEPARATOR (U+2029) inside
+ *
+ * @path ch07/7.3/S7.3_A3.4_T2.js
+ * @description Insert PARAGRAPH SEPARATOR (\u2029) into begin of single line comment
+ * @negative
+ */
+
+// CHECK#1
+eval("//\u2029 single line comment");
+
diff --git a/js/src/tests/test262/ch07/7.3/S7.3_A4_T1.js b/js/src/tests/test262/ch07/7.3/S7.3_A4_T1.js
new file mode 100644
index 000000000..df523f9a3
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.3/S7.3_A4_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.
+
+/**
+ * Single line comments can contain Line Terminator at the end of line
+ *
+ * @path ch07/7.3/S7.3_A4_T1.js
+ * @description Insert LINE FEED (U+000A) into the end of single line comment
+ */
+
+// CHECK#1
+eval("// single line comment\u000A");
+
+// CHECK#2
+var x = 0;
+eval("// single line comment\u000A x = 1;");
+if (x !== 1) {
+ $ERROR('#1: var x = 0; eval("// single line comment\\u000A x = 1;"); x === 1. Actual: ' + (x));
+}
+
diff --git a/js/src/tests/test262/ch07/7.3/S7.3_A4_T2.js b/js/src/tests/test262/ch07/7.3/S7.3_A4_T2.js
new file mode 100644
index 000000000..d99dc7dc1
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.3/S7.3_A4_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.
+
+/**
+ * Single line comments can contain Line Terminator at the end of line
+ *
+ * @path ch07/7.3/S7.3_A4_T2.js
+ * @description Insert CARRIAGE RETURN (U+000D) into the end of single line comment
+ */
+
+// CHECK#1
+eval("// single line comment\u000D");
+
+// CHECK#2
+var x = 0;
+eval("// single line comment\u000D x = 1;");
+if (x !== 1) {
+ $ERROR('#1: var x = 0; eval("// single line comment\\u000D x = 1;"); x === 1. Actual: ' + (x));
+}
+
diff --git a/js/src/tests/test262/ch07/7.3/S7.3_A4_T3.js b/js/src/tests/test262/ch07/7.3/S7.3_A4_T3.js
new file mode 100644
index 000000000..5677bc0cd
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.3/S7.3_A4_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.
+
+/**
+ * Single line comments can contain Line Terminator at the end of line
+ *
+ * @path ch07/7.3/S7.3_A4_T3.js
+ * @description Insert LINE SEPARATOR (U+2028) into the end of single line comment
+ */
+
+// CHECK#1
+eval("// single line comment\u2028");
+
+// CHECK#2
+var x = 0;
+eval("// single line comment\u2028 x = 1;");
+if (x !== 1) {
+ $ERROR('#1: var x = 0; eval("// single line comment\\u2028 x = 1;"); x === 1. Actual: ' + (x));
+}
+
diff --git a/js/src/tests/test262/ch07/7.3/S7.3_A4_T4.js b/js/src/tests/test262/ch07/7.3/S7.3_A4_T4.js
new file mode 100644
index 000000000..c34f0e15e
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.3/S7.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.
+
+/**
+ * Single line comments can contain Line Terminator at the end of line
+ *
+ * @path ch07/7.3/S7.3_A4_T4.js
+ * @description Insert PARAGRAPH SEPARATOR (U+2029) into the end of single line comment
+ */
+
+// CHECK#1
+eval("// single line comment\u2029");
+
+// CHECK#2
+var x = 0;
+eval("// single line comment\u2029 x = 1;");
+if (x !== 1) {
+ $ERROR('#1: var x = 0; eval("// single line comment\\u2029 x = 1;"); x === 1. Actual: ' + (x));
+}
+
diff --git a/js/src/tests/test262/ch07/7.3/S7.3_A5.1_T1.js b/js/src/tests/test262/ch07/7.3/S7.3_A5.1_T1.js
new file mode 100644
index 000000000..fe8d7173e
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.3/S7.3_A5.1_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.
+
+/**
+ * Multi line comment can contain LINE FEED (U+000A)
+ *
+ * @path ch07/7.3/S7.3_A5.1_T1.js
+ * @description Insert LINE FEED (U+000A) into multi line comment
+ */
+
+// CHECK#1
+eval("/*\u000A multi line \u000A comment \u000A*/");
+
+//CHECK#2
+var x = 0;
+eval("/*\u000A multi line \u000A comment \u000A x = 1;*/");
+if (x !== 0) {
+ $ERROR('#1: var x = 0; eval("/*\\u000A multi line \\u000A comment \\u000A x = 1;*/"); x === 0. Actual: ' + (x));
+}
+
diff --git a/js/src/tests/test262/ch07/7.3/S7.3_A5.1_T2.js b/js/src/tests/test262/ch07/7.3/S7.3_A5.1_T2.js
new file mode 100644
index 000000000..661df860e
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.3/S7.3_A5.1_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.
+
+/**
+ * Multi line comment can contain LINE FEED (U+000A)
+ *
+ * @path ch07/7.3/S7.3_A5.1_T2.js
+ * @description Insert real LINE FEED into multi line comment
+ */
+
+/*CHECK#1*/
+var x = 0;
+/*
+multi
+line
+comment
+x = 1;
+*/
+if (x !== 0) {
+ $ERROR('#1: var x = 0; /*\\nmulti\\nline\\ncomment\\nx = 1;\\n*/ x === 0. Actual: ' + (x));
+}
+
diff --git a/js/src/tests/test262/ch07/7.3/S7.3_A5.2_T1.js b/js/src/tests/test262/ch07/7.3/S7.3_A5.2_T1.js
new file mode 100644
index 000000000..20c5dd194
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.3/S7.3_A5.2_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.
+
+/**
+ * Multi line comment can contain CARRIAGE RETURN (U+000D)
+ *
+ * @path ch07/7.3/S7.3_A5.2_T1.js
+ * @description Insert CARRIAGE RETURN (U+000D) into multi line comment
+ */
+
+// CHECK#1
+eval("/*\u000D multi line \u000D comment \u000D*/");
+
+//CHECK#2
+var x = 0;
+eval("/*\u000D multi line \u000D comment \u000D x = 1;*/");
+if (x !== 0) {
+ $ERROR('#1: var x = 0; eval("/*\\u000D multi line \\u000D comment \\u000D x = 1;*/"); x === 0. Actual: ' + (x));
+}
+
diff --git a/js/src/tests/test262/ch07/7.3/S7.3_A5.2_T2.js b/js/src/tests/test262/ch07/7.3/S7.3_A5.2_T2.js
new file mode 100644
index 000000000..a83a2be2d
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.3/S7.3_A5.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.
+
+/**
+ * Multi line comment can contain CARRIAGE RETURN (U+000D)
+ *
+ * @path ch07/7.3/S7.3_A5.2_T2.js
+ * @description Insert real CARRIAGE RETURN into multi line comment
+ */
+
+/*CHECK#1*/
+var x = 0;
+/*
+multi
+line
+comment
+x = 1;
+*/
+if (x !== 0) {
+ $ERROR('#1: var x = 0; /*\\rmulti\\rline\\rcomment\\rx = 1;\\r*/ x === 0. Actual: ' + (x));
+}
+
diff --git a/js/src/tests/test262/ch07/7.3/S7.3_A5.3.js b/js/src/tests/test262/ch07/7.3/S7.3_A5.3.js
new file mode 100644
index 000000000..501392bc0
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.3/S7.3_A5.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.
+
+/**
+ * Multi line comment can contain LINE SEPARATOR (U+2028)
+ *
+ * @path ch07/7.3/S7.3_A5.3.js
+ * @description Insert LINE SEPARATOR (U+2028) into multi line comment
+ */
+
+// CHECK#1
+eval("/*\u2028 multi line \u2028 comment \u2028*/");
+
+//CHECK#2
+var x = 0;
+eval("/*\u2028 multi line \u2028 comment \u2028 x = 1;*/");
+if (x !== 0) {
+ $ERROR('#1: var x = 0; eval("/*\\u2028 multi line \\u2028 comment \\u2028 x = 1;*/"); x === 0. Actual: ' + (x));
+}
+
diff --git a/js/src/tests/test262/ch07/7.3/S7.3_A5.4.js b/js/src/tests/test262/ch07/7.3/S7.3_A5.4.js
new file mode 100644
index 000000000..8f8597477
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.3/S7.3_A5.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.
+
+/**
+ * Multi line comment can contain LINE SEPARATOR (U+2029)
+ *
+ * @path ch07/7.3/S7.3_A5.4.js
+ * @description Insert PARAGRAPH SEPARATOR (U+2029) into multi line comment
+ */
+
+// CHECK#1
+eval("/*\u2029 multi line \u2029 comment \u2029*/");
+
+//CHECK#2
+var x = 0;
+eval("/*\u2029 multi line \u2029 comment \u2029 x = 1;*/");
+if (x !== 0) {
+ $ERROR('#1: var x = 0; eval("/*\\u2029 multi line \\u2029 comment \\u2029 x = 1;*/"); x === 0. Actual: ' + (x));
+}
+
diff --git a/js/src/tests/test262/ch07/7.3/S7.3_A6_T1.js b/js/src/tests/test262/ch07/7.3/S7.3_A6_T1.js
new file mode 100644
index 000000000..89b3751f6
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.3/S7.3_A6_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.
+
+/**
+ * Line Terminator cannot be expressed as a Unicode escape sequence consisting of six characters, namely \u plus four hexadecimal digits
+ *
+ * @path ch07/7.3/S7.3_A6_T1.js
+ * @description Insert LINE FEED (U+000A) in var x
+ * @negative
+ */
+
+var\u000Ax;
+
diff --git a/js/src/tests/test262/ch07/7.3/S7.3_A6_T2.js b/js/src/tests/test262/ch07/7.3/S7.3_A6_T2.js
new file mode 100644
index 000000000..3dc52d206
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.3/S7.3_A6_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.
+
+/**
+ * Line Terminator cannot be expressed as a Unicode escape sequence consisting of six characters, namely \u plus four hexadecimal digits
+ *
+ * @path ch07/7.3/S7.3_A6_T2.js
+ * @description Insert CARRIAGE RETURN (U+000D) in var x
+ * @negative
+ */
+
+var\u000Dx;
+
diff --git a/js/src/tests/test262/ch07/7.3/S7.3_A6_T3.js b/js/src/tests/test262/ch07/7.3/S7.3_A6_T3.js
new file mode 100644
index 000000000..62d6ef10f
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.3/S7.3_A6_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.
+
+/**
+ * Line Terminator cannot be expressed as a Unicode escape sequence consisting of six characters, namely \u plus four hexadecimal digits
+ *
+ * @path ch07/7.3/S7.3_A6_T3.js
+ * @description Insert LINE SEPARATOR (U+2028) in var x
+ * @negative
+ */
+
+var\u2028x;
+
diff --git a/js/src/tests/test262/ch07/7.3/S7.3_A6_T4.js b/js/src/tests/test262/ch07/7.3/S7.3_A6_T4.js
new file mode 100644
index 000000000..cd5d2d40a
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.3/S7.3_A6_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.
+
+/**
+ * Line Terminator cannot be expressed as a Unicode escape sequence consisting of six characters, namely \u plus four hexadecimal digits
+ *
+ * @path ch07/7.3/S7.3_A6_T4.js
+ * @description Insert PARAGRAPH SEPARATOR (U+2029) in var x
+ * @negative
+ */
+
+var\u2029x;
+
diff --git a/js/src/tests/test262/ch07/7.3/S7.3_A7_T1.js b/js/src/tests/test262/ch07/7.3/S7.3_A7_T1.js
new file mode 100644
index 000000000..861b737e4
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.3/S7.3_A7_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.
+
+/**
+ * Line Terminators between operators are allowed
+ *
+ * @path ch07/7.3/S7.3_A7_T1.js
+ * @description Insert Line Terminator in var x=y+z
+ */
+
+// CHECK#1
+var y=2;
+var z=3;
+var
+x
+=
+y
++
+z
+;
+if (x !== 5) {
+ $ERROR('#1: var\\nx\\n=\\ny\\n+\\nz\\n; x === 5. Actual: ' + (x));
+}
+x=0;
+
+// CHECK#2
+var y=2;
+var z=3;
+var
+x
+=
+y
++
+z
+;
+if (x !== 5) {
+ $ERROR('#2: var\\nx\\n=\\ny\\n+\\nz\\n; x === 5. Actual: ' + (x));
+}
+x=0;
+
+// CHECK#3
+var y=2;
+var z=3;
+eval("\u2028var\u2028x\u2028=\u2028y\u2028+\u2028z\u2028");
+if (x !== 5) {
+ $ERROR('#3: eval("\\u2028var\\u2028x\\u2028=\\u2028y\\u2028+\\u2028z\\u2028"); x === 5. Actual: ' + (x));
+}
+x=0;
+
+// CHECK#4
+var y=2;
+var z=3;
+eval("\u2029var\u2029x\u2029=\u2029y\u2029+\u2029z\u2029");
+if (x !== 5) {
+ $ERROR('#4: eval("\\u2029var\\u2029x\\u2029=\\u2029y\\u2029+\\u2029z\\u2029"); x === 5. Actual: ' + (x));
+}
+
diff --git a/js/src/tests/test262/ch07/7.3/S7.3_A7_T2.js b/js/src/tests/test262/ch07/7.3/S7.3_A7_T2.js
new file mode 100644
index 000000000..cdc5801c9
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.3/S7.3_A7_T2.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.
+
+/**
+ * Line Terminators between operators are allowed
+ *
+ * @path ch07/7.3/S7.3_A7_T2.js
+ * @description Insert Line Terminator in var x=y-z
+ */
+
+// CHECK#1
+var y=3;
+var z=2;
+var
+x
+=
+y
+-
+z
+;
+if (x !== 1) {
+ $ERROR('#1: var\\nx\\n=\\ny\\n-\\nz\\n; x === 1. Actual: ' + (x));
+}
+x=0;
+
+// CHECK#2
+var y=3;
+var z=2;
+var
+x
+=
+y
+-
+z
+;
+if (x !== 1) {
+ $ERROR('#2: var\\nx\\n=\\ny\\n-\\nz\\n; x === 1. Actual: ' + (x));
+}
+x=0;
+
+// CHECK#3
+var y=3;
+var z=2;
+eval("\u2028var\u2028x\u2028=\u2028y\u2028-\u2028z\u2028");
+if (x !== 1) {
+ $ERROR('#3: eval("\\u2028var\\u2028x\\u2028=\\u2028y\\u2028-\\u2028z\\u2028"); x === 1. Actual: ' + (x));
+}
+x=0;
+
+// CHECK#4
+var y=3;
+var z=2;
+eval("\u2029var\u2029x\u2029=\u2029y\u2029-\u2029z\u2029");
+if (x !== 1) {
+ $ERROR('#4: eval("\\u2029var\\u2029x\\u2029=\\u2029y\\u2029-\\u2029z\\u2029"); x === 1. Actual: ' + (x));
+}
+
diff --git a/js/src/tests/test262/ch07/7.3/S7.3_A7_T3.js b/js/src/tests/test262/ch07/7.3/S7.3_A7_T3.js
new file mode 100644
index 000000000..1c83956da
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.3/S7.3_A7_T3.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.
+
+/**
+ * Line Terminators between operators are allowed
+ *
+ * @path ch07/7.3/S7.3_A7_T3.js
+ * @description Insert Line Terminator in var x=y*z
+ */
+
+// CHECK#1
+var y=3;
+var z=2;
+var
+x
+=
+y
+*
+z
+;
+if (x !== 6) {
+ $ERROR('#1: var\\nx\\n=\\ny\\n*\\nz\\n; x === 6. Actual: ' + (x));
+}
+x=0;
+
+// CHECK#2
+var y=3;
+var z=2;
+var
+x
+=
+y
+*
+z
+;
+if (x !== 6) {
+ $ERROR('#2: var\\nx\\n=\\ny\\n*\\nz\\n; x === 6. Actual: ' + (x));
+}
+x=0;
+
+// CHECK#3
+var y=3;
+var z=2;
+eval("\u2028var\u2028x\u2028=\u2028y\u2028*\u2028z\u2028");
+if (x !== 6) {
+ $ERROR('#3: eval("\\u2028var\\u2028x\\u2028=\\u2028y\\u2028*\\u2028z\\u2028"); x === 6. Actual: ' + (x));
+}
+x=0;
+
+// CHECK#4
+var y=3;
+var z=2;
+eval("\u2029var\u2029x\u2029=\u2029y\u2029*\u2029z\u2029");
+if (x !== 6) {
+ $ERROR('#4: eval("\\u2029var\\u2029x\\u2029=\\u2029y\\u2029*\\u2029z\\u2029"); x === 6. Actual: ' + (x));
+}
+
diff --git a/js/src/tests/test262/ch07/7.3/S7.3_A7_T4.js b/js/src/tests/test262/ch07/7.3/S7.3_A7_T4.js
new file mode 100644
index 000000000..fad60b4cb
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.3/S7.3_A7_T4.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.
+
+/**
+ * Line Terminators between operators are allowed
+ *
+ * @path ch07/7.3/S7.3_A7_T4.js
+ * @description Insert Line Terminator in var x=y/z
+ */
+
+// CHECK#1
+var y=12;
+var z=2;
+var
+x
+=
+y
+/
+z
+;
+if (x !== 6) {
+ $ERROR('#1: var\\nx\\n=\\ny\\n/\\nz\\n; x === 6. Actual: ' + (x));
+}
+x=0;
+
+// CHECK#2
+var y=12;
+var z=2;
+var
+x
+=
+y
+/
+z
+;
+if (x !== 6) {
+ $ERROR('#2: var\\nx\\n=\\ny\\n/\\nz\\n; x === 6. Actual: ' + (x));
+}
+x=0;
+
+// CHECK#3
+var y=12;
+var z=2;
+eval("\u2028var\u2028x\u2028=\u2028y\u2028/\u2028z\u2028");
+if (x !== 6) {
+ $ERROR('#3: eval("\\u2028var\\u2028x\\u2028=\\u2028y\\u2028/\\u2028z\\u2028"); x === 6. Actual: ' + (x));
+}
+x=0;
+
+// CHECK#4
+var y=12;
+var z=2;
+eval("\u2029var\u2029x\u2029=\u2029y\u2029/\u2029z\u2029");
+if (x !== 6) {
+ $ERROR('#4: eval("\\u2029var\\u2029x\\u2029=\\u2029y\\u2029/\\u2029z\\u2029"); x === 6. Actual: ' + (x));
+}
+
diff --git a/js/src/tests/test262/ch07/7.3/S7.3_A7_T5.js b/js/src/tests/test262/ch07/7.3/S7.3_A7_T5.js
new file mode 100644
index 000000000..f7aff0122
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.3/S7.3_A7_T5.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.
+
+/**
+ * Line Terminators between operators are allowed
+ *
+ * @path ch07/7.3/S7.3_A7_T5.js
+ * @description Insert Line Terminator in var x=y%z
+ */
+
+// CHECK#1
+var y=16;
+var z=10;
+var
+x
+=
+y
+%
+z
+;
+if (x !== 6) {
+ $ERROR('#1: var\\nx\\n=\\ny\\n%\\nz\\n; x === 6. Actual: ' + (x));
+}
+x=0;
+
+// CHECK#2
+var y=16;
+var z=10;
+var
+x
+=
+y
+%
+z
+;
+if (x !== 6) {
+ $ERROR('#2: var\\nx\\n=\\ny\\n%\\nz\\n; x === 6. Actual: ' + (x));
+}
+x=0;
+
+// CHECK#3
+var y=16;
+var z=10;
+eval("\u2028var\u2028x\u2028=\u2028y\u2028%\u2028z\u2028");
+if (x !== 6) {
+ $ERROR('#3: eval("\\u2028var\\u2028x\\u2028=\\u2028y\\u2028%\\u2028z\\u2028"); x === 6. Actual: ' + (x));
+}
+x=0;
+
+// CHECK#4
+var y=16;
+var z=10;
+eval("\u2029var\u2029x\u2029=\u2029y\u2029%\u2029z\u2029");
+if (x !== 6) {
+ $ERROR('#4: eval("\\u2029var\\u2029x\\u2029=\\u2029y\\u2029%\\u2029z\\u2029"); x === 6. Actual: ' + (x));
+}
+
diff --git a/js/src/tests/test262/ch07/7.3/S7.3_A7_T6.js b/js/src/tests/test262/ch07/7.3/S7.3_A7_T6.js
new file mode 100644
index 000000000..9dc8c0141
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.3/S7.3_A7_T6.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.
+
+/**
+ * Line Terminators between operators are allowed
+ *
+ * @path ch07/7.3/S7.3_A7_T6.js
+ * @description Insert Line Terminator in var x=y>>z
+ */
+
+// CHECK#1
+var y=16;
+var z=3;
+var
+x
+=
+y
+>>
+z
+;
+if (x !== 2) {
+ $ERROR('#1: var\\nx\\n=\\ny\\n>>\\nz\\n; x === 2. Actual: ' + (x));
+}
+x=0;
+
+// CHECK#2
+var y=16;
+var z=3;
+var
+x
+=
+y
+>>
+z
+;
+if (x !== 2) {
+ $ERROR('#2: var\\nx\\n=\\ny\\n>>\\nz\\n; x === 2. Actual: ' + (x));
+}
+x=0;
+
+// CHECK#3
+var y=16;
+var z=3;
+eval("\u2028var\u2028x\u2028=\u2028y\u2028>>\u2028z\u2028");
+if (x !== 2) {
+ $ERROR('#3: eval("\\u2028var\\u2028x\\u2028=\\u2028y\\u2028>>\\u2028z\\u2028"); x === 2. Actual: ' + (x));
+}
+x=0;
+
+// CHECK#4
+var y=16;
+var z=3;
+eval("\u2029var\u2029x\u2029=\u2029y\u2029>>\u2029z\u2029");
+if (x !== 2) {
+ $ERROR('#4: eval("\\u2029var\\u2029x\\u2029=\\u2029y\\u2029>>\\u2029z\\u2029"); x === 2. Actual: ' + (x));
+}
+
diff --git a/js/src/tests/test262/ch07/7.3/S7.3_A7_T7.js b/js/src/tests/test262/ch07/7.3/S7.3_A7_T7.js
new file mode 100644
index 000000000..510b958c4
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.3/S7.3_A7_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.
+
+/**
+ * Line Terminators between operators are allowed
+ *
+ * @path ch07/7.3/S7.3_A7_T7.js
+ * @description Insert Line Terminator in var x=y<<z
+ */
+
+// CHECK#1
+var y=2;
+var z=3;
+var
+x
+=
+y
+<<
+z
+;
+if (x !== 16) {
+ $ERROR('#1: var\\nx\\n=\\ny\\n<<\\nz\\n; x === 16. Actual: ' + (x));
+}
+x=0;
+
+// CHECK#2
+var y=2;
+var z=3;
+var
+x
+=
+y
+<<
+z
+;
+if (x !== 16) {
+ $ERROR('#2: var\\nx\\n=\\ny\\n<<\\nz\\n; x ===16 ');
+}
+x=0;
+
+// CHECK#3
+var y=2;
+var z=3;
+eval("\u2028var\u2028x\u2028=\u2028y\u2028<<\u2028z\u2028");
+if (x !== 16) {
+ $ERROR('#3: eval("\\u2028var\\u2028x\\u2028=\\u2028y\\u2028<<\\u2028z\\u2028"); x === 16. Actual: ' + (x));
+}
+x=0;
+
+// CHECK#4
+var y=2;
+var z=3;
+eval("\u2029var\u2029x\u2029=\u2029y\u2029<<\u2029z\u2029");
+if (x !== 16) {
+ $ERROR('#4: eval("\\u2029var\\u2029x\\u2029=\\u2029y\\u2029<<\\u2029z\\u2029"); x === 16. Actual: ' + (x));
+}
+
diff --git a/js/src/tests/test262/ch07/7.3/S7.3_A7_T8.js b/js/src/tests/test262/ch07/7.3/S7.3_A7_T8.js
new file mode 100644
index 000000000..1b55b96ce
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.3/S7.3_A7_T8.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.
+
+/**
+ * Line Terminators between operators are allowed
+ *
+ * @path ch07/7.3/S7.3_A7_T8.js
+ * @description Insert Line Terminator in var x=y<z
+ */
+
+// CHECK#1
+var y=2;
+var z=3;
+var
+x
+=
+y
+<
+z
+;
+if (x !== true) {
+ $ERROR('#1: var\\nx\\n=\\ny\\n<\\nz\\n; x === true. Actual: ' + (x));
+}
+x=0;
+
+// CHECK#2
+var y=2;
+var z=3;
+var
+x
+=
+y
+<
+z
+;
+if (x !== true) {
+ $ERROR('#2: var\\nx\\n=\\ny\\n<\\nz\\n; x === true. Actual: ' + (x));
+}
+x=0;
+
+// CHECK#3
+var y=2;
+var z=3;
+eval("\u2028var\u2028x\u2028=\u2028y\u2028<\u2028z\u2028");
+if (x !== true) {
+ $ERROR('#3: eval("\\u2028var\\u2028x\\u2028=\\u2028y\\u2028<\\u2028z\\u2028"); x === true. Actual: ' + (x));
+}
+x=0;
+
+// CHECK#4
+var y=2;
+var z=3;
+eval("\u2029var\u2029x\u2029=\u2029y\u2029<\u2029z\u2029");
+if (x !== true) {
+ $ERROR('#4: eval("\\u2029var\\u2029x\\u2029=\\u2029y\\u2029<\\u2029z\\u2029"); x === true. Actual: ' + (x));
+}
+
diff --git a/js/src/tests/test262/ch07/7.3/browser.js b/js/src/tests/test262/ch07/7.3/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.3/browser.js
diff --git a/js/src/tests/test262/ch07/7.3/shell.js b/js/src/tests/test262/ch07/7.3/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.3/shell.js
diff --git a/js/src/tests/test262/ch07/7.4/S7.4_A1_T1.js b/js/src/tests/test262/ch07/7.4/S7.4_A1_T1.js
new file mode 100644
index 000000000..87bb8ce1a
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.4/S7.4_A1_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.
+
+/**
+ * Correct interpretation of single line comments
+ *
+ * @path ch07/7.4/S7.4_A1_T1.js
+ * @description Create comments with any code
+ */
+
+//CHECK#1
+// $ERROR('#1: Correct interpretation single line comments');
+
+//CHECK#2
+var x = 0;
+// x = 1;
+if (x !== 0) {
+ $ERROR('#2: var x = 0; // x = 1; x === 0. Actual: ' + (x));
+}
+
+//CHECK#3
+var // y = 1;
+y;
+if (y !== undefined) {
+ $ERROR('#3: var // y = 1; \\n y; y === undefined. Actual: ' + (y));
+}
+
+//CHECK#4
+//$ERROR('#4: Correct interpretation single line comments') //$ERROR('#4: Correct interpretation single line comments'); //
+
+////CHECK#5
+//var x = 1;
+//if (x === 1) {
+// $ERROR('#5: Correct interpretation single line comments');
+//}
+
+//CHECK#6
+//var this.y = 1;
+this.y++;
+if (isNaN(y) !== true) {
+ $ERROR('#6: //var this.y = 1; \\n this.y++; y === Not-a-Number. Actual: ' + (y));
+}
+
+
diff --git a/js/src/tests/test262/ch07/7.4/S7.4_A1_T2.js b/js/src/tests/test262/ch07/7.4/S7.4_A1_T2.js
new file mode 100644
index 000000000..4d8d8af43
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.4/S7.4_A1_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.
+
+/**
+ * Correct interpretation of single line comments
+ *
+ * @path ch07/7.4/S7.4_A1_T2.js
+ * @description Simple test, create empty comment: ///
+ */
+
+//CHECK#1
+///
+
diff --git a/js/src/tests/test262/ch07/7.4/S7.4_A2_T1.js b/js/src/tests/test262/ch07/7.4/S7.4_A2_T1.js
new file mode 100644
index 000000000..97b8e6268
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.4/S7.4_A2_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.
+
+/**
+ * Correct interpretation of multi line comments
+ *
+ * @path ch07/7.4/S7.4_A2_T1.js
+ * @description Create comments with any code
+ */
+
+/*CHECK#1*/
+/* $ERROR('#1: Correct interpretation multi line comments');
+*/
+
+/*CHECK#2*/
+var x = 0;
+/* x = 1;*/
+if (x !== 0) {
+ $ERROR('#2: var x = 0; /* x = 1;*/ x === 0. Actual: ' + (x));
+}
+
+//CHECK#3
+var /* y = 1;*/
+y;
+if (y !== undefined) {
+ $ERROR('#3: var /* y = 1; */ \\n y; y === undefined. Actual: ' + (y));
+}
+
+//CHECK#4
+var /* y = 1;*/ y;
+if (y !== undefined) {
+ $ERROR('#4: var /* y = 1; */ y; y === undefined. Actual: ' + (y));
+}
+
+/*CHECK#5*/
+/*var x = 1;
+if (x === 1) {
+ $ERROR('#5: Correct interpretation multi line comments');
+}
+*/
+
+/*CHECK#6*/
+/*var this.y = 1;*/
+this.y++;
+if (isNaN(y) !== true) {
+ $ERROR('#6: /*var this.y = 1;*/ \\n this.y++; y === Not-a-Number. Actual: ' + (y));
+}
+
+//CHECK#7
+var string = "/*var y = 0*/" /* y = 1;*/
+if (string !== "/*var y = 0*/") {
+$ERROR('#7: var string = "/*var y = 0*/" /* y = 1;*/ string === "//var y = 0"');
+}
+
+//CHECK#8
+var string = "/*var y = 0" /* y = 1;*/
+if (string !== "/*var y = 0") {
+$ERROR('#8: var string = "/*var y = 0" /* y = 1;*/ string === "//var y = 0"');
+}
+
+/*CHECK#9*/
+/** $ERROR('#9: Correct interpretation multi line comments');
+*/
+
+/*CHECK#10*/
+/* $ERROR('#10: Correct interpretation multi line comments');
+**/
+
+/*CHECK#11*/
+/****** $ERROR('#11: Correct interpretation multi line comments');*********
+***********
+*
+
+
+**********
+**/
+
+
diff --git a/js/src/tests/test262/ch07/7.4/S7.4_A2_T2.js b/js/src/tests/test262/ch07/7.4/S7.4_A2_T2.js
new file mode 100644
index 000000000..feb4c9c2b
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.4/S7.4_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.
+
+/**
+ * Correct interpretation of multi line comments
+ *
+ * @path ch07/7.4/S7.4_A2_T2.js
+ * @description Try use /*CHECK#1/. This is not closed multi line comment
+ * @negative
+ */
+
+/*CHECK#1/
+
diff --git a/js/src/tests/test262/ch07/7.4/S7.4_A3.js b/js/src/tests/test262/ch07/7.4/S7.4_A3.js
new file mode 100644
index 000000000..2efc9fab1
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.4/S7.4_A3.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.
+
+/**
+ * Multi line comments cannot nest
+ *
+ * @path ch07/7.4/S7.4_A3.js
+ * @description Try use nested comments
+ * @negative
+ */
+
+/*CHECK#1*/
+
+/*
+var
+
+/* x */
+= 1;
+*/
+
diff --git a/js/src/tests/test262/ch07/7.4/S7.4_A4_T1.js b/js/src/tests/test262/ch07/7.4/S7.4_A4_T1.js
new file mode 100644
index 000000000..87c6ace88
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.4/S7.4_A4_T1.js
@@ -0,0 +1,16 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * Single and Multi line comments are used together
+ *
+ * @path ch07/7.4/S7.4_A4_T1.js
+ * @description Try use 2 close comment tags
+ * @negative
+ */
+
+/*CHECK#1*/
+
+/* var*/
+x*/
+
diff --git a/js/src/tests/test262/ch07/7.4/S7.4_A4_T2.js b/js/src/tests/test262/ch07/7.4/S7.4_A4_T2.js
new file mode 100644
index 000000000..b64b28e0e
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.4/S7.4_A4_T2.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.
+
+/**
+ * Single and Multi line comments are used together
+ *
+ * @path ch07/7.4/S7.4_A4_T2.js
+ * @description Fist Multi line comment, then Single line comment
+ */
+
+/*CHECK#1*/
+
+/* var
+*///x*/
+
diff --git a/js/src/tests/test262/ch07/7.4/S7.4_A4_T3.js b/js/src/tests/test262/ch07/7.4/S7.4_A4_T3.js
new file mode 100644
index 000000000..3e39f693a
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.4/S7.4_A4_T3.js
@@ -0,0 +1,16 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * Single and Multi line comments are used together
+ *
+ * @path ch07/7.4/S7.4_A4_T3.js
+ * @description Insert Single line comment into Multi line comment
+ */
+
+/*CHECK#1*/
+
+/* var
+//x
+*/
+
diff --git a/js/src/tests/test262/ch07/7.4/S7.4_A4_T4.js b/js/src/tests/test262/ch07/7.4/S7.4_A4_T4.js
new file mode 100644
index 000000000..1b5657663
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.4/S7.4_A4_T4.js
@@ -0,0 +1,16 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * Single and Multi line comments are used together
+ *
+ * @path ch07/7.4/S7.4_A4_T4.js
+ * @description Try to open Multi line comment at the end of Single comment
+ * @negative
+ */
+
+/*CHECK#1*/
+
+// var /*
+x*/
+
diff --git a/js/src/tests/test262/ch07/7.4/S7.4_A4_T5.js b/js/src/tests/test262/ch07/7.4/S7.4_A4_T5.js
new file mode 100644
index 000000000..9a01060ee
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.4/S7.4_A4_T5.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.
+
+/**
+ * Single and Multi line comments are used together
+ *
+ * @path ch07/7.4/S7.4_A4_T5.js
+ * @description Insert Multi line comment into Single line comment
+ */
+
+/*CHECK#1*/
+
+// var /* x */
+
diff --git a/js/src/tests/test262/ch07/7.4/S7.4_A4_T6.js b/js/src/tests/test262/ch07/7.4/S7.4_A4_T6.js
new file mode 100644
index 000000000..08c983d7b
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.4/S7.4_A4_T6.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.
+
+/**
+ * Single and Multi line comments are used together
+ *
+ * @path ch07/7.4/S7.4_A4_T6.js
+ * @description Insert Multi line comment with two closed tags into Single line comment
+ */
+
+/*CHECK#1*/
+
+// var /* x / = */ 1 */
+
diff --git a/js/src/tests/test262/ch07/7.4/S7.4_A4_T7.js b/js/src/tests/test262/ch07/7.4/S7.4_A4_T7.js
new file mode 100644
index 000000000..a58aa7d5d
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.4/S7.4_A4_T7.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.
+
+/**
+ * Single and Multi line comments are used together
+ *
+ * @path ch07/7.4/S7.4_A4_T7.js
+ * @description Insert Multi line comment into Single line comments
+ */
+
+/*CHECK#1*/
+
+// var /*
+// x
+// =
+// 1*/
+
diff --git a/js/src/tests/test262/ch07/7.4/S7.4_A5.js b/js/src/tests/test262/ch07/7.4/S7.4_A5.js
new file mode 100644
index 000000000..bbdba29de
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.4/S7.4_A5.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.
+
+/**
+ * Single line comments can contain any Unicode character without Line Terminators
+ *
+ * @path ch07/7.4/S7.4_A5.js
+ * @description //var " + xx + "yy = -1", insert instead of xx all Unicode characters
+ */
+
+//CHECK
+var errorCount = 0;
+var count = 0;
+var hex = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F"];
+for (var i1 = 0; i1 < 16; i1++) {
+ for (var i2 = 0; i2 < 16; i2++) {
+ for (var i3 = 0; i3 < 16; i3++) {
+ for (var i4 = 0; i4 < 16; i4++) {
+ try {
+ var uu = hex[i1] + hex[i2] + hex[i3] + hex[i4];
+ var xx = String.fromCharCode("0x" + uu);
+ var LineTerminators = ((uu === "000A") || (uu === "000D") || (uu === "2028") || (uu === "2029"));
+ var yy = 0;
+ eval("//var " + xx + "yy = -1");
+ if (LineTerminators !== true) {
+ if (yy !== 0) {
+ $ERROR('#' + uu + ' ');
+ errorCount++;
+ }
+ } else {
+ if (yy !== -1) {
+ $ERROR('#' + uu + ' ');
+ errorCount++;
+ }
+ }
+ } catch (e){
+ $ERROR('#' + uu + ' ');
+ errorCount++;
+ }
+ count++;
+ }
+ }
+ }
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count);
+}
+
diff --git a/js/src/tests/test262/ch07/7.4/S7.4_A6.js b/js/src/tests/test262/ch07/7.4/S7.4_A6.js
new file mode 100644
index 000000000..c51790aeb
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.4/S7.4_A6.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.
+
+/**
+ * If multi line comments csn not nest, they can contain any Unicode character
+ *
+ * @path ch07/7.4/S7.4_A6.js
+ * @description "var"+ yy+ "xx = 1", insert instead of yy all Unicode characters
+ */
+
+//CHECK
+var errorCount = 0;
+var count = 0;
+for (var indexI = 0; indexI <= 65535; indexI++) {
+ try {
+ var xx = 0;
+ eval("/*var " + String.fromCharCode(indexI) + "xx = 1*/");
+ var hex = decimalToHexString(indexI);
+ if (xx !== 0) {
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ } catch (e){
+ $ERROR('#' + hex + ' ');
+ errorCount++;
+ }
+ count++;
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count);
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
+
diff --git a/js/src/tests/test262/ch07/7.4/browser.js b/js/src/tests/test262/ch07/7.4/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.4/browser.js
diff --git a/js/src/tests/test262/ch07/7.4/shell.js b/js/src/tests/test262/ch07/7.4/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.4/shell.js
diff --git a/js/src/tests/test262/ch07/7.6/7.6-1.js b/js/src/tests/test262/ch07/7.6/7.6-1.js
new file mode 100644
index 000000000..b4bc37326
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6-1.js
@@ -0,0 +1,20 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.6/7.6-1.js
+ * @description 7.6 - SyntaxError expected: reserved words used as Identifier Names in UTF8: null (null)
+ */
+
+
+function testcase() {
+ try {
+ eval("var \u006eull = 123;");
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch07/7.6/7.6-10.js b/js/src/tests/test262/ch07/7.6/7.6-10.js
new file mode 100644
index 000000000..36e6ea699
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6-10.js
@@ -0,0 +1,20 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.6/7.6-10.js
+ * @description 7.6 - SyntaxError expected: reserved words used as Identifier Names in UTF8: new (new)
+ */
+
+
+function testcase() {
+ try {
+ eval("var n\u0065w = 123;");
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch07/7.6/7.6-11.js b/js/src/tests/test262/ch07/7.6/7.6-11.js
new file mode 100644
index 000000000..4e5fee3be
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6-11.js
@@ -0,0 +1,20 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.6/7.6-11.js
+ * @description 7.6 - SyntaxError expected: reserved words used as Identifier Names in UTF8: var (var)
+ */
+
+
+function testcase() {
+ try {
+ eval("var va\u0072 = 123;");
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch07/7.6/7.6-12.js b/js/src/tests/test262/ch07/7.6/7.6-12.js
new file mode 100644
index 000000000..3d939c8a9
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6-12.js
@@ -0,0 +1,20 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.6/7.6-12.js
+ * @description 7.6 - SyntaxError expected: reserved words used as Identifier Names in UTF8: try (try)
+ */
+
+
+function testcase() {
+ try {
+ eval("var \u0074\u0072\u0079 = 123;");
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch07/7.6/7.6-13.js b/js/src/tests/test262/ch07/7.6/7.6-13.js
new file mode 100644
index 000000000..bde18e099
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6-13.js
@@ -0,0 +1,20 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.6/7.6-13.js
+ * @description 7.6 - SyntaxError expected: reserved words used as Identifier Names in UTF8: catch (catch)
+ */
+
+
+function testcase() {
+ try {
+ eval("var \u0063atch = 123;");
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch07/7.6/7.6-14.js b/js/src/tests/test262/ch07/7.6/7.6-14.js
new file mode 100644
index 000000000..d9c6d794f
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6-14.js
@@ -0,0 +1,20 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.6/7.6-14.js
+ * @description 7.6 - SyntaxError expected: reserved words used as Identifier Names in UTF8: finally (finally)
+ */
+
+
+function testcase() {
+ try {
+ eval("var fina\u006cly = 123;");
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch07/7.6/7.6-15.js b/js/src/tests/test262/ch07/7.6/7.6-15.js
new file mode 100644
index 000000000..b2f034760
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6-15.js
@@ -0,0 +1,20 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.6/7.6-15.js
+ * @description 7.6 - SyntaxError expected: reserved words used as Identifier Names in UTF8: return (return)
+ */
+
+
+function testcase() {
+ try {
+ eval("var retur\u006e = 123;");
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch07/7.6/7.6-16.js b/js/src/tests/test262/ch07/7.6/7.6-16.js
new file mode 100644
index 000000000..ba98c547b
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6-16.js
@@ -0,0 +1,20 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.6/7.6-16.js
+ * @description 7.6 - SyntaxError expected: reserved words used as Identifier Names in UTF8: void (void)
+ */
+
+
+function testcase() {
+ try {
+ eval("var \u0076\u006f\u0069\u0064 = 123;");
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch07/7.6/7.6-17.js b/js/src/tests/test262/ch07/7.6/7.6-17.js
new file mode 100644
index 000000000..93a309cbd
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6-17.js
@@ -0,0 +1,20 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.6/7.6-17.js
+ * @description 7.6 - SyntaxError expected: reserved words used as Identifier Names in UTF8: continue (continue)
+ */
+
+
+function testcase() {
+ try {
+ eval("var \u0063ontinue = 123;");
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch07/7.6/7.6-18.js b/js/src/tests/test262/ch07/7.6/7.6-18.js
new file mode 100644
index 000000000..aba469e60
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6-18.js
@@ -0,0 +1,20 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.6/7.6-18.js
+ * @description 7.6 - SyntaxError expected: reserved words used as Identifier Names in UTF8: for (for)
+ */
+
+
+function testcase() {
+ try {
+ eval("var f\u006fr = 123;");
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch07/7.6/7.6-19.js b/js/src/tests/test262/ch07/7.6/7.6-19.js
new file mode 100644
index 000000000..b6df7be44
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6-19.js
@@ -0,0 +1,20 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.6/7.6-19.js
+ * @description 7.6 - SyntaxError expected: reserved words used as Identifier Names in UTF8: switch (switch)
+ */
+
+
+function testcase() {
+ try {
+ eval("var switc\u0068 = 123;");
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch07/7.6/7.6-2.js b/js/src/tests/test262/ch07/7.6/7.6-2.js
new file mode 100644
index 000000000..c6ecd7172
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6-2.js
@@ -0,0 +1,20 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.6/7.6-2.js
+ * @description 7.6 - SyntaxError expected: reserved words used as Identifier Names in UTF8: true (true)
+ */
+
+
+function testcase() {
+ try {
+ eval("var tr\u0075e = 123;");
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch07/7.6/7.6-20.js b/js/src/tests/test262/ch07/7.6/7.6-20.js
new file mode 100644
index 000000000..1eefcf064
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6-20.js
@@ -0,0 +1,20 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.6/7.6-20.js
+ * @description 7.6 - SyntaxError expected: reserved words used as Identifier Names in UTF8: while (while)
+ */
+
+
+function testcase() {
+ try {
+ eval("var \u0077\u0068\u0069\u006c\u0065 = 123;");
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch07/7.6/7.6-21.js b/js/src/tests/test262/ch07/7.6/7.6-21.js
new file mode 100644
index 000000000..c1cc483ec
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6-21.js
@@ -0,0 +1,20 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.6/7.6-21.js
+ * @description 7.6 - SyntaxError expected: reserved words used as Identifier Names in UTF8: debugger (debugger)
+ */
+
+
+function testcase() {
+ try {
+ eval("var \u0064ebugger = 123;");
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch07/7.6/7.6-22.js b/js/src/tests/test262/ch07/7.6/7.6-22.js
new file mode 100644
index 000000000..a050ca989
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6-22.js
@@ -0,0 +1,20 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.6/7.6-22.js
+ * @description 7.6 - SyntaxError expected: reserved words used as Identifier Names in UTF8: function (function)
+ */
+
+
+function testcase() {
+ try {
+ eval("var func\u0074ion = 123;");
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch07/7.6/7.6-23.js b/js/src/tests/test262/ch07/7.6/7.6-23.js
new file mode 100644
index 000000000..df98f3815
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6-23.js
@@ -0,0 +1,20 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.6/7.6-23.js
+ * @description 7.6 - SyntaxError expected: reserved words used as Identifier Names in UTF8: this (this)
+ */
+
+
+function testcase() {
+ try {
+ eval("var thi\u0073 = 123;");
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch07/7.6/7.6-24.js b/js/src/tests/test262/ch07/7.6/7.6-24.js
new file mode 100644
index 000000000..d5773ebf2
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6-24.js
@@ -0,0 +1,20 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.6/7.6-24.js
+ * @description 7.6 - SyntaxError expected: reserved words used as Identifier Names in UTF8: if (if)
+ */
+
+
+function testcase() {
+ try {
+ eval("var \u0069\u0066 = 123;");
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch07/7.6/7.6-25.js b/js/src/tests/test262/ch07/7.6/7.6-25.js
new file mode 100644
index 000000000..ff25f3e02
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6-25.js
@@ -0,0 +1,20 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.6/7.6-25.js
+ * @description 7.6 - SyntaxError expected: reserved words used as Identifier Names in UTF8: with (with)
+ */
+
+
+function testcase() {
+ try {
+ eval("var \u0077ith = 123;");
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch07/7.6/7.6-26.js b/js/src/tests/test262/ch07/7.6/7.6-26.js
new file mode 100644
index 000000000..c740431cb
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6-26.js
@@ -0,0 +1,20 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.6/7.6-26.js
+ * @description 7.6 - SyntaxError expected: reserved words used as Identifier Names in UTF8: default (default)
+ */
+
+
+function testcase() {
+ try {
+ eval("var def\u0061ult = 123;");
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch07/7.6/7.6-27.js b/js/src/tests/test262/ch07/7.6/7.6-27.js
new file mode 100644
index 000000000..e51bb26d8
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6-27.js
@@ -0,0 +1,20 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.6/7.6-27.js
+ * @description 7.6 - SyntaxError expected: reserved words used as Identifier Names in UTF8: throw (throw)
+ */
+
+
+function testcase() {
+ try {
+ eval("var thro\u0077 = 123;");
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch07/7.6/7.6-28.js b/js/src/tests/test262/ch07/7.6/7.6-28.js
new file mode 100644
index 000000000..8f4dd26cf
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6-28.js
@@ -0,0 +1,20 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.6/7.6-28.js
+ * @description 7.6 - SyntaxError expected: reserved words used as Identifier Names in UTF8: in (in)
+ */
+
+
+function testcase() {
+ try {
+ eval("var \u0069\u006e = 123;");
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch07/7.6/7.6-29.js b/js/src/tests/test262/ch07/7.6/7.6-29.js
new file mode 100644
index 000000000..9e97c02ba
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6-29.js
@@ -0,0 +1,20 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.6/7.6-29.js
+ * @description 7.6 - SyntaxError expected: reserved words used as Identifier Names in UTF8: delete (delete)
+ */
+
+
+function testcase() {
+ try {
+ eval("var \u0064elete = 123;");
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch07/7.6/7.6-3.js b/js/src/tests/test262/ch07/7.6/7.6-3.js
new file mode 100644
index 000000000..d14357042
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6-3.js
@@ -0,0 +1,20 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.6/7.6-3.js
+ * @description 7.6 - SyntaxError expected: reserved words used as Identifier Names in UTF8: false (false)
+ */
+
+
+function testcase() {
+ try {
+ eval("var fals\u0065 = 123;");
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch07/7.6/7.6-30.js b/js/src/tests/test262/ch07/7.6/7.6-30.js
new file mode 100644
index 000000000..6e4af63b4
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6-30.js
@@ -0,0 +1,20 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.6/7.6-30.js
+ * @description 7.6 - SyntaxError expected: reserved words used as Identifier Names in UTF8: class (class)
+ */
+
+
+function testcase() {
+ try {
+ eval("var cla\u0073s = 123;");
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch07/7.6/7.6-31.js b/js/src/tests/test262/ch07/7.6/7.6-31.js
new file mode 100644
index 000000000..c9fb1089e
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6-31.js
@@ -0,0 +1,20 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.6/7.6-31.js
+ * @description 7.6 - SyntaxError expected: reserved words used as Identifier Names in UTF8: extends (extends)
+ */
+
+
+function testcase() {
+ try {
+ eval("var extend\u0073 = 123;");
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch07/7.6/7.6-32.js b/js/src/tests/test262/ch07/7.6/7.6-32.js
new file mode 100644
index 000000000..86ea96417
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6-32.js
@@ -0,0 +1,20 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.6/7.6-32.js
+ * @description 7.6 - SyntaxError expected: reserved words used as Identifier Names in UTF8: enum (enum)
+ */
+
+
+function testcase() {
+ try {
+ eval("var \u0065\u006e\u0075\u006d = 123;");
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch07/7.6/7.6-33.js b/js/src/tests/test262/ch07/7.6/7.6-33.js
new file mode 100644
index 000000000..3d6c8dbe3
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6-33.js
@@ -0,0 +1,20 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.6/7.6-33.js
+ * @description 7.6 - SyntaxError expected: reserved words used as Identifier Names in UTF8: super (super)
+ */
+
+
+function testcase() {
+ try {
+ eval("var \u0073uper = 123;");
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch07/7.6/7.6-34.js b/js/src/tests/test262/ch07/7.6/7.6-34.js
new file mode 100644
index 000000000..391fa0191
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6-34.js
@@ -0,0 +1,20 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.6/7.6-34.js
+ * @description 7.6 - SyntaxError expected: reserved words used as Identifier Names in UTF8: const (const)
+ */
+
+
+function testcase() {
+ try {
+ eval("var co\u006est = 123;");
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch07/7.6/7.6-35.js b/js/src/tests/test262/ch07/7.6/7.6-35.js
new file mode 100644
index 000000000..5a729ad00
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6-35.js
@@ -0,0 +1,20 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.6/7.6-35.js
+ * @description 7.6 - SyntaxError expected: reserved words used as Identifier Names in UTF8: export (export)
+ */
+
+
+function testcase() {
+ try {
+ eval("var expor\u0074 = 123;");
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch07/7.6/7.6-36.js b/js/src/tests/test262/ch07/7.6/7.6-36.js
new file mode 100644
index 000000000..afc680a0e
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6-36.js
@@ -0,0 +1,20 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.6/7.6-36.js
+ * @description 7.6 - SyntaxError expected: reserved words used as Identifier Names in UTF8: import (import)
+ */
+
+
+function testcase() {
+ try {
+ eval("var \u0069\u006d\u0070\u006f\u0072\u0074 = 123;");
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch07/7.6/7.6-4.js b/js/src/tests/test262/ch07/7.6/7.6-4.js
new file mode 100644
index 000000000..b621b8d7e
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6-4.js
@@ -0,0 +1,20 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.6/7.6-4.js
+ * @description 7.6 - SyntaxError expected: reserved words used as Identifier Names in UTF8: break (break)
+ */
+
+
+function testcase() {
+ try {
+ eval("var \u0062\u0072\u0065\u0061\u006b = 123;");
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch07/7.6/7.6-5.js b/js/src/tests/test262/ch07/7.6/7.6-5.js
new file mode 100644
index 000000000..5889b2fc6
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6-5.js
@@ -0,0 +1,20 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.6/7.6-5.js
+ * @description 7.6 - SyntaxError expected: reserved words used as Identifier Names in UTF8: case (case)
+ */
+
+
+function testcase() {
+ try {
+ eval("var \u0063ase = 123;");
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch07/7.6/7.6-6.js b/js/src/tests/test262/ch07/7.6/7.6-6.js
new file mode 100644
index 000000000..d70805344
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6-6.js
@@ -0,0 +1,20 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.6/7.6-6.js
+ * @description 7.6 - SyntaxError expected: reserved words used as Identifier Names in UTF8: instanceof (instanceof)
+ */
+
+
+function testcase() {
+ try {
+ eval("var insta\u006eceof = 123;");
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch07/7.6/7.6-7.js b/js/src/tests/test262/ch07/7.6/7.6-7.js
new file mode 100644
index 000000000..f388e1302
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6-7.js
@@ -0,0 +1,20 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.6/7.6-7.js
+ * @description 7.6 - SyntaxError expected: reserved words used as Identifier Names in UTF8: typeof (typeof)
+ */
+
+
+function testcase() {
+ try {
+ eval("var typeo\u0066 = 123;");
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch07/7.6/7.6-8.js b/js/src/tests/test262/ch07/7.6/7.6-8.js
new file mode 100644
index 000000000..ab4f25978
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6-8.js
@@ -0,0 +1,20 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.6/7.6-8.js
+ * @description 7.6 - SyntaxError expected: reserved words used as Identifier Names in UTF8: do (do)
+ */
+
+
+function testcase() {
+ try {
+ eval("var \u0064\u006f = 123;");
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch07/7.6/7.6-9.js b/js/src/tests/test262/ch07/7.6/7.6-9.js
new file mode 100644
index 000000000..2e9f07b03
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6-9.js
@@ -0,0 +1,20 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.6/7.6-9.js
+ * @description 7.6 - SyntaxError expected: reserved words used as Identifier Names in UTF8: else (else) (null)
+ */
+
+
+function testcase() {
+ try {
+ eval("var \u0065lse = 123;");
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-1-1.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-1-1.js
new file mode 100644
index 000000000..20be0698f
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-1-1.js
@@ -0,0 +1,34 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.6/7.6.1/7.6.1-1-1.js
+ * @description Allow reserved words as property names at object initialization, verified with hasOwnProperty: null, true, false
+ */
+
+
+function testcase(){
+ var tokenCodes = {
+ null: 0,
+ true: 1,
+ false: 2
+ };
+ var arr = [
+ 'null',
+ 'true',
+ 'false'
+ ];
+ for(var p in tokenCodes) {
+ for(var p1 in arr) {
+ if(arr[p1] === p) {
+ if(!tokenCodes.hasOwnProperty(arr[p1])) {
+ return false;
+ };
+ }
+ }
+ }
+ return true;
+}
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-1-10.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-1-10.js
new file mode 100644
index 000000000..08f1d0026
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-1-10.js
@@ -0,0 +1,34 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.6/7.6.1/7.6.1-1-10.js
+ * @description Allow reserved words as property names at object initialization, verified with hasOwnProperty: in, try, class
+ */
+
+
+function testcase(){
+ var tokenCodes = {
+ in: 0,
+ try: 1,
+ class: 2
+ };
+ var arr = [
+ 'in',
+ 'try',
+ 'class'
+ ];
+ for(var p in tokenCodes) {
+ for(var p1 in arr) {
+ if(arr[p1] === p) {
+ if(!tokenCodes.hasOwnProperty(arr[p1])) {
+ return false;
+ };
+ }
+ }
+ }
+ return true;
+}
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-1-11.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-1-11.js
new file mode 100644
index 000000000..6875887d9
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-1-11.js
@@ -0,0 +1,34 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.6/7.6.1/7.6.1-1-11.js
+ * @description Allow reserved words as property names at object initialization, verified with hasOwnProperty: enum, extends, super
+ */
+
+
+function testcase(){
+ var tokenCodes = {
+ enum: 0,
+ extends: 1,
+ super: 2
+ };
+ var arr = [
+ 'enum',
+ 'extends',
+ 'super'
+ ];
+ for(var p in tokenCodes) {
+ for(var p1 in arr) {
+ if(arr[p1] === p) {
+ if(!tokenCodes.hasOwnProperty(arr[p1])) {
+ return false;
+ };
+ }
+ }
+ }
+ return true;
+}
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-1-12.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-1-12.js
new file mode 100644
index 000000000..52940898d
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-1-12.js
@@ -0,0 +1,34 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.6/7.6.1/7.6.1-1-12.js
+ * @description Allow reserved words as property names at object initialization, verified with hasOwnProperty: const, export, import
+ */
+
+
+function testcase(){
+ var tokenCodes = {
+ const: 0,
+ export: 1,
+ import: 2
+ };
+ var arr = [
+ 'const',
+ 'export',
+ 'import'
+ ];
+ for(var p in tokenCodes) {
+ for(var p1 in arr) {
+ if(arr[p1] === p) {
+ if(!tokenCodes.hasOwnProperty(arr[p1])) {
+ return false;
+ };
+ }
+ }
+ }
+ return true;
+}
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-1-13.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-1-13.js
new file mode 100644
index 000000000..d35543629
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-1-13.js
@@ -0,0 +1,34 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.6/7.6.1/7.6.1-1-13.js
+ * @description Allow reserved words as property names at object initialization, verified with hasOwnProperty: implements, let, private
+ */
+
+
+function testcase(){
+ var tokenCodes = {
+ implements: 0,
+ let: 1,
+ private: 2
+ };
+ var arr = [
+ 'implements',
+ 'let',
+ 'private'
+ ];
+ for(var p in tokenCodes) {
+ for(var p1 in arr) {
+ if(arr[p1] === p) {
+ if(!tokenCodes.hasOwnProperty(arr[p1])) {
+ return false;
+ };
+ }
+ }
+ }
+ return true;
+}
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-1-14.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-1-14.js
new file mode 100644
index 000000000..6d9270d3e
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-1-14.js
@@ -0,0 +1,34 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.6/7.6.1/7.6.1-1-14.js
+ * @description Allow reserved words as property names at object initialization, verified with hasOwnProperty: public, yield, interface
+ */
+
+
+function testcase(){
+ var tokenCodes = {
+ public: 0,
+ yield: 1,
+ interface: 2
+ };
+ var arr = [
+ 'public',
+ 'yield',
+ 'interface'
+ ];
+ for(var p in tokenCodes) {
+ for(var p1 in arr) {
+ if(arr[p1] === p) {
+ if(!tokenCodes.hasOwnProperty(arr[p1])) {
+ return false;
+ };
+ }
+ }
+ }
+ return true;
+}
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-1-15.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-1-15.js
new file mode 100644
index 000000000..4585126a0
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-1-15.js
@@ -0,0 +1,34 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.6/7.6.1/7.6.1-1-15.js
+ * @description Allow reserved words as property names at object initialization, verified with hasOwnProperty: package, protected, static
+ */
+
+
+function testcase(){
+ var tokenCodes = {
+ package: 0,
+ protected: 1,
+ static: 2
+ };
+ var arr = [
+ 'package',
+ 'protected',
+ 'static'
+ ];
+ for(var p in tokenCodes) {
+ for(var p1 in arr) {
+ if(arr[p1] === p) {
+ if(!tokenCodes.hasOwnProperty(arr[p1])) {
+ return false;
+ };
+ }
+ }
+ }
+ return true;
+}
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-1-16.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-1-16.js
new file mode 100644
index 000000000..20b61eccf
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-1-16.js
@@ -0,0 +1,34 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.6/7.6.1/7.6.1-1-16.js
+ * @description Allow reserved words as property names at object initialization, verified with hasOwnProperty: undeefined, NaN, Infinity
+ */
+
+
+function testcase(){
+ var tokenCodes = {
+ undefined: 0,
+ NaN: 1,
+ Infinity: 2
+ };
+ var arr = [
+ 'undefined',
+ 'NaN',
+ 'Infinity'
+ ];
+ for(var p in tokenCodes) {
+ for(var p1 in arr) {
+ if(arr[p1] === p) {
+ if(!tokenCodes.hasOwnProperty(arr[p1])) {
+ return false;
+ };
+ }
+ }
+ }
+ return true;
+}
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-1-2.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-1-2.js
new file mode 100644
index 000000000..8b0ca79ea
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-1-2.js
@@ -0,0 +1,34 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.6/7.6.1/7.6.1-1-2.js
+ * @description Allow reserved words as property names at object initialization, verified with hasOwnProperty: break, case, do
+ */
+
+
+function testcase(){
+ var tokenCodes = {
+ break: 0,
+ case: 1,
+ do: 2
+ };
+ var arr = [
+ 'break',
+ 'case',
+ 'do'
+ ];
+ for(var p in tokenCodes) {
+ for(var p1 in arr) {
+ if(arr[p1] === p) {
+ if(!tokenCodes.hasOwnProperty(arr[p1])) {
+ return false;
+ };
+ }
+ }
+ }
+ return true;
+}
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-1-3.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-1-3.js
new file mode 100644
index 000000000..5254fdfa3
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-1-3.js
@@ -0,0 +1,34 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.6/7.6.1/7.6.1-1-3.js
+ * @description Allow reserved words as property names at object initialization, verified with hasOwnProperty: instanceof, typeof, else
+ */
+
+
+function testcase(){
+ var tokenCodes = {
+ instanceof: 0,
+ typeof: 1,
+ else: 2
+ };
+ var arr = [
+ 'instanceof',
+ 'typeof',
+ 'else'
+ ];
+ for(var p in tokenCodes) {
+ for(var p1 in arr) {
+ if(arr[p1] === p) {
+ if(!tokenCodes.hasOwnProperty(arr[p1])) {
+ return false;
+ };
+ }
+ }
+ }
+ return true;
+}
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-1-4.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-1-4.js
new file mode 100644
index 000000000..5391b5be8
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-1-4.js
@@ -0,0 +1,34 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.6/7.6.1/7.6.1-1-4.js
+ * @description Allow reserved words as property names at object initialization, verified with hasOwnProperty: new, var, catch
+ */
+
+
+function testcase(){
+ var tokenCodes = {
+ new: 0,
+ var: 1,
+ catch: 2
+ };
+ var arr = [
+ 'new',
+ 'var',
+ 'catch'
+ ];
+ for(var p in tokenCodes) {
+ for(var p1 in arr) {
+ if(arr[p1] === p) {
+ if(!tokenCodes.hasOwnProperty(arr[p1])) {
+ return false;
+ };
+ }
+ }
+ }
+ return true;
+}
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-1-5.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-1-5.js
new file mode 100644
index 000000000..cc65a2bd2
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-1-5.js
@@ -0,0 +1,34 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.6/7.6.1/7.6.1-1-5.js
+ * @description Allow reserved words as property names at object initialization, verified with hasOwnProperty: finally, return, void
+ */
+
+
+function testcase(){
+ var tokenCodes = {
+ finally: 0,
+ return: 1,
+ void: 2
+ };
+ var arr = [
+ 'finally',
+ 'return',
+ 'void'
+ ];
+ for(var p in tokenCodes) {
+ for(var p1 in arr) {
+ if(arr[p1] === p) {
+ if(!tokenCodes.hasOwnProperty(arr[p1])) {
+ return false;
+ };
+ }
+ }
+ }
+ return true;
+}
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-1-6.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-1-6.js
new file mode 100644
index 000000000..157b2fec9
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-1-6.js
@@ -0,0 +1,34 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.6/7.6.1/7.6.1-1-6.js
+ * @description Allow reserved words as property names at object initialization, verified with hasOwnProperty: continue, for, switch
+ */
+
+
+function testcase(){
+ var tokenCodes = {
+ continue: 0,
+ for: 1,
+ switch: 2
+ };
+ var arr = [
+ 'continue',
+ 'for',
+ 'switch'
+ ];
+ for(var p in tokenCodes) {
+ for(var p1 in arr) {
+ if(arr[p1] === p) {
+ if(!tokenCodes.hasOwnProperty(arr[p1])) {
+ return false;
+ };
+ }
+ }
+ }
+ return true;
+}
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-1-7.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-1-7.js
new file mode 100644
index 000000000..227e58d5a
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-1-7.js
@@ -0,0 +1,34 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.6/7.6.1/7.6.1-1-7.js
+ * @description Allow reserved words as property names at object initialization, verified with hasOwnProperty: while, debugger, function
+ */
+
+
+function testcase(){
+ var tokenCodes = {
+ while: 0,
+ debugger: 1,
+ function: 2
+ };
+ var arr = [
+ 'while' ,
+ 'debugger',
+ 'function'
+ ];
+ for(var p in tokenCodes) {
+ for(var p1 in arr) {
+ if(arr[p1] === p) {
+ if(!tokenCodes.hasOwnProperty(arr[p1])) {
+ return false;
+ };
+ }
+ }
+ }
+ return true;
+}
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-1-8.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-1-8.js
new file mode 100644
index 000000000..0045ead1d
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-1-8.js
@@ -0,0 +1,34 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.6/7.6.1/7.6.1-1-8.js
+ * @description Allow reserved words as property names at object initialization, verified with hasOwnProperty: this, with, default
+ */
+
+
+function testcase(){
+ var tokenCodes = {
+ this: 0,
+ with: 1,
+ default: 2
+ };
+ var arr = [
+ 'this',
+ 'with',
+ 'default'
+ ];
+ for(var p in tokenCodes) {
+ for(var p1 in arr) {
+ if(arr[p1] === p) {
+ if(!tokenCodes.hasOwnProperty(arr[p1])) {
+ return false;
+ };
+ }
+ }
+ }
+ return true;
+}
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-1-9.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-1-9.js
new file mode 100644
index 000000000..285d14ec9
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-1-9.js
@@ -0,0 +1,34 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.6/7.6.1/7.6.1-1-9.js
+ * @description Allow reserved words as property names at object initialization, verified with hasOwnProperty: if, throw, delete
+ */
+
+
+function testcase(){
+ var tokenCodes = {
+ if: 0,
+ throw: 1,
+ delete: 2
+ };
+ var arr = [
+ 'if',
+ 'throw',
+ 'delete'
+ ];
+ for(var p in tokenCodes) {
+ for(var p1 in arr) {
+ if(arr[p1] === p) {
+ if(!tokenCodes.hasOwnProperty(arr[p1])) {
+ return false;
+ };
+ }
+ }
+ }
+ return true;
+}
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-2-1.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-2-1.js
new file mode 100644
index 000000000..d652a22a4
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-2-1.js
@@ -0,0 +1,33 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.6/7.6.1/7.6.1-2-1.js
+ * @description Allow reserved words as property names by dot operator assignment, verified with hasOwnProperty: null, true, false
+ */
+
+
+function testcase() {
+ var tokenCodes = {};
+ tokenCodes.null = 0;
+ tokenCodes.true = 1;
+ tokenCodes.false = 2;
+ var arr = [
+ 'null',
+ 'true',
+ 'false'
+ ];
+ for(var p in tokenCodes) {
+ for(var p1 in arr) {
+ if(arr[p1] === p) {
+ if(!tokenCodes.hasOwnProperty(arr[p1])) {
+ return false;
+ };
+ }
+ }
+ }
+ return true;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-2-10.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-2-10.js
new file mode 100644
index 000000000..2d8ed66f1
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-2-10.js
@@ -0,0 +1,33 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.6/7.6.1/7.6.1-2-10.js
+ * @description Allow reserved words as property names by dot operator assignment, verified with hasOwnProperty: in, try, class
+ */
+
+
+function testcase() {
+ var tokenCodes = {};
+ tokenCodes.in = 0;
+ tokenCodes.try = 1;
+ tokenCodes.class = 2;
+ var arr = [
+ 'in',
+ 'try',
+ 'class'
+ ];
+ for(var p in tokenCodes) {
+ for(var p1 in arr) {
+ if(arr[p1] === p) {
+ if(!tokenCodes.hasOwnProperty(arr[p1])) {
+ return false;
+ };
+ }
+ }
+ }
+ return true;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-2-11.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-2-11.js
new file mode 100644
index 000000000..2185f2de0
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-2-11.js
@@ -0,0 +1,33 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.6/7.6.1/7.6.1-2-11.js
+ * @description Allow reserved words as property names by dot operator assignment, verified with hasOwnProperty: enum, extends, super
+ */
+
+
+function testcase() {
+ var tokenCodes = {};
+ tokenCodes.enum = 0;
+ tokenCodes.extends = 1;
+ tokenCodes.super = 2;
+ var arr = [
+ 'enum',
+ 'extends',
+ 'super'
+ ];
+ for(var p in tokenCodes) {
+ for(var p1 in arr) {
+ if(arr[p1] === p) {
+ if(!tokenCodes.hasOwnProperty(arr[p1])) {
+ return false;
+ };
+ }
+ }
+ }
+ return true;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-2-12.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-2-12.js
new file mode 100644
index 000000000..622ec9067
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-2-12.js
@@ -0,0 +1,33 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.6/7.6.1/7.6.1-2-12.js
+ * @description Allow reserved words as property names by dot operator assignment, verified with hasOwnProperty: const, export, import
+ */
+
+
+function testcase() {
+ var tokenCodes = {};
+ tokenCodes.const = 0;
+ tokenCodes.export = 1;
+ tokenCodes.import = 2;
+ var arr = [
+ 'const',
+ 'export',
+ 'import'
+ ];
+ for(var p in tokenCodes) {
+ for(var p1 in arr) {
+ if(arr[p1] === p) {
+ if(!tokenCodes.hasOwnProperty(arr[p1])) {
+ return false;
+ };
+ }
+ }
+ }
+ return true;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-2-13.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-2-13.js
new file mode 100644
index 000000000..169cbc798
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-2-13.js
@@ -0,0 +1,33 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.6/7.6.1/7.6.1-2-13.js
+ * @description Allow reserved words as property names by dot operator assignment, verified with hasOwnProperty: implements, let, private
+ */
+
+
+function testcase() {
+ var tokenCodes = {};
+ tokenCodes.implements = 0;
+ tokenCodes.let = 1;
+ tokenCodes.private = 2;
+ var arr = [
+ 'implements',
+ 'let',
+ 'private'
+ ];
+ for(var p in tokenCodes) {
+ for(var p1 in arr) {
+ if(arr[p1] === p) {
+ if(!tokenCodes.hasOwnProperty(arr[p1])) {
+ return false;
+ };
+ }
+ }
+ }
+ return true;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-2-14.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-2-14.js
new file mode 100644
index 000000000..3343b2670
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-2-14.js
@@ -0,0 +1,33 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.6/7.6.1/7.6.1-2-14.js
+ * @description Allow reserved words as property names by dot operator assignment, verified with hasOwnProperty: public, yield, interface
+ */
+
+
+function testcase() {
+ var tokenCodes = {};
+ tokenCodes.public = 0;
+ tokenCodes.yield = 1;
+ tokenCodes.interface = 2;
+ var arr = [
+ 'public',
+ 'yield',
+ 'interface'
+ ];
+ for(var p in tokenCodes) {
+ for(var p1 in arr) {
+ if(arr[p1] === p) {
+ if(!tokenCodes.hasOwnProperty(arr[p1])) {
+ return false;
+ };
+ }
+ }
+ }
+ return true;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-2-15.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-2-15.js
new file mode 100644
index 000000000..ce04d2900
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-2-15.js
@@ -0,0 +1,33 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.6/7.6.1/7.6.1-2-15.js
+ * @description Allow reserved words as property names by dot operator assignment, verified with hasOwnProperty: package, protected, static
+ */
+
+
+function testcase() {
+ var tokenCodes = {};
+ tokenCodes.package = 0;
+ tokenCodes.protected = 1;
+ tokenCodes.static = 2;
+ var arr = [
+ 'package',
+ 'protected',
+ 'static'
+ ];
+ for(var p in tokenCodes) {
+ for(var p1 in arr) {
+ if(arr[p1] === p) {
+ if(!tokenCodes.hasOwnProperty(arr[p1])) {
+ return false;
+ };
+ }
+ }
+ }
+ return true;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-2-16.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-2-16.js
new file mode 100644
index 000000000..e078859fc
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-2-16.js
@@ -0,0 +1,33 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.6/7.6.1/7.6.1-2-16.js
+ * @description Allow reserved words as property names by dot operator assignment, verified with hasOwnProperty: undefined, NaN, Infinity
+ */
+
+
+function testcase() {
+ var tokenCodes = {};
+ tokenCodes.undefined = 0;
+ tokenCodes.NaN = 1;
+ tokenCodes.Infinity = 2;
+ var arr = [
+ 'undefined',
+ 'NaN',
+ 'Infinity'
+ ];
+ for(var p in tokenCodes) {
+ for(var p1 in arr) {
+ if(arr[p1] === p) {
+ if(!tokenCodes.hasOwnProperty(arr[p1])) {
+ return false;
+ };
+ }
+ }
+ }
+ return true;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-2-2.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-2-2.js
new file mode 100644
index 000000000..3a8997852
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-2-2.js
@@ -0,0 +1,33 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.6/7.6.1/7.6.1-2-2.js
+ * @description Allow reserved words as property names by dot operator assignment, verified with hasOwnProperty: break, case, do
+ */
+
+
+function testcase() {
+ var tokenCodes = {};
+ tokenCodes.break = 0;
+ tokenCodes.case = 1;
+ tokenCodes.do = 2;
+ var arr = [
+ 'break',
+ 'case',
+ 'do'
+ ];
+ for(var p in tokenCodes) {
+ for(var p1 in arr) {
+ if(arr[p1] === p) {
+ if(!tokenCodes.hasOwnProperty(arr[p1])) {
+ return false;
+ };
+ }
+ }
+ }
+ return true;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-2-3.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-2-3.js
new file mode 100644
index 000000000..30e4bc139
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-2-3.js
@@ -0,0 +1,33 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.6/7.6.1/7.6.1-2-3.js
+ * @description Allow reserved words as property names by dot operator assignment, verified with hasOwnProperty: instanceof, typeof, else
+ */
+
+
+function testcase() {
+ var tokenCodes = {};
+ tokenCodes.instanceof = 0;
+ tokenCodes.typeof = 1;
+ tokenCodes.else = 2;
+ var arr = [
+ 'instanceof',
+ 'typeof',
+ 'else'
+ ];
+ for(var p in tokenCodes) {
+ for(var p1 in arr) {
+ if(arr[p1] === p) {
+ if(!tokenCodes.hasOwnProperty(arr[p1])) {
+ return false;
+ };
+ }
+ }
+ }
+ return true;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-2-4.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-2-4.js
new file mode 100644
index 000000000..0d43d0373
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-2-4.js
@@ -0,0 +1,33 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.6/7.6.1/7.6.1-2-4.js
+ * @description Allow reserved words as property names by dot operator assignment, verified with hasOwnProperty: new, var, catch
+ */
+
+
+function testcase() {
+ var tokenCodes = {};
+ tokenCodes.new = 0;
+ tokenCodes.var = 1;
+ tokenCodes.catch = 2;
+ var arr = [
+ 'new',
+ 'var',
+ 'catch'
+ ];
+ for(var p in tokenCodes) {
+ for(var p1 in arr) {
+ if(arr[p1] === p) {
+ if(!tokenCodes.hasOwnProperty(arr[p1])) {
+ return false;
+ };
+ }
+ }
+ }
+ return true;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-2-5.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-2-5.js
new file mode 100644
index 000000000..542175c02
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-2-5.js
@@ -0,0 +1,33 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.6/7.6.1/7.6.1-2-5.js
+ * @description Allow reserved words as property names by dot operator assignment, verified with hasOwnProperty: finally, return, void
+ */
+
+
+function testcase() {
+ var tokenCodes = {};
+ tokenCodes.finally = 0;
+ tokenCodes.return = 1;
+ tokenCodes.void = 2;
+ var arr = [
+ 'finally',
+ 'return',
+ 'void'
+ ];
+ for(var p in tokenCodes) {
+ for(var p1 in arr) {
+ if(arr[p1] === p) {
+ if(!tokenCodes.hasOwnProperty(arr[p1])) {
+ return false;
+ };
+ }
+ }
+ }
+ return true;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-2-6.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-2-6.js
new file mode 100644
index 000000000..20a949a70
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-2-6.js
@@ -0,0 +1,33 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.6/7.6.1/7.6.1-2-6.js
+ * @description Allow reserved words as property names by dot operator assignment, verified with hasOwnProperty: continue, for, switch
+ */
+
+
+function testcase() {
+ var tokenCodes = {};
+ tokenCodes.continue = 0;
+ tokenCodes.for = 1;
+ tokenCodes.switch = 2;
+ var arr = [
+ 'continue',
+ 'for',
+ 'switch'
+ ];
+ for(var p in tokenCodes) {
+ for(var p1 in arr) {
+ if(arr[p1] === p) {
+ if(!tokenCodes.hasOwnProperty(arr[p1])) {
+ return false;
+ };
+ }
+ }
+ }
+ return true;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-2-7.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-2-7.js
new file mode 100644
index 000000000..83f526468
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-2-7.js
@@ -0,0 +1,33 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.6/7.6.1/7.6.1-2-7.js
+ * @description Allow reserved words as property names by dot operator assignment, verified with hasOwnProperty: while, debugger, function
+ */
+
+
+function testcase() {
+ var tokenCodes = {};
+ tokenCodes.while = 0;
+ tokenCodes.debugger = 1;
+ tokenCodes.function = 2;
+ var arr = [
+ 'while' ,
+ 'debugger',
+ 'function'
+ ];
+ for(var p in tokenCodes) {
+ for(var p1 in arr) {
+ if(arr[p1] === p) {
+ if(!tokenCodes.hasOwnProperty(arr[p1])) {
+ return false;
+ };
+ }
+ }
+ }
+ return true;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-2-8.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-2-8.js
new file mode 100644
index 000000000..62e39d18a
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-2-8.js
@@ -0,0 +1,33 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.6/7.6.1/7.6.1-2-8.js
+ * @description Allow reserved words as property names by dot operator assignment, verified with hasOwnProperty: this, with, default
+ */
+
+
+function testcase() {
+ var tokenCodes = {};
+ tokenCodes.this = 0;
+ tokenCodes.with = 1;
+ tokenCodes.default = 2;
+ var arr = [
+ 'this',
+ 'with',
+ 'default'
+ ];
+ for(var p in tokenCodes) {
+ for(var p1 in arr) {
+ if(arr[p1] === p) {
+ if(!tokenCodes.hasOwnProperty(arr[p1])) {
+ return false;
+ };
+ }
+ }
+ }
+ return true;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-2-9.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-2-9.js
new file mode 100644
index 000000000..99678952f
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-2-9.js
@@ -0,0 +1,33 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.6/7.6.1/7.6.1-2-9.js
+ * @description Allow reserved words as property names by dot operator assignment, verified with hasOwnProperty: if, throw, delete
+ */
+
+
+function testcase() {
+ var tokenCodes = {};
+ tokenCodes.if = 0;
+ tokenCodes.throw = 1;
+ tokenCodes.delete = 2;
+ var arr = [
+ 'if',
+ 'throw',
+ 'delete'
+ ];
+ for(var p in tokenCodes) {
+ for(var p1 in arr) {
+ if(arr[p1] === p) {
+ if(!tokenCodes.hasOwnProperty(arr[p1])) {
+ return false;
+ };
+ }
+ }
+ }
+ return true;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-3-1.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-3-1.js
new file mode 100644
index 000000000..7f890eb5d
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-3-1.js
@@ -0,0 +1,33 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.6/7.6.1/7.6.1-3-1.js
+ * @description Allow reserved words as property names by index assignment,verified with hasOwnProperty: null, true, false
+ */
+
+
+function testcase() {
+ var tokenCodes = {};
+ tokenCodes['null'] = 0;
+ tokenCodes['true'] = 1;
+ tokenCodes['false'] = 2;
+ var arr = [
+ 'null',
+ 'true',
+ 'false'
+ ];
+ for(var p in tokenCodes) {
+ for(var p1 in arr) {
+ if(arr[p1] === p) {
+ if(!tokenCodes.hasOwnProperty(arr[p1])) {
+ return false;
+ };
+ }
+ }
+ }
+ return true;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-3-10.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-3-10.js
new file mode 100644
index 000000000..83dddc14e
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-3-10.js
@@ -0,0 +1,33 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.6/7.6.1/7.6.1-3-10.js
+ * @description Allow reserved words as property names by index assignment,verified with hasOwnProperty: in, try, class
+ */
+
+
+function testcase() {
+ var tokenCodes = {};
+ tokenCodes['in'] = 0;
+ tokenCodes['try'] = 1;
+ tokenCodes['class'] = 2;
+ var arr = [
+ 'in',
+ 'try',
+ 'class'
+ ];
+ for(var p in tokenCodes) {
+ for(var p1 in arr) {
+ if(arr[p1] === p) {
+ if(!tokenCodes.hasOwnProperty(arr[p1])) {
+ return false;
+ };
+ }
+ }
+ }
+ return true;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-3-11.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-3-11.js
new file mode 100644
index 000000000..4b1f58b41
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-3-11.js
@@ -0,0 +1,33 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.6/7.6.1/7.6.1-3-11.js
+ * @description Allow reserved words as property names by index assignment,verified with hasOwnProperty: enum, extends, super
+ */
+
+
+function testcase() {
+ var tokenCodes = {};
+ tokenCodes['enum'] = 0;
+ tokenCodes['extends'] = 1;
+ tokenCodes['super'] = 2;
+ var arr = [
+ 'enum',
+ 'extends',
+ 'super'
+ ];
+ for(var p in tokenCodes) {
+ for(var p1 in arr) {
+ if(arr[p1] === p) {
+ if(!tokenCodes.hasOwnProperty(arr[p1])) {
+ return false;
+ };
+ }
+ }
+ }
+ return true;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-3-12.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-3-12.js
new file mode 100644
index 000000000..72cc76dbe
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-3-12.js
@@ -0,0 +1,33 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.6/7.6.1/7.6.1-3-12.js
+ * @description Allow reserved words as property names by index assignment,verified with hasOwnProperty: const, export, import
+ */
+
+
+function testcase() {
+ var tokenCodes = {};
+ tokenCodes['const'] = 0;
+ tokenCodes['export'] = 1;
+ tokenCodes['import'] = 2;
+ var arr = [
+ 'const',
+ 'export',
+ 'import'
+ ];
+ for(var p in tokenCodes) {
+ for(var p1 in arr) {
+ if(arr[p1] === p) {
+ if(!tokenCodes.hasOwnProperty(arr[p1])) {
+ return false;
+ };
+ }
+ }
+ }
+ return true;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-3-13.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-3-13.js
new file mode 100644
index 000000000..6bd557357
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-3-13.js
@@ -0,0 +1,33 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.6/7.6.1/7.6.1-3-13.js
+ * @description Allow reserved words as property names by index assignment,verified with hasOwnProperty: implements, let, private
+ */
+
+
+function testcase() {
+ var tokenCodes = {};
+ tokenCodes['implements'] = 0;
+ tokenCodes['let'] = 1;
+ tokenCodes['private'] = 2;
+ var arr = [
+ 'implements',
+ 'let',
+ 'private'
+ ];
+ for(var p in tokenCodes) {
+ for(var p1 in arr) {
+ if(arr[p1] === p) {
+ if(!tokenCodes.hasOwnProperty(arr[p1])) {
+ return false;
+ };
+ }
+ }
+ }
+ return true;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-3-14.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-3-14.js
new file mode 100644
index 000000000..b70990d6c
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-3-14.js
@@ -0,0 +1,33 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.6/7.6.1/7.6.1-3-14.js
+ * @description Allow reserved words as property names by index assignment,verified with hasOwnProperty: public, yield, interface
+ */
+
+
+function testcase() {
+ var tokenCodes = {};
+ tokenCodes['public'] = 0;
+ tokenCodes['yield'] = 1;
+ tokenCodes['interface'] = 2;
+ var arr = [
+ 'public',
+ 'yield',
+ 'interface'
+ ];
+ for(var p in tokenCodes) {
+ for(var p1 in arr) {
+ if(arr[p1] === p) {
+ if(!tokenCodes.hasOwnProperty(arr[p1])) {
+ return false;
+ };
+ }
+ }
+ }
+ return true;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-3-15.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-3-15.js
new file mode 100644
index 000000000..f5b7664b8
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-3-15.js
@@ -0,0 +1,33 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.6/7.6.1/7.6.1-3-15.js
+ * @description Allow reserved words as property names by index assignment,verified with hasOwnProperty: package, protected, static
+ */
+
+
+function testcase() {
+ var tokenCodes = {};
+ tokenCodes['package'] = 0;
+ tokenCodes['protected'] = 1;
+ tokenCodes['static'] = 2;
+ var arr = [
+ 'package',
+ 'protected',
+ 'static'
+ ];
+ for(var p in tokenCodes) {
+ for(var p1 in arr) {
+ if(arr[p1] === p) {
+ if(!tokenCodes.hasOwnProperty(arr[p1])) {
+ return false;
+ };
+ }
+ }
+ }
+ return true;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-3-16.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-3-16.js
new file mode 100644
index 000000000..afd96393c
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-3-16.js
@@ -0,0 +1,33 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.6/7.6.1/7.6.1-3-16.js
+ * @description Allow reserved words as property names by index assignment,verified with hasOwnProperty: undefined, NaN, Infinity
+ */
+
+
+function testcase() {
+ var tokenCodes = {};
+ tokenCodes['undefined'] = 0;
+ tokenCodes['NaN'] = 1;
+ tokenCodes['Infinity'] = 2;
+ var arr = [
+ 'undefined',
+ 'NaN',
+ 'Infinity'
+ ];
+ for(var p in tokenCodes) {
+ for(var p1 in arr) {
+ if(arr[p1] === p) {
+ if(!tokenCodes.hasOwnProperty(arr[p1])) {
+ return false;
+ };
+ }
+ }
+ }
+ return true;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-3-2.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-3-2.js
new file mode 100644
index 000000000..351e26392
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-3-2.js
@@ -0,0 +1,33 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.6/7.6.1/7.6.1-3-2.js
+ * @description Allow reserved words as property names by index assignment,verified with hasOwnProperty: break, case, do
+ */
+
+
+function testcase() {
+ var tokenCodes = {};
+ tokenCodes['break'] = 0;
+ tokenCodes['case'] = 1;
+ tokenCodes['do'] = 2;
+ var arr = [
+ 'break',
+ 'case',
+ 'do'
+ ];
+ for(var p in tokenCodes) {
+ for(var p1 in arr) {
+ if(arr[p1] === p) {
+ if(!tokenCodes.hasOwnProperty(arr[p1])) {
+ return false;
+ };
+ }
+ }
+ }
+ return true;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-3-3.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-3-3.js
new file mode 100644
index 000000000..c756355fe
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-3-3.js
@@ -0,0 +1,33 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.6/7.6.1/7.6.1-3-3.js
+ * @description Allow reserved words as property names by index assignment,verified with hasOwnProperty: instanceof, typeof, else
+ */
+
+
+function testcase() {
+ var tokenCodes = {};
+ tokenCodes['instanceof'] = 0;
+ tokenCodes['typeof'] = 1;
+ tokenCodes['else'] = 2;
+ var arr = [
+ 'instanceof',
+ 'typeof',
+ 'else'
+ ];
+ for(var p in tokenCodes) {
+ for(var p1 in arr) {
+ if(arr[p1] === p) {
+ if(!tokenCodes.hasOwnProperty(arr[p1])) {
+ return false;
+ };
+ }
+ }
+ }
+ return true;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-3-4.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-3-4.js
new file mode 100644
index 000000000..15de6619b
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-3-4.js
@@ -0,0 +1,33 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.6/7.6.1/7.6.1-3-4.js
+ * @description Allow reserved words as property names by index assignment,verified with hasOwnProperty: new, var, catch
+ */
+
+
+function testcase() {
+ var tokenCodes = {};
+ tokenCodes['new'] = 0;
+ tokenCodes['var'] = 1;
+ tokenCodes['catch'] = 2;
+ var arr = [
+ 'new',
+ 'var',
+ 'catch'
+ ];
+ for(var p in tokenCodes) {
+ for(var p1 in arr) {
+ if(arr[p1] === p) {
+ if(!tokenCodes.hasOwnProperty(arr[p1])) {
+ return false;
+ };
+ }
+ }
+ }
+ return true;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-3-5.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-3-5.js
new file mode 100644
index 000000000..cae2bb6e6
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-3-5.js
@@ -0,0 +1,33 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.6/7.6.1/7.6.1-3-5.js
+ * @description Allow reserved words as property names by index assignment,verified with hasOwnProperty: finally, return, void
+ */
+
+
+function testcase() {
+ var tokenCodes = {};
+ tokenCodes['finally'] = 0;
+ tokenCodes['return'] = 1;
+ tokenCodes['void'] = 2;
+ var arr = [
+ 'finally',
+ 'return',
+ 'void'
+ ];
+ for(var p in tokenCodes) {
+ for(var p1 in arr) {
+ if(arr[p1] === p) {
+ if(!tokenCodes.hasOwnProperty(arr[p1])) {
+ return false;
+ };
+ }
+ }
+ }
+ return true;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-3-6.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-3-6.js
new file mode 100644
index 000000000..452072295
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-3-6.js
@@ -0,0 +1,33 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.6/7.6.1/7.6.1-3-6.js
+ * @description Allow reserved words as property names by index assignment,verified with hasOwnProperty: continue, for, switch
+ */
+
+
+function testcase() {
+ var tokenCodes = {};
+ tokenCodes['continue'] = 0;
+ tokenCodes['for'] = 1;
+ tokenCodes['switch'] = 2;
+ var arr = [
+ 'continue',
+ 'for',
+ 'switch'
+ ];
+ for(var p in tokenCodes) {
+ for(var p1 in arr) {
+ if(arr[p1] === p) {
+ if(!tokenCodes.hasOwnProperty(arr[p1])) {
+ return false;
+ };
+ }
+ }
+ }
+ return true;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-3-7.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-3-7.js
new file mode 100644
index 000000000..15092a0cf
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-3-7.js
@@ -0,0 +1,33 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.6/7.6.1/7.6.1-3-7.js
+ * @description Allow reserved words as property names by index assignment,verified with hasOwnProperty: while, debugger, function
+ */
+
+
+function testcase() {
+ var tokenCodes = {};
+ tokenCodes['while'] = 0;
+ tokenCodes['debugger'] = 1;
+ tokenCodes['function'] = 2;
+ var arr = [
+ 'while',
+ 'debugger',
+ 'function'
+ ];
+ for(var p in tokenCodes) {
+ for(var p1 in arr) {
+ if(arr[p1] === p) {
+ if(!tokenCodes.hasOwnProperty(arr[p1])) {
+ return false;
+ };
+ }
+ }
+ }
+ return true;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-3-8.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-3-8.js
new file mode 100644
index 000000000..19db5267f
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-3-8.js
@@ -0,0 +1,33 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.6/7.6.1/7.6.1-3-8.js
+ * @description Allow reserved words as property names by index assignment,verified with hasOwnProperty: this, with, default
+ */
+
+
+function testcase() {
+ var tokenCodes = {};
+ tokenCodes['this'] = 0;
+ tokenCodes['with'] = 1;
+ tokenCodes['default'] = 2;
+ var arr = [
+ 'this',
+ 'with',
+ 'default'
+ ];
+ for(var p in tokenCodes) {
+ for(var p1 in arr) {
+ if(arr[p1] === p) {
+ if(!tokenCodes.hasOwnProperty(arr[p1])) {
+ return false;
+ };
+ }
+ }
+ }
+ return true;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-3-9.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-3-9.js
new file mode 100644
index 000000000..856cdb104
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-3-9.js
@@ -0,0 +1,33 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.6/7.6.1/7.6.1-3-9.js
+ * @description Allow reserved words as property names by index assignment,verified with hasOwnProperty: if, throw, delete
+ */
+
+
+function testcase() {
+ var tokenCodes = {};
+ tokenCodes['if'] = 0;
+ tokenCodes['throw'] = 1;
+ tokenCodes['delete'] = 2;
+ var arr = [
+ 'if',
+ 'throw',
+ 'delete'
+ ];
+ for(var p in tokenCodes) {
+ for(var p1 in arr) {
+ if(arr[p1] === p) {
+ if(!tokenCodes.hasOwnProperty(arr[p1])) {
+ return false;
+ };
+ }
+ }
+ }
+ return true;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-4-1.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-4-1.js
new file mode 100644
index 000000000..8f81d173c
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-4-1.js
@@ -0,0 +1,50 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.6/7.6.1/7.6.1-4-1.js
+ * @description Allow reserved words as property names by set function within an object, verified with hasOwnProperty: null, true, false
+ */
+
+
+function testcase() {
+ var test0 = 0, test1 = 1, test2 = 2;
+ var tokenCodes = {
+ set null(value) {
+ test0 = value;
+ },
+ get null() {
+ return test0;
+ },
+ set true(value) {
+ test1 = value;
+ },
+ get true() {
+ return test1;
+ },
+ set false(value) {
+ test2 = value;
+ },
+ get false(){
+ return test2;
+ }
+ };
+ var arr = [
+ 'null',
+ 'true',
+ 'false'
+ ];
+ for(var p in tokenCodes) {
+ for(var p1 in arr) {
+ if(arr[p1] === p) {
+ if(!tokenCodes.hasOwnProperty(arr[p1])) {
+ return false;
+ };
+ }
+ }
+ }
+ return true;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-4-10.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-4-10.js
new file mode 100644
index 000000000..ae2445a25
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-4-10.js
@@ -0,0 +1,50 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.6/7.6.1/7.6.1-4-10.js
+ * @description Allow reserved words as property names by set function within an object, verified with hasOwnProperty: in, try, class
+ */
+
+
+function testcase() {
+ var test0 = 0, test1 = 1, test2 = 2;
+ var tokenCodes = {
+ set in(value){
+ test0 = value;
+ },
+ get in(){
+ return test0;
+ },
+ set try(value){
+ test1 = value;
+ },
+ get try(){
+ return test1
+ },
+ set class(value){
+ test2 = value;
+ },
+ get class(){
+ return test2;
+ }
+ };
+ var arr = [
+ 'in',
+ 'try',
+ 'class'
+ ];
+ for(var p in tokenCodes) {
+ for(var p1 in arr) {
+ if(arr[p1] === p) {
+ if(!tokenCodes.hasOwnProperty(arr[p1])) {
+ return false;
+ };
+ }
+ }
+ }
+ return true;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-4-11.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-4-11.js
new file mode 100644
index 000000000..081d81170
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-4-11.js
@@ -0,0 +1,50 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.6/7.6.1/7.6.1-4-11.js
+ * @description Allow reserved words as property names by set function within an object, verified with hasOwnProperty: enum, extends, super
+ */
+
+
+function testcase() {
+ var test0 = 0, test1 = 1, test2 = 2;
+ var tokenCodes = {
+ set enum(value){
+ test0 = value;
+ },
+ get enum(){
+ return test0;
+ },
+ set extends(value){
+ test1 = value;
+ },
+ get extends(){
+ return test1;
+ },
+ set super(value){
+ test2 = value;
+ },
+ get super(){
+ return test2;
+ }
+ };
+ var arr = [
+ 'enum',
+ 'extends',
+ 'super'
+ ];
+ for(var p in tokenCodes) {
+ for(var p1 in arr) {
+ if(arr[p1] === p) {
+ if(!tokenCodes.hasOwnProperty(arr[p1])) {
+ return false;
+ };
+ }
+ }
+ }
+ return true;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-4-12.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-4-12.js
new file mode 100644
index 000000000..3c16683f7
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-4-12.js
@@ -0,0 +1,50 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.6/7.6.1/7.6.1-4-12.js
+ * @description Allow reserved words as property names by set function within an object, verified with hasOwnProperty: const, export, import
+ */
+
+
+function testcase() {
+ var test0 = 0, test1 = 1, test2 = 2;
+ var tokenCodes = {
+ set const(value){
+ test0 = value;
+ },
+ get const(){
+ return test0;
+ },
+ set export(value){
+ test1 = value;
+ },
+ get export(){
+ return test1
+ },
+ set import(value){
+ test2 = value;
+ },
+ get import(){
+ return test2
+ }
+ };
+ var arr = [
+ 'const',
+ 'export',
+ 'import'
+ ];
+ for(var p in tokenCodes) {
+ for(var p1 in arr) {
+ if(arr[p1] === p) {
+ if(!tokenCodes.hasOwnProperty(arr[p1])) {
+ return false;
+ };
+ }
+ }
+ }
+ return true;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-4-13.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-4-13.js
new file mode 100644
index 000000000..47dd6e266
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-4-13.js
@@ -0,0 +1,50 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.6/7.6.1/7.6.1-4-13.js
+ * @description Allow reserved words as property names by set function within an object, verified with hasOwnProperty: implements, let, private
+ */
+
+
+function testcase() {
+ var test0 = 0, test1 = 1, test2 = 2;
+ var tokenCodes = {
+ set implements(value){
+ test0 = value;
+ },
+ get implements(){
+ return test0;
+ },
+ set let(value){
+ test1 = value;
+ },
+ get let(){
+ return test1
+ },
+ set private(value){
+ test2 = value;
+ },
+ get private(){
+ return test2;
+ }
+ };
+ var arr = [
+ 'implements',
+ 'let',
+ 'private'
+ ];
+ for(var p in tokenCodes) {
+ for(var p1 in arr) {
+ if(arr[p1] === p) {
+ if(!tokenCodes.hasOwnProperty(arr[p1])) {
+ return false;
+ };
+ }
+ }
+ }
+ return true;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-4-14.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-4-14.js
new file mode 100644
index 000000000..0d1e1aa4f
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-4-14.js
@@ -0,0 +1,50 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.6/7.6.1/7.6.1-4-14.js
+ * @description Allow reserved words as property names by set function within an object, verified with hasOwnProperty: public, yield, interface
+ */
+
+
+function testcase() {
+ var test0 = 0, test1 = 1, test2 = 2;
+ var tokenCodes = {
+ set public(value){
+ test0 = value;
+ },
+ get public(){
+ return test0;
+ },
+ set yield(value){
+ test1 = value;
+ },
+ get yield(){
+ return test1;
+ },
+ set interface(value){
+ test2 = value;
+ },
+ get interface(){
+ return test2;
+ }
+ };
+ var arr = [
+ 'public',
+ 'yield',
+ 'interface'
+ ];
+ for(var p in tokenCodes) {
+ for(var p1 in arr) {
+ if(arr[p1] === p) {
+ if(!tokenCodes.hasOwnProperty(arr[p1])) {
+ return false;
+ };
+ }
+ }
+ }
+ return true;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-4-15.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-4-15.js
new file mode 100644
index 000000000..111f00706
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-4-15.js
@@ -0,0 +1,50 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.6/7.6.1/7.6.1-4-15.js
+ * @description Allow reserved words as property names by set function within an object, verified with hasOwnProperty: package, protected, static
+ */
+
+
+function testcase() {
+ var test0 = 0, test1 = 1, test2 = 2;
+ var tokenCodes = {
+ set package(value){
+ test0 = value;
+ },
+ get package(){
+ return test0;
+ },
+ set protected(value){
+ test1 = value;
+ },
+ get protected(){
+ return test1
+ },
+ set static(value){
+ test2 = value;
+ },
+ get static(){
+ return test2;
+ }
+ };
+ var arr = [
+ 'package',
+ 'protected',
+ 'static'
+ ];
+ for(var p in tokenCodes) {
+ for(var p1 in arr) {
+ if(arr[p1] === p) {
+ if(!tokenCodes.hasOwnProperty(arr[p1])) {
+ return false;
+ };
+ }
+ }
+ }
+ return true;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-4-16.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-4-16.js
new file mode 100644
index 000000000..0edafa8e3
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-4-16.js
@@ -0,0 +1,50 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.6/7.6.1/7.6.1-4-16.js
+ * @description Allow reserved words as property names by set function within an object, verified with hasOwnProperty: undefined, NaN, Infinity
+ */
+
+
+function testcase() {
+ var test0 = 0, test1 = 1, test2 = 2;
+ var tokenCodes = {
+ set undefined(value){
+ test0 = value;
+ },
+ get undefined(){
+ return test0;
+ },
+ set NaN(value){
+ test1 = value;
+ },
+ get NaN(){
+ return test1;
+ },
+ set Infinity(value){
+ test2 = value;
+ },
+ get Infinity(){
+ return test2;
+ }
+ };
+ var arr = [
+ 'undefined',
+ 'NaN',
+ 'Infinity'
+ ];
+ for(var p in tokenCodes) {
+ for(var p1 in arr) {
+ if(arr[p1] === p) {
+ if(!tokenCodes.hasOwnProperty(arr[p1])) {
+ return false;
+ };
+ }
+ }
+ }
+ return true;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-4-2.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-4-2.js
new file mode 100644
index 000000000..8569c9cea
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-4-2.js
@@ -0,0 +1,50 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.6/7.6.1/7.6.1-4-2.js
+ * @description Allow reserved words as property names by set function within an object, verified with hasOwnProperty: break, case, do
+ */
+
+
+function testcase() {
+ var test0 = 0, test1 = 1, test2 = 2;
+ var tokenCodes = {
+ set break(value){
+ test0 = value;
+ },
+ get break(){
+ return test0;
+ },
+ set case(value){
+ test1 = value;
+ },
+ get case(){
+ return test1;
+ },
+ set do(value){
+ test2 = value;
+ },
+ get do(){
+ return test2;
+ }
+ };
+ var arr = [
+ 'break',
+ 'case',
+ 'do'
+ ];
+ for(var p in tokenCodes) {
+ for(var p1 in arr) {
+ if(arr[p1] === p) {
+ if(!tokenCodes.hasOwnProperty(arr[p1])) {
+ return false;
+ };
+ }
+ }
+ }
+ return true;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-4-3.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-4-3.js
new file mode 100644
index 000000000..3ef8ea7aa
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-4-3.js
@@ -0,0 +1,50 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.6/7.6.1/7.6.1-4-3.js
+ * @description Allow reserved words as property names by set function within an object, verified with hasOwnProperty: instanceof, typeof, else
+ */
+
+
+function testcase() {
+ var test0 = 0, test1 = 1, test2 = 2;
+ var tokenCodes = {
+ set instanceof(value){
+ test0 = value;
+ },
+ get instanceof(){
+ return test0;
+ },
+ set typeof(value){
+ test1 = value;
+ },
+ get typeof(){
+ return test1;
+ },
+ set else(value){
+ test2 = value;
+ },
+ get else(){
+ return test2;
+ }
+ };
+ var arr = [
+ 'instanceof',
+ 'typeof',
+ 'else'
+ ];
+ for(var p in tokenCodes) {
+ for(var p1 in arr) {
+ if(arr[p1] === p) {
+ if(!tokenCodes.hasOwnProperty(arr[p1])) {
+ return false;
+ };
+ }
+ }
+ }
+ return true;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-4-4.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-4-4.js
new file mode 100644
index 000000000..afb165ed1
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-4-4.js
@@ -0,0 +1,50 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.6/7.6.1/7.6.1-4-4.js
+ * @description Allow reserved words as property names by set function within an object, verified with hasOwnProperty: new, var, catch
+ */
+
+
+function testcase() {
+ var test0 = 0, test1 = 1, test2 = 2;
+ var tokenCodes = {
+ set new(value){
+ test0 = value;
+ },
+ get new(){
+ return test0;
+ },
+ set var(value){
+ test1 = value;
+ },
+ get var(){
+ return test1;
+ },
+ set catch(value){
+ test2 = value;
+ },
+ get catch(){
+ return test2;
+ }
+ };
+ var arr = [
+ 'new',
+ 'var',
+ 'catch'
+ ];
+ for(var p in tokenCodes) {
+ for(var p1 in arr) {
+ if(arr[p1] === p) {
+ if(!tokenCodes.hasOwnProperty(arr[p1])) {
+ return false;
+ };
+ }
+ }
+ }
+ return true;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-4-5.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-4-5.js
new file mode 100644
index 000000000..e4c6badae
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-4-5.js
@@ -0,0 +1,50 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.6/7.6.1/7.6.1-4-5.js
+ * @description Allow reserved words as property names by set function within an object, verified with hasOwnProperty: finally, return, void
+ */
+
+
+function testcase() {
+ var test0 = 0, test1 = 1, test2 = 2;
+ var tokenCodes = {
+ set finally(value){
+ test0 = value;
+ },
+ get finally(){
+ return test0;
+ },
+ set return(value){
+ test1 = value;
+ },
+ get return(){
+ return test1;
+ },
+ set void(value){
+ test2 = value;
+ },
+ get void(){
+ return test2;
+ }
+ };
+ var arr = [
+ 'finally',
+ 'return',
+ 'void'
+ ];
+ for(var p in tokenCodes) {
+ for(var p1 in arr) {
+ if(arr[p1] === p) {
+ if(!tokenCodes.hasOwnProperty(arr[p1])) {
+ return false;
+ };
+ }
+ }
+ }
+ return true;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-4-6.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-4-6.js
new file mode 100644
index 000000000..f240ded36
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-4-6.js
@@ -0,0 +1,50 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.6/7.6.1/7.6.1-4-6.js
+ * @description Allow reserved words as property names by set function within an object, verified with hasOwnProperty: continue, for, switch
+ */
+
+
+function testcase() {
+ var test0 = 0, test1 = 1, test2 = 2;
+ var tokenCodes = {
+ set continue(value){
+ test0 = value;
+ },
+ get continue(){
+ return test0;
+ },
+ set for(value){
+ test1 = value;
+ },
+ get for(){
+ return test1;
+ },
+ set switch(value){
+ test2 = value;
+ },
+ get switch(){
+ return test2;
+ }
+ };
+ var arr = [
+ 'continue',
+ 'for',
+ 'switch'
+ ];
+ for(var p in tokenCodes) {
+ for(var p1 in arr) {
+ if(arr[p1] === p) {
+ if(!tokenCodes.hasOwnProperty(arr[p1])) {
+ return false;
+ };
+ }
+ }
+ }
+ return true;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-4-7.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-4-7.js
new file mode 100644
index 000000000..6134976c8
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-4-7.js
@@ -0,0 +1,50 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.6/7.6.1/7.6.1-4-7.js
+ * @description Allow reserved words as property names by set function within an object, verified with hasOwnProperty: while, debugger, function
+ */
+
+
+function testcase() {
+ var test0 = 0, test1 = 1, test2 = 2;
+ var tokenCodes = {
+ set while(value){
+ test0 = value;
+ },
+ get while(){
+ return test0
+ },
+ set debugger(value){
+ test1 = value;
+ },
+ get debugger(){
+ return test1;
+ },
+ set function(value){
+ test2 = value;
+ },
+ get function(){
+ return test2;
+ }
+ };
+ var arr = [
+ 'while' ,
+ 'debugger',
+ 'function'
+ ];
+ for(var p in tokenCodes) {
+ for(var p1 in arr) {
+ if(arr[p1] === p) {
+ if(!tokenCodes.hasOwnProperty(arr[p1])) {
+ return false;
+ };
+ }
+ }
+ }
+ return true;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-4-8.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-4-8.js
new file mode 100644
index 000000000..a027cf608
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-4-8.js
@@ -0,0 +1,50 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.6/7.6.1/7.6.1-4-8.js
+ * @description Allow reserved words as property names by set function within an object, verified with hasOwnProperty: this, with, default
+ */
+
+
+function testcase() {
+ var test0 = 0, test1 = 1, test2 = 2;
+ var tokenCodes = {
+ set this(value){
+ test0 = value;
+ },
+ get this(){
+ return test0;
+ },
+ set with(value){
+ test1 = value;
+ },
+ get with(){
+ return test1;
+ },
+ set default(value){
+ test2 = value;
+ },
+ get default(){
+ return test2;
+ }
+ };
+ var arr = [
+ 'this',
+ 'with',
+ 'default'
+ ];
+ for(var p in tokenCodes) {
+ for(var p1 in arr) {
+ if(arr[p1] === p) {
+ if(!tokenCodes.hasOwnProperty(arr[p1])) {
+ return false;
+ };
+ }
+ }
+ }
+ return true;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-4-9.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-4-9.js
new file mode 100644
index 000000000..1828b0d9a
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-4-9.js
@@ -0,0 +1,50 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.6/7.6.1/7.6.1-4-9.js
+ * @description Allow reserved words as property names by set function within an object, verified with hasOwnProperty: if, throw, delete
+ */
+
+
+function testcase() {
+ var test0 = 0, test1 = 1, test2 = 2;
+ var tokenCodes = {
+ set if(value){
+ test0 = value;
+ },
+ get if(){
+ return test0;
+ },
+ set throw(value){
+ test1 = value;
+ },
+ get throw(){
+ return test1
+ },
+ set delete(value){
+ test2 = value;
+ },
+ get delete(){
+ return test2;
+ }
+ };
+ var arr = [
+ 'if',
+ 'throw',
+ 'delete'
+ ];
+ for(var p in tokenCodes) {
+ for(var p1 in arr) {
+ if(arr[p1] === p) {
+ if(!tokenCodes.hasOwnProperty(arr[p1])) {
+ return false;
+ };
+ }
+ }
+ }
+ return true;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-5-1.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-5-1.js
new file mode 100644
index 000000000..88eb2869f
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-5-1.js
@@ -0,0 +1,30 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.6/7.6.1/7.6.1-5-1.js
+ * @description Allow reserved words as property names at object initialization, accessed via indexing: null, true, false
+ */
+
+
+function testcase() {
+ var tokenCodes = {
+ null: 0,
+ true: 1,
+ false: 2
+ };
+ var arr = [
+ 'null',
+ 'true',
+ 'false'
+ ];
+ for (var i = 0; i < arr.length; i++) {
+ if (tokenCodes[arr[i]] !== i) {
+ return false;
+ };
+ }
+ return true;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-5-10.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-5-10.js
new file mode 100644
index 000000000..a00ce7096
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-5-10.js
@@ -0,0 +1,30 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.6/7.6.1/7.6.1-5-10.js
+ * @description Allow reserved words as property names at object initialization, accessed via indexing: in, try, class
+ */
+
+
+function testcase() {
+ var tokenCodes = {
+ in: 0,
+ try: 1,
+ class: 2
+ };
+ var arr = [
+ 'in',
+ 'try',
+ 'class'
+ ];
+ for (var i = 0; i < arr.length; i++) {
+ if (tokenCodes[arr[i]] !== i) {
+ return false;
+ };
+ }
+ return true;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-5-11.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-5-11.js
new file mode 100644
index 000000000..7a3a3af0c
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-5-11.js
@@ -0,0 +1,30 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.6/7.6.1/7.6.1-5-11.js
+ * @description Allow reserved words as property names at object initialization, accessed via indexing: enum, extends, super
+ */
+
+
+function testcase() {
+ var tokenCodes = {
+ enum: 0,
+ extends: 1,
+ super: 2
+ };
+ var arr = [
+ 'enum',
+ 'extends',
+ 'super'
+ ];
+ for (var i = 0; i < arr.length; i++) {
+ if (tokenCodes[arr[i]] !== i) {
+ return false;
+ };
+ }
+ return true;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-5-12.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-5-12.js
new file mode 100644
index 000000000..b2b7645f5
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-5-12.js
@@ -0,0 +1,30 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.6/7.6.1/7.6.1-5-12.js
+ * @description Allow reserved words as property names at object initialization, accessed via indexing: const, export, import
+ */
+
+
+function testcase() {
+ var tokenCodes = {
+ const : 0,
+ export: 1,
+ import: 2
+ };
+ var arr = [
+ 'const',
+ 'export',
+ 'import'
+ ];
+ for (var i = 0; i < arr.length; i++) {
+ if (tokenCodes[arr[i]] !== i) {
+ return false;
+ };
+ }
+ return true;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-5-13.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-5-13.js
new file mode 100644
index 000000000..a7b03b95c
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-5-13.js
@@ -0,0 +1,30 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.6/7.6.1/7.6.1-5-13.js
+ * @description Allow reserved words as property names at object initialization, accessed via indexing: implements, let, private
+ */
+
+
+function testcase() {
+ var tokenCodes = {
+ implements: 0,
+ let: 1,
+ private: 2
+ };
+ var arr = [
+ 'implements',
+ 'let',
+ 'private'
+ ];
+ for (var i = 0; i < arr.length; i++) {
+ if (tokenCodes[arr[i]] !== i) {
+ return false;
+ };
+ }
+ return true;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-5-14.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-5-14.js
new file mode 100644
index 000000000..f24467c8f
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-5-14.js
@@ -0,0 +1,30 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.6/7.6.1/7.6.1-5-14.js
+ * @description Allow reserved words as property names at object initialization, accessed via indexing: public, yield, interface
+ */
+
+
+function testcase() {
+ var tokenCodes = {
+ public: 0,
+ yield: 1,
+ interface: 2
+ };
+ var arr = [
+ 'public',
+ 'yield',
+ 'interface'
+ ];
+ for (var i = 0; i < arr.length; i++) {
+ if (tokenCodes[arr[i]] !== i) {
+ return false;
+ };
+ }
+ return true;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-5-15.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-5-15.js
new file mode 100644
index 000000000..498e5e7d5
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-5-15.js
@@ -0,0 +1,30 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.6/7.6.1/7.6.1-5-15.js
+ * @description Allow reserved words as property names at object initialization, accessed via indexing: package, protected, static
+ */
+
+
+function testcase() {
+ var tokenCodes = {
+ package: 0,
+ protected: 1,
+ static: 2
+ };
+ var arr = [
+ 'package',
+ 'protected',
+ 'static'
+ ];
+ for (var i = 0; i < arr.length; i++) {
+ if (tokenCodes[arr[i]] !== i) {
+ return false;
+ };
+ }
+ return true;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-5-16.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-5-16.js
new file mode 100644
index 000000000..8bf471549
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-5-16.js
@@ -0,0 +1,30 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.6/7.6.1/7.6.1-5-16.js
+ * @description Allow reserved words as property names at object initialization, accessed via indexing: undefined, NaN, Infinity
+ */
+
+
+function testcase() {
+ var tokenCodes = {
+ undefined: 0,
+ NaN: 1,
+ Infinity: 2
+ };
+ var arr = [
+ 'undefined',
+ 'NaN',
+ 'Infinity'
+ ];
+ for (var i = 0; i < arr.length; i++) {
+ if (tokenCodes[arr[i]] !== i) {
+ return false;
+ };
+ }
+ return true;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-5-2.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-5-2.js
new file mode 100644
index 000000000..79ccb65b9
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-5-2.js
@@ -0,0 +1,30 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.6/7.6.1/7.6.1-5-2.js
+ * @description Allow reserved words as property names at object initialization, accessed via indexing: break, case, do
+ */
+
+
+function testcase() {
+ var tokenCodes = {
+ break: 0,
+ case: 1,
+ do: 2
+ };
+ var arr = [
+ 'break',
+ 'case',
+ 'do'
+ ];
+ for (var i = 0; i < arr.length; i++) {
+ if (tokenCodes[arr[i]] !== i) {
+ return false;
+ };
+ }
+ return true;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-5-3.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-5-3.js
new file mode 100644
index 000000000..643fce68f
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-5-3.js
@@ -0,0 +1,30 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.6/7.6.1/7.6.1-5-3.js
+ * @description Allow reserved words as property names at object initialization, accessed via indexing: instanceof, typeof, else
+ */
+
+
+function testcase() {
+ var tokenCodes = {
+ instanceof: 0,
+ typeof: 1,
+ else: 2
+ };
+ var arr = [
+ 'instanceof',
+ 'typeof',
+ 'else'
+ ];
+ for (var i = 0; i < arr.length; i++) {
+ if (tokenCodes[arr[i]] !== i) {
+ return false;
+ };
+ }
+ return true;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-5-4.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-5-4.js
new file mode 100644
index 000000000..8080248a2
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-5-4.js
@@ -0,0 +1,30 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.6/7.6.1/7.6.1-5-4.js
+ * @description Allow reserved words as property names at object initialization, accessed via indexing: new, var, catch
+ */
+
+
+function testcase() {
+ var tokenCodes = {
+ new: 0,
+ var: 1,
+ catch: 2
+ };
+ var arr = [
+ 'new',
+ 'var',
+ 'catch'
+ ];
+ for (var i = 0; i < arr.length; i++) {
+ if (tokenCodes[arr[i]] !== i) {
+ return false;
+ };
+ }
+ return true;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-5-5.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-5-5.js
new file mode 100644
index 000000000..bb3280732
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-5-5.js
@@ -0,0 +1,30 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.6/7.6.1/7.6.1-5-5.js
+ * @description Allow reserved words as property names at object initialization, accessed via indexing: finally, return, void
+ */
+
+
+function testcase() {
+ var tokenCodes = {
+ finally: 0,
+ return: 1,
+ void: 2
+ };
+ var arr = [
+ 'finally',
+ 'return',
+ 'void'
+ ];
+ for (var i = 0; i < arr.length; i++) {
+ if (tokenCodes[arr[i]] !== i) {
+ return false;
+ };
+ }
+ return true;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-5-6.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-5-6.js
new file mode 100644
index 000000000..c9dc5a146
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-5-6.js
@@ -0,0 +1,30 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.6/7.6.1/7.6.1-5-6.js
+ * @description Allow reserved words as property names at object initialization, accessed via indexing: continue, for, switch
+ */
+
+
+function testcase() {
+ var tokenCodes = {
+ continue: 0,
+ for: 1,
+ switch: 2
+ };
+ var arr = [
+ 'continue',
+ 'for',
+ 'switch'
+ ];
+ for (var i = 0; i < arr.length; i++) {
+ if (tokenCodes[arr[i]] !== i) {
+ return false;
+ };
+ }
+ return true;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-5-7.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-5-7.js
new file mode 100644
index 000000000..a0a5a977b
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-5-7.js
@@ -0,0 +1,30 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.6/7.6.1/7.6.1-5-7.js
+ * @description Allow reserved words as property names at object initialization, accessed via indexing: while, debugger, function
+ */
+
+
+function testcase() {
+ var tokenCodes = {
+ while: 0,
+ debugger: 1,
+ function: 2
+ };
+ var arr = [
+ 'while' ,
+ 'debugger',
+ 'function'
+ ];
+ for (var i = 0; i < arr.length; i++) {
+ if (tokenCodes[arr[i]] !== i) {
+ return false;
+ };
+ }
+ return true;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-5-8.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-5-8.js
new file mode 100644
index 000000000..d659f6acd
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-5-8.js
@@ -0,0 +1,30 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.6/7.6.1/7.6.1-5-8.js
+ * @description Allow reserved words as property names at object initialization, accessed via indexing: this, with, default
+ */
+
+
+function testcase() {
+ var tokenCodes = {
+ this: 0,
+ with: 1,
+ default: 2
+ };
+ var arr = [
+ 'this',
+ 'with',
+ 'default'
+ ];
+ for (var i = 0; i < arr.length; i++) {
+ if (tokenCodes[arr[i]] !== i) {
+ return false;
+ };
+ }
+ return true;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-5-9.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-5-9.js
new file mode 100644
index 000000000..6e21dfd78
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-5-9.js
@@ -0,0 +1,30 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.6/7.6.1/7.6.1-5-9.js
+ * @description Allow reserved words as property names at object initialization, accessed via indexing: if, throw, delete
+ */
+
+
+function testcase() {
+ var tokenCodes = {
+ if: 0,
+ throw: 1,
+ delete: 2
+ };
+ var arr = [
+ 'if',
+ 'throw',
+ 'delete'
+ ];
+ for (var i = 0; i < arr.length; i++) {
+ if (tokenCodes[arr[i]] !== i) {
+ return false;
+ };
+ }
+ return true;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-6-1.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-6-1.js
new file mode 100644
index 000000000..b2c98910a
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-6-1.js
@@ -0,0 +1,29 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.6/7.6.1/7.6.1-6-1.js
+ * @description Allow reserved words as property names by dot operator assignment, accessed via indexing: null, true, false
+ */
+
+
+function testcase() {
+ var tokenCodes = {};
+ tokenCodes.null = 0;
+ tokenCodes.true = 1;
+ tokenCodes.false = 2;
+ var arr = [
+ 'null',
+ 'true',
+ 'false'
+ ];
+ for (var i = 0; i < arr.length; i++) {
+ if (tokenCodes[arr[i]] !== i) {
+ return false;
+ };
+ }
+ return true;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-6-10.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-6-10.js
new file mode 100644
index 000000000..3099c4abc
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-6-10.js
@@ -0,0 +1,29 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.6/7.6.1/7.6.1-6-10.js
+ * @description Allow reserved words as property names by dot operator assignment, accessed via indexing: in, try, class
+ */
+
+
+function testcase() {
+ var tokenCodes = {};
+ tokenCodes.in = 0;
+ tokenCodes.try = 1;
+ tokenCodes.class = 2;
+ var arr = [
+ 'in',
+ 'try',
+ 'class'
+ ];
+ for (var i = 0; i < arr.length; i++) {
+ if (tokenCodes[arr[i]] !== i) {
+ return false;
+ };
+ }
+ return true;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-6-11.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-6-11.js
new file mode 100644
index 000000000..9fda29ca4
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-6-11.js
@@ -0,0 +1,29 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.6/7.6.1/7.6.1-6-11.js
+ * @description Allow reserved words as property names by dot operator assignment, accessed via indexing: enum, extends, super
+ */
+
+
+function testcase() {
+ var tokenCodes = {};
+ tokenCodes.enum = 0;
+ tokenCodes.extends = 1;
+ tokenCodes.super = 2;
+ var arr = [
+ 'enum',
+ 'extends',
+ 'super'
+ ];
+ for (var i = 0; i < arr.length; i++) {
+ if (tokenCodes[arr[i]] !== i) {
+ return false;
+ };
+ }
+ return true;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-6-12.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-6-12.js
new file mode 100644
index 000000000..7cfb6643a
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-6-12.js
@@ -0,0 +1,29 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.6/7.6.1/7.6.1-6-12.js
+ * @description Allow reserved words as property names by dot operator assignment, accessed via indexing: const, export, import
+ */
+
+
+function testcase() {
+ var tokenCodes = {};
+ tokenCodes.const = 0;
+ tokenCodes.export = 1;
+ tokenCodes.import = 2;
+ var arr = [
+ 'const',
+ 'export',
+ 'import'
+ ];
+ for (var i = 0; i < arr.length; i++) {
+ if (tokenCodes[arr[i]] !== i) {
+ return false;
+ };
+ }
+ return true;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-6-13.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-6-13.js
new file mode 100644
index 000000000..ff4bf38cf
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-6-13.js
@@ -0,0 +1,29 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.6/7.6.1/7.6.1-6-13.js
+ * @description Allow reserved words as property names by dot operator assignment, accessed via indexing: implements, let, private
+ */
+
+
+function testcase() {
+ var tokenCodes = {};
+ tokenCodes.implements = 0;
+ tokenCodes.let = 1;
+ tokenCodes.private = 2;
+ var arr = [
+ 'implements',
+ 'let',
+ 'private'
+ ];
+ for (var i = 0; i < arr.length; i++) {
+ if (tokenCodes[arr[i]] !== i) {
+ return false;
+ };
+ }
+ return true;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-6-14.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-6-14.js
new file mode 100644
index 000000000..4bea56fe5
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-6-14.js
@@ -0,0 +1,29 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.6/7.6.1/7.6.1-6-14.js
+ * @description Allow reserved words as property names by dot operator assignment, accessed via indexing: public, yield, interface
+ */
+
+
+function testcase() {
+ var tokenCodes = {};
+ tokenCodes.public = 0;
+ tokenCodes.yield = 1;
+ tokenCodes.interface = 2;
+ var arr = [
+ 'public',
+ 'yield',
+ 'interface'
+ ];
+ for (var i = 0; i < arr.length; i++) {
+ if (tokenCodes[arr[i]] !== i) {
+ return false;
+ };
+ }
+ return true;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-6-15.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-6-15.js
new file mode 100644
index 000000000..0021da41b
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-6-15.js
@@ -0,0 +1,29 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.6/7.6.1/7.6.1-6-15.js
+ * @description Allow reserved words as property names by dot operator assignment, accessed via indexing: package, protected, static
+ */
+
+
+function testcase() {
+ var tokenCodes = {};
+ tokenCodes.package = 0;
+ tokenCodes.protected = 1;
+ tokenCodes.static = 2;
+ var arr = [
+ 'package',
+ 'protected',
+ 'static'
+ ];
+ for (var i = 0; i < arr.length; i++) {
+ if (tokenCodes[arr[i]] !== i) {
+ return false;
+ };
+ }
+ return true;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-6-16.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-6-16.js
new file mode 100644
index 000000000..bc98a8a5f
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-6-16.js
@@ -0,0 +1,29 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.6/7.6.1/7.6.1-6-16.js
+ * @description Allow reserved words as property names by dot operator assignment, accessed via indexing: undefined, NaN, Infinity
+ */
+
+
+function testcase() {
+ var tokenCodes = {};
+ tokenCodes.undefined = 0;
+ tokenCodes.NaN = 1;
+ tokenCodes.Infinity = 2;
+ var arr = [
+ 'undefined',
+ 'NaN',
+ 'Infinity'
+ ];
+ for (var i = 0; i < arr.length; i++) {
+ if (tokenCodes[arr[i]] !== i) {
+ return false;
+ };
+ }
+ return true;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-6-2.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-6-2.js
new file mode 100644
index 000000000..65c06c957
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-6-2.js
@@ -0,0 +1,29 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.6/7.6.1/7.6.1-6-2.js
+ * @description Allow reserved words as property names by dot operator assignment, accessed via indexing: break, case, do
+ */
+
+
+function testcase() {
+ var tokenCodes = {};
+ tokenCodes.break = 0;
+ tokenCodes.case = 1;
+ tokenCodes.do = 2;
+ var arr = [
+ 'break',
+ 'case',
+ 'do'
+ ];
+ for (var i = 0; i < arr.length; i++) {
+ if (tokenCodes[arr[i]] !== i) {
+ return false;
+ };
+ }
+ return true;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-6-3.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-6-3.js
new file mode 100644
index 000000000..b403a3efe
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-6-3.js
@@ -0,0 +1,29 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.6/7.6.1/7.6.1-6-3.js
+ * @description Allow reserved words as property names by dot operator assignment, accessed via indexing: instanceof, typeof, else
+ */
+
+
+function testcase() {
+ var tokenCodes = {};
+ tokenCodes.instanceof = 0;
+ tokenCodes.typeof = 1;
+ tokenCodes.else = 2;
+ var arr = [
+ 'instanceof',
+ 'typeof',
+ 'else'
+ ];
+ for (var i = 0; i < arr.length; i++) {
+ if (tokenCodes[arr[i]] !== i) {
+ return false;
+ };
+ }
+ return true;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-6-4.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-6-4.js
new file mode 100644
index 000000000..cbe85b25e
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-6-4.js
@@ -0,0 +1,29 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.6/7.6.1/7.6.1-6-4.js
+ * @description Allow reserved words as property names by dot operator assignment, accessed via indexing: new, var, catch
+ */
+
+
+function testcase() {
+ var tokenCodes = {};
+ tokenCodes.new = 0;
+ tokenCodes.var = 1;
+ tokenCodes.catch = 2;
+ var arr = [
+ 'new',
+ 'var',
+ 'catch'
+ ];
+ for (var i = 0; i < arr.length; i++) {
+ if (tokenCodes[arr[i]] !== i) {
+ return false;
+ };
+ }
+ return true;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-6-5.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-6-5.js
new file mode 100644
index 000000000..5d2e1b6f6
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-6-5.js
@@ -0,0 +1,29 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.6/7.6.1/7.6.1-6-5.js
+ * @description Allow reserved words as property names by dot operator assignment, accessed via indexing: finally, return, void
+ */
+
+
+function testcase() {
+ var tokenCodes = {};
+ tokenCodes.finally = 0;
+ tokenCodes.return = 1;
+ tokenCodes.void = 2;
+ var arr = [
+ 'finally',
+ 'return',
+ 'void'
+ ];
+ for (var i = 0; i < arr.length; i++) {
+ if (tokenCodes[arr[i]] !== i) {
+ return false;
+ };
+ }
+ return true;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-6-6.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-6-6.js
new file mode 100644
index 000000000..df407917b
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-6-6.js
@@ -0,0 +1,29 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.6/7.6.1/7.6.1-6-6.js
+ * @description Allow reserved words as property names by dot operator assignment, accessed via indexing: continue, for, switch
+ */
+
+
+function testcase() {
+ var tokenCodes = {};
+ tokenCodes.continue = 0;
+ tokenCodes.for = 1;
+ tokenCodes.switch = 2;
+ var arr = [
+ 'continue',
+ 'for',
+ 'switch'
+ ];
+ for (var i = 0; i < arr.length; i++) {
+ if (tokenCodes[arr[i]] !== i) {
+ return false;
+ };
+ }
+ return true;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-6-7.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-6-7.js
new file mode 100644
index 000000000..1c4ca549c
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-6-7.js
@@ -0,0 +1,29 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.6/7.6.1/7.6.1-6-7.js
+ * @description Allow reserved words as property names by dot operator assignment, accessed via indexing: while, debugger, function
+ */
+
+
+function testcase() {
+ var tokenCodes = {};
+ tokenCodes.while = 0;
+ tokenCodes.debugger = 1;
+ tokenCodes.function = 2;
+ var arr = [
+ 'while' ,
+ 'debugger',
+ 'function'
+ ];
+ for (var i = 0; i < arr.length; i++) {
+ if (tokenCodes[arr[i]] !== i) {
+ return false;
+ };
+ }
+ return true;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-6-8.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-6-8.js
new file mode 100644
index 000000000..945eecf73
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-6-8.js
@@ -0,0 +1,29 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.6/7.6.1/7.6.1-6-8.js
+ * @description Allow reserved words as property names by dot operator assignment, accessed via indexing: this, with, default
+ */
+
+
+function testcase() {
+ var tokenCodes = {};
+ tokenCodes.this = 0;
+ tokenCodes.with = 1;
+ tokenCodes.default = 2;
+ var arr = [
+ 'this',
+ 'with',
+ 'default'
+ ];
+ for (var i = 0; i < arr.length; i++) {
+ if (tokenCodes[arr[i]] !== i) {
+ return false;
+ };
+ }
+ return true;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-6-9.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-6-9.js
new file mode 100644
index 000000000..ae8bbbcd2
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-6-9.js
@@ -0,0 +1,29 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.6/7.6.1/7.6.1-6-9.js
+ * @description Allow reserved words as property names by dot operator assignment, accessed via indexing: if, throw, delete
+ */
+
+
+function testcase() {
+ var tokenCodes = {};
+ tokenCodes.if = 0;
+ tokenCodes.throw = 1;
+ tokenCodes.delete = 2;
+ var arr = [
+ 'if',
+ 'throw',
+ 'delete'
+ ];
+ for (var i = 0; i < arr.length; i++) {
+ if (tokenCodes[arr[i]] !== i) {
+ return false;
+ };
+ }
+ return true;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-7-1.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-7-1.js
new file mode 100644
index 000000000..060d98cb9
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-7-1.js
@@ -0,0 +1,29 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.6/7.6.1/7.6.1-7-1.js
+ * @description Allow reserved words as property names by index assignment, accessed via indexing: null, true, false
+ */
+
+
+function testcase() {
+ var tokenCodes = {};
+ tokenCodes['null'] = 0;
+ tokenCodes['true'] = 1;
+ tokenCodes['false'] = 2;
+ var arr = [
+ 'null',
+ 'true',
+ 'false'
+ ];
+ for (var i = 0; i < arr.length; i++) {
+ if (tokenCodes[arr[i]] !== i) {
+ return false;
+ };
+ }
+ return true;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-7-10.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-7-10.js
new file mode 100644
index 000000000..22a2e32fb
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-7-10.js
@@ -0,0 +1,29 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.6/7.6.1/7.6.1-7-10.js
+ * @description Allow reserved words as property names by index assignment, accessed via indexing: in, try, class
+ */
+
+
+function testcase() {
+ var tokenCodes = {};
+ tokenCodes['in'] = 0;
+ tokenCodes['try'] = 1;
+ tokenCodes['class'] = 2;
+ var arr = [
+ 'in',
+ 'try',
+ 'class'
+ ];
+ for (var i = 0; i < arr.length; i++) {
+ if (tokenCodes[arr[i]] !== i) {
+ return false;
+ };
+ }
+ return true;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-7-11.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-7-11.js
new file mode 100644
index 000000000..0c0176399
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-7-11.js
@@ -0,0 +1,29 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.6/7.6.1/7.6.1-7-11.js
+ * @description Allow reserved words as property names by index assignment, accessed via indexing: enum, extends, super
+ */
+
+
+function testcase() {
+ var tokenCodes = {};
+ tokenCodes['enum'] = 0;
+ tokenCodes['extends'] = 1;
+ tokenCodes['super'] = 2;
+ var arr = [
+ 'enum',
+ 'extends',
+ 'super'
+ ];
+ for (var i = 0; i < arr.length; i++) {
+ if (tokenCodes[arr[i]] !== i) {
+ return false;
+ };
+ }
+ return true;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-7-12.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-7-12.js
new file mode 100644
index 000000000..56eb9d318
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-7-12.js
@@ -0,0 +1,29 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.6/7.6.1/7.6.1-7-12.js
+ * @description Allow reserved words as property names by index assignment, accessed via indexing: const, export, import
+ */
+
+
+function testcase() {
+ var tokenCodes = {};
+ tokenCodes['const'] = 0;
+ tokenCodes['export'] = 1;
+ tokenCodes['import'] = 2;
+ var arr = [
+ 'const',
+ 'export',
+ 'import'
+ ];
+ for (var i = 0; i < arr.length; i++) {
+ if (tokenCodes[arr[i]] !== i) {
+ return false;
+ };
+ }
+ return true;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-7-13.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-7-13.js
new file mode 100644
index 000000000..fd8beb9a2
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-7-13.js
@@ -0,0 +1,29 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.6/7.6.1/7.6.1-7-13.js
+ * @description Allow reserved words as property names by index assignment, accessed via indexing: implements, let, private
+ */
+
+
+function testcase() {
+ var tokenCodes = {};
+ tokenCodes['implements'] = 0;
+ tokenCodes['let'] = 1;
+ tokenCodes['private'] = 2;
+ var arr = [
+ 'implements',
+ 'let',
+ 'private'
+ ];
+ for (var i = 0; i < arr.length; i++) {
+ if (tokenCodes[arr[i]] !== i) {
+ return false;
+ };
+ }
+ return true;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-7-14.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-7-14.js
new file mode 100644
index 000000000..295abc5d1
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-7-14.js
@@ -0,0 +1,29 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.6/7.6.1/7.6.1-7-14.js
+ * @description Allow reserved words as property names by index assignment, accessed via indexing: public, yield, interface
+ */
+
+
+function testcase() {
+ var tokenCodes = {};
+ tokenCodes['public'] = 0;
+ tokenCodes['yield'] = 1;
+ tokenCodes['interface'] = 2;
+ var arr = [
+ 'public',
+ 'yield',
+ 'interface'
+ ];
+ for (var i = 0; i < arr.length; i++) {
+ if (tokenCodes[arr[i]] !== i) {
+ return false;
+ };
+ }
+ return true;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-7-15.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-7-15.js
new file mode 100644
index 000000000..5c95f6db6
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-7-15.js
@@ -0,0 +1,29 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.6/7.6.1/7.6.1-7-15.js
+ * @description Allow reserved words as property names by index assignment, accessed via indexing: package, protected, static
+ */
+
+
+function testcase() {
+ var tokenCodes = {};
+ tokenCodes['package'] = 0;
+ tokenCodes['protected'] = 1;
+ tokenCodes['static'] = 2;
+ var arr = [
+ 'package',
+ 'protected',
+ 'static'
+ ];
+ for (var i = 0; i < arr.length; i++) {
+ if (tokenCodes[arr[i]] !== i) {
+ return false;
+ };
+ }
+ return true;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-7-16.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-7-16.js
new file mode 100644
index 000000000..f8146c5ab
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-7-16.js
@@ -0,0 +1,29 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.6/7.6.1/7.6.1-7-16.js
+ * @description Allow reserved words as property names by index assignment, accessed via indexing: undefined, NaN, Infinity
+ */
+
+
+function testcase() {
+ var tokenCodes = {};
+ tokenCodes['undefined'] = 0;
+ tokenCodes['NaN'] = 1;
+ tokenCodes['Infinity'] = 2;
+ var arr = [
+ 'undefined',
+ 'NaN',
+ 'Infinity'
+ ];
+ for (var i = 0; i < arr.length; i++) {
+ if (tokenCodes[arr[i]] !== i) {
+ return false;
+ };
+ }
+ return true;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-7-2.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-7-2.js
new file mode 100644
index 000000000..62df8ea1d
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-7-2.js
@@ -0,0 +1,29 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.6/7.6.1/7.6.1-7-2.js
+ * @description Allow reserved words as property names by index assignment, accessed via indexing: break, case, do
+ */
+
+
+function testcase() {
+ var tokenCodes = {};
+ tokenCodes['break'] = 0;
+ tokenCodes['case'] = 1;
+ tokenCodes['do'] = 2;
+ var arr = [
+ 'break',
+ 'case',
+ 'do'
+ ];
+ for (var i = 0; i < arr.length; i++) {
+ if (tokenCodes[arr[i]] !== i) {
+ return false;
+ };
+ }
+ return true;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-7-3.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-7-3.js
new file mode 100644
index 000000000..772c108b4
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-7-3.js
@@ -0,0 +1,29 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.6/7.6.1/7.6.1-7-3.js
+ * @description Allow reserved words as property names by index assignment, accessed via indexing: instanceof, typeof, else
+ */
+
+
+function testcase() {
+ var tokenCodes = {};
+ tokenCodes['instanceof'] = 0;
+ tokenCodes['typeof'] = 1;
+ tokenCodes['else'] = 2;
+ var arr = [
+ 'instanceof',
+ 'typeof',
+ 'else'
+ ];
+ for (var i = 0; i < arr.length; i++) {
+ if (tokenCodes[arr[i]] !== i) {
+ return false;
+ };
+ }
+ return true;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-7-4.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-7-4.js
new file mode 100644
index 000000000..99d7868b9
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-7-4.js
@@ -0,0 +1,29 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.6/7.6.1/7.6.1-7-4.js
+ * @description Allow reserved words as property names by index assignment, accessed via indexing: new, var, catch
+ */
+
+
+function testcase() {
+ var tokenCodes = {};
+ tokenCodes['new'] = 0;
+ tokenCodes['var'] = 1;
+ tokenCodes['catch'] = 2;
+ var arr = [
+ 'new',
+ 'var',
+ 'catch'
+ ];
+ for (var i = 0; i < arr.length; i++) {
+ if (tokenCodes[arr[i]] !== i) {
+ return false;
+ };
+ }
+ return true;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-7-5.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-7-5.js
new file mode 100644
index 000000000..3543e4f25
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-7-5.js
@@ -0,0 +1,29 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.6/7.6.1/7.6.1-7-5.js
+ * @description Allow reserved words as property names by index assignment, accessed via indexing: finally, return, void
+ */
+
+
+function testcase() {
+ var tokenCodes = {};
+ tokenCodes['finally'] = 0;
+ tokenCodes['return'] = 1;
+ tokenCodes['void'] = 2;
+ var arr = [
+ 'finally',
+ 'return',
+ 'void'
+ ];
+ for (var i = 0; i < arr.length; i++) {
+ if (tokenCodes[arr[i]] !== i) {
+ return false;
+ };
+ }
+ return true;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-7-6.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-7-6.js
new file mode 100644
index 000000000..652fc97d7
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-7-6.js
@@ -0,0 +1,29 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.6/7.6.1/7.6.1-7-6.js
+ * @description Allow reserved words as property names by index assignment, accessed via indexing: continue, for, switch
+ */
+
+
+function testcase() {
+ var tokenCodes = {};
+ tokenCodes['continue'] = 0;
+ tokenCodes['for'] = 1;
+ tokenCodes['switch'] = 2;
+ var arr = [
+ 'continue',
+ 'for',
+ 'switch'
+ ];
+ for (var i = 0; i < arr.length; i++) {
+ if (tokenCodes[arr[i]] !== i) {
+ return false;
+ };
+ }
+ return true;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-7-7.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-7-7.js
new file mode 100644
index 000000000..1605d5d0b
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-7-7.js
@@ -0,0 +1,29 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.6/7.6.1/7.6.1-7-7.js
+ * @description Allow reserved words as property names by index assignment, accessed via indexing: while, debugger, function
+ */
+
+
+function testcase() {
+ var tokenCodes = {};
+ tokenCodes['while'] = 0;
+ tokenCodes['debugger'] = 1;
+ tokenCodes['function'] = 2;
+ var arr = [
+ 'while',
+ 'debugger',
+ 'function'
+ ];
+ for (var i = 0; i < arr.length; i++) {
+ if (tokenCodes[arr[i]] !== i) {
+ return false;
+ };
+ }
+ return true;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-7-8.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-7-8.js
new file mode 100644
index 000000000..eab4c423a
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-7-8.js
@@ -0,0 +1,29 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.6/7.6.1/7.6.1-7-8.js
+ * @description Allow reserved words as property names by index assignment, accessed via indexing: this, with, default
+ */
+
+
+function testcase() {
+ var tokenCodes = {};
+ tokenCodes['this'] = 0;
+ tokenCodes['with'] = 1;
+ tokenCodes['default'] = 2;
+ var arr = [
+ 'this',
+ 'with',
+ 'default'
+ ];
+ for (var i = 0; i < arr.length; i++) {
+ if (tokenCodes[arr[i]] !== i) {
+ return false;
+ };
+ }
+ return true;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-7-9.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-7-9.js
new file mode 100644
index 000000000..9f018dfa6
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-7-9.js
@@ -0,0 +1,29 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.6/7.6.1/7.6.1-7-9.js
+ * @description Allow reserved words as property names by index assignment, accessed via indexing: if, throw, delete
+ */
+
+
+function testcase() {
+ var tokenCodes = {};
+ tokenCodes['if'] = 0;
+ tokenCodes['throw'] = 1;
+ tokenCodes['delete'] = 2;
+ var arr = [
+ 'if',
+ 'throw',
+ 'delete'
+ ];
+ for (var i = 0; i < arr.length; i++) {
+ if (tokenCodes[arr[i]] !== i) {
+ return false;
+ };
+ }
+ return true;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-8-1.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-8-1.js
new file mode 100644
index 000000000..7d816111d
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-8-1.js
@@ -0,0 +1,46 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.6/7.6.1/7.6.1-8-1.js
+ * @description Allow reserved words as property names by set function within an object, accessed via indexing: null, true, false
+ */
+
+
+function testcase() {
+ var test0 = 0, test1 = 1, test2 = 2;
+ var tokenCodes = {
+ set null(value) {
+ test0 = value;
+ },
+ get null() {
+ return test0;
+ },
+ set true(value) {
+ test1 = value;
+ },
+ get true() {
+ return test1;
+ },
+ set false(value) {
+ test2 = value;
+ },
+ get false(){
+ return test2;
+ }
+ };
+ var arr = [
+ 'null',
+ 'true',
+ 'false'
+ ];
+ for (var i = 0; i < arr.length; i++) {
+ if (tokenCodes[arr[i]] !== i) {
+ return false;
+ };
+ }
+ return true;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-8-10.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-8-10.js
new file mode 100644
index 000000000..3b48de443
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-8-10.js
@@ -0,0 +1,46 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.6/7.6.1/7.6.1-8-10.js
+ * @description Allow reserved words as property names by set function within an object, accessed via indexing: in, try, class
+ */
+
+
+function testcase() {
+ var test0 = 0, test1 = 1, test2 = 2;
+ var tokenCodes = {
+ set in(value){
+ test0 = value;
+ },
+ get in(){
+ return test0;
+ },
+ set try(value){
+ test1 = value;
+ },
+ get try(){
+ return test1
+ },
+ set class(value){
+ test2 = value;
+ },
+ get class(){
+ return test2;
+ }
+ };
+ var arr = [
+ 'in',
+ 'try',
+ 'class'
+ ];
+ for (var i = 0; i < arr.length; i++) {
+ if (tokenCodes[arr[i]] !== i) {
+ return false;
+ };
+ }
+ return true;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-8-11.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-8-11.js
new file mode 100644
index 000000000..ff92952e1
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-8-11.js
@@ -0,0 +1,46 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.6/7.6.1/7.6.1-8-11.js
+ * @description Allow reserved words as property names by set function within an object, accessed via indexing: enum, extends, super
+ */
+
+
+function testcase() {
+ var test0 = 0, test1 = 1, test2 = 2;
+ var tokenCodes = {
+ set enum(value){
+ test0 = value;
+ },
+ get enum(){
+ return test0;
+ },
+ set extends(value){
+ test1 = value;
+ },
+ get extends(){
+ return test1;
+ },
+ set super(value){
+ test2 = value;
+ },
+ get super(){
+ return test2;
+ }
+ };
+ var arr = [
+ 'enum',
+ 'extends',
+ 'super'
+ ];
+ for (var i = 0; i < arr.length; i++) {
+ if (tokenCodes[arr[i]] !== i) {
+ return false;
+ };
+ }
+ return true;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-8-12.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-8-12.js
new file mode 100644
index 000000000..2a4a1d170
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-8-12.js
@@ -0,0 +1,46 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.6/7.6.1/7.6.1-8-12.js
+ * @description Allow reserved words as property names by set function within an object, accessed via indexing: const, export, import
+ */
+
+
+function testcase() {
+ var test0 = 0, test1 = 1, test2 = 2;
+ var tokenCodes = {
+ set const(value){
+ test0 = value;
+ },
+ get const(){
+ return test0;
+ },
+ set export(value){
+ test1 = value;
+ },
+ get export(){
+ return test1
+ },
+ set import(value){
+ test2 = value;
+ },
+ get import(){
+ return test2
+ }
+ };
+ var arr = [
+ 'const',
+ 'export',
+ 'import'
+ ];
+ for (var i = 0; i < arr.length; i++) {
+ if (tokenCodes[arr[i]] !== i) {
+ return false;
+ };
+ }
+ return true;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-8-13.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-8-13.js
new file mode 100644
index 000000000..a2f46d570
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-8-13.js
@@ -0,0 +1,46 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.6/7.6.1/7.6.1-8-13.js
+ * @description Allow reserved words as property names by set function within an object, accessed via indexing: implements, let, private
+ */
+
+
+function testcase() {
+ var test0 = 0, test1 = 1, test2 = 2;
+ var tokenCodes = {
+ set implements(value){
+ test0 = value;
+ },
+ get implements(){
+ return test0;
+ },
+ set let(value){
+ test1 = value;
+ },
+ get let(){
+ return test1
+ },
+ set private(value){
+ test2 = value;
+ },
+ get private(){
+ return test2;
+ }
+ };
+ var arr = [
+ 'implements',
+ 'let',
+ 'private'
+ ];
+ for (var i = 0; i < arr.length; i++) {
+ if (tokenCodes[arr[i]] !== i) {
+ return false;
+ };
+ }
+ return true;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-8-14.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-8-14.js
new file mode 100644
index 000000000..393ae46b0
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-8-14.js
@@ -0,0 +1,46 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.6/7.6.1/7.6.1-8-14.js
+ * @description Allow reserved words as property names by set function within an object, accessed via indexing: public, yield, interface
+ */
+
+
+function testcase() {
+ var test0 = 0, test1 = 1, test2 = 2;
+ var tokenCodes = {
+ set public(value){
+ test0 = value;
+ },
+ get public(){
+ return test0;
+ },
+ set yield(value){
+ test1 = value;
+ },
+ get yield(){
+ return test1;
+ },
+ set interface(value){
+ test2 = value;
+ },
+ get interface(){
+ return test2;
+ }
+ };
+ var arr = [
+ 'public',
+ 'yield',
+ 'interface'
+ ];
+ for (var i = 0; i < arr.length; i++) {
+ if (tokenCodes[arr[i]] !== i) {
+ return false;
+ };
+ }
+ return true;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-8-15.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-8-15.js
new file mode 100644
index 000000000..81d5f4b7f
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-8-15.js
@@ -0,0 +1,46 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.6/7.6.1/7.6.1-8-15.js
+ * @description Allow reserved words as property names by set function within an object, accessed via indexing: package, protected, static
+ */
+
+
+function testcase() {
+ var test0 = 0, test1 = 1, test2 = 2;
+ var tokenCodes = {
+ set package(value){
+ test0 = value;
+ },
+ get package(){
+ return test0;
+ },
+ set protected(value){
+ test1 = value;
+ },
+ get protected(){
+ return test1
+ },
+ set static(value){
+ test2 = value;
+ },
+ get static(){
+ return test2;
+ }
+ };
+ var arr = [
+ 'package',
+ 'protected',
+ 'static'
+ ];
+ for (var i = 0; i < arr.length; i++) {
+ if (tokenCodes[arr[i]] !== i) {
+ return false;
+ };
+ }
+ return true;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-8-16.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-8-16.js
new file mode 100644
index 000000000..91ff6b9c8
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-8-16.js
@@ -0,0 +1,46 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.6/7.6.1/7.6.1-8-16.js
+ * @description Allow reserved words as property names by set function within an object, accessed via indexing: undefined, NaN, Infinity
+ */
+
+
+function testcase() {
+ var test0 = 0, test1 = 1, test2 = 2;
+ var tokenCodes = {
+ set undefined(value){
+ test0 = value;
+ },
+ get undefined(){
+ return test0;
+ },
+ set NaN(value){
+ test1 = value;
+ },
+ get NaN(){
+ return test1;
+ },
+ set Infinity(value){
+ test2 = value;
+ },
+ get Infinity(){
+ return test2;
+ }
+ };
+ var arr = [
+ 'undefined',
+ 'NaN',
+ 'Infinity'
+ ];
+ for (var i = 0; i < arr.length; i++) {
+ if (tokenCodes[arr[i]] !== i) {
+ return false;
+ };
+ }
+ return true;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-8-2.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-8-2.js
new file mode 100644
index 000000000..9af600938
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-8-2.js
@@ -0,0 +1,46 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.6/7.6.1/7.6.1-8-2.js
+ * @description Allow reserved words as property names by set function within an object, accessed via indexing: break, case, do
+ */
+
+
+function testcase() {
+ var test0 = 0, test1 = 1, test2 = 2;
+ var tokenCodes = {
+ set break(value){
+ test0 = value;
+ },
+ get break(){
+ return test0;
+ },
+ set case(value){
+ test1 = value;
+ },
+ get case(){
+ return test1;
+ },
+ set do(value){
+ test2 = value;
+ },
+ get do(){
+ return test2;
+ }
+ };
+ var arr = [
+ 'break',
+ 'case',
+ 'do'
+ ];
+ for (var i = 0; i < arr.length; i++) {
+ if (tokenCodes[arr[i]] !== i) {
+ return false;
+ };
+ }
+ return true;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-8-3.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-8-3.js
new file mode 100644
index 000000000..b26b4d020
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-8-3.js
@@ -0,0 +1,46 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.6/7.6.1/7.6.1-8-3.js
+ * @description Allow reserved words as property names by set function within an object, accessed via indexing: instanceof, typeof, else
+ */
+
+
+function testcase() {
+ var test0 = 0, test1 = 1, test2 = 2;
+ var tokenCodes = {
+ set instanceof(value){
+ test0 = value;
+ },
+ get instanceof(){
+ return test0;
+ },
+ set typeof(value){
+ test1 = value;
+ },
+ get typeof(){
+ return test1;
+ },
+ set else(value){
+ test2 = value;
+ },
+ get else(){
+ return test2;
+ }
+ };
+ var arr = [
+ 'instanceof',
+ 'typeof',
+ 'else'
+ ];
+ for (var i = 0; i < arr.length; i++) {
+ if (tokenCodes[arr[i]] !== i) {
+ return false;
+ };
+ }
+ return true;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-8-4.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-8-4.js
new file mode 100644
index 000000000..b8de25452
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-8-4.js
@@ -0,0 +1,46 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.6/7.6.1/7.6.1-8-4.js
+ * @description Allow reserved words as property names by set function within an object, accessed via indexing: new, var, catch
+ */
+
+
+function testcase() {
+ var test0 = 0, test1 = 1, test2 = 2;
+ var tokenCodes = {
+ set new(value){
+ test0 = value;
+ },
+ get new(){
+ return test0;
+ },
+ set var(value){
+ test1 = value;
+ },
+ get var(){
+ return test1;
+ },
+ set catch(value){
+ test2 = value;
+ },
+ get catch(){
+ return test2;
+ }
+ };
+ var arr = [
+ 'new',
+ 'var',
+ 'catch'
+ ];
+ for (var i = 0; i < arr.length; i++) {
+ if (tokenCodes[arr[i]] !== i) {
+ return false;
+ };
+ }
+ return true;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-8-5.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-8-5.js
new file mode 100644
index 000000000..26d5f3aac
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-8-5.js
@@ -0,0 +1,46 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.6/7.6.1/7.6.1-8-5.js
+ * @description Allow reserved words as property names by set function within an object, accessed via indexing: finally, return, void
+ */
+
+
+function testcase() {
+ var test0 = 0, test1 = 1, test2 = 2;
+ var tokenCodes = {
+ set finally(value){
+ test0 = value;
+ },
+ get finally(){
+ return test0;
+ },
+ set return(value){
+ test1 = value;
+ },
+ get return(){
+ return test1;
+ },
+ set void(value){
+ test2 = value;
+ },
+ get void(){
+ return test2;
+ }
+ };
+ var arr = [
+ 'finally',
+ 'return',
+ 'void'
+ ];
+ for (var i = 0; i < arr.length; i++) {
+ if (tokenCodes[arr[i]] !== i) {
+ return false;
+ };
+ }
+ return true;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-8-6.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-8-6.js
new file mode 100644
index 000000000..4b5f217f4
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-8-6.js
@@ -0,0 +1,46 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.6/7.6.1/7.6.1-8-6.js
+ * @description Allow reserved words as property names by set function within an object, accessed via indexing: continue, for, switch
+ */
+
+
+function testcase() {
+ var test0 = 0, test1 = 1, test2 = 2;
+ var tokenCodes = {
+ set continue(value){
+ test0 = value;
+ },
+ get continue(){
+ return test0;
+ },
+ set for(value){
+ test1 = value;
+ },
+ get for(){
+ return test1;
+ },
+ set switch(value){
+ test2 = value;
+ },
+ get switch(){
+ return test2;
+ }
+ };
+ var arr = [
+ 'continue',
+ 'for',
+ 'switch'
+ ];
+ for (var i = 0; i < arr.length; i++) {
+ if (tokenCodes[arr[i]] !== i) {
+ return false;
+ };
+ }
+ return true;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-8-7.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-8-7.js
new file mode 100644
index 000000000..58555e62e
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-8-7.js
@@ -0,0 +1,46 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.6/7.6.1/7.6.1-8-7.js
+ * @description Allow reserved words as property names by set function within an object, accessed via indexing: while, debugger, function
+ */
+
+
+function testcase() {
+ var test0 = 0, test1 = 1, test2 = 2;
+ var tokenCodes = {
+ set while(value){
+ test0 = value;
+ },
+ get while(){
+ return test0
+ },
+ set debugger(value){
+ test1 = value;
+ },
+ get debugger(){
+ return test1;
+ },
+ set function(value){
+ test2 = value;
+ },
+ get function(){
+ return test2;
+ }
+ };
+ var arr = [
+ 'while' ,
+ 'debugger',
+ 'function'
+ ];
+ for (var i = 0; i < arr.length; i++) {
+ if (tokenCodes[arr[i]] !== i) {
+ return false;
+ };
+ }
+ return true;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-8-8.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-8-8.js
new file mode 100644
index 000000000..c6c39dd22
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-8-8.js
@@ -0,0 +1,46 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.6/7.6.1/7.6.1-8-8.js
+ * @description Allow reserved words as property names by set function within an object, accessed via indexing: this, with, default
+ */
+
+
+function testcase() {
+ var test0 = 0, test1 = 1, test2 = 2;
+ var tokenCodes = {
+ set this(value){
+ test0 = value;
+ },
+ get this(){
+ return test0;
+ },
+ set with(value){
+ test1 = value;
+ },
+ get with(){
+ return test1;
+ },
+ set default(value){
+ test2 = value;
+ },
+ get default(){
+ return test2;
+ }
+ };
+ var arr = [
+ 'this',
+ 'with',
+ 'default'
+ ];
+ for (var i = 0; i < arr.length; i++) {
+ if (tokenCodes[arr[i]] !== i) {
+ return false;
+ };
+ }
+ return true;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-8-9.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-8-9.js
new file mode 100644
index 000000000..f61ec565b
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1-8-9.js
@@ -0,0 +1,46 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.6/7.6.1/7.6.1-8-9.js
+ * @description Allow reserved words as property names by set function within an object, accessed via indexing: if, throw, delete
+ */
+
+
+function testcase() {
+ var test0 = 0, test1 = 1, test2 = 2;
+ var tokenCodes = {
+ set if(value){
+ test0 = value;
+ },
+ get if(){
+ return test0;
+ },
+ set throw(value){
+ test1 = value;
+ },
+ get throw(){
+ return test1
+ },
+ set delete(value){
+ test2 = value;
+ },
+ get delete(){
+ return test2;
+ }
+ };
+ var arr = [
+ 'if',
+ 'throw',
+ 'delete'
+ ];
+ for (var i = 0; i < arr.length; i++) {
+ if (tokenCodes[arr[i]] !== i) {
+ return false;
+ };
+ }
+ return true;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.1/S7.6.1.1_A1.1.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.1/S7.6.1.1_A1.1.js
new file mode 100644
index 000000000..89653b5cd
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.1/S7.6.1.1_A1.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.
+
+/**
+ * The "break" token can not be used as identifier
+ *
+ * @path ch07/7.6/7.6.1/7.6.1.1/S7.6.1.1_A1.1.js
+ * @description Checking if execution of "break=1" fails
+ * @negative
+ */
+
+break = 1;
+
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.1/S7.6.1.1_A1.10.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.1/S7.6.1.1_A1.10.js
new file mode 100644
index 000000000..0511807b6
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.1/S7.6.1.1_A1.10.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.
+
+/**
+ * The "for" token can not be used as identifier
+ *
+ * @path ch07/7.6/7.6.1/7.6.1.1/S7.6.1.1_A1.10.js
+ * @description Checking if execution of "for=1" fails
+ * @negative
+ */
+
+for = 1;
+
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.1/S7.6.1.1_A1.11.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.1/S7.6.1.1_A1.11.js
new file mode 100644
index 000000000..39d4b7efa
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.1/S7.6.1.1_A1.11.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.
+
+/**
+ * The "function" token can not be used as identifier
+ *
+ * @path ch07/7.6/7.6.1/7.6.1.1/S7.6.1.1_A1.11.js
+ * @description Checking if execution of "function=1" fails
+ * @negative
+ */
+
+function = 1;
+
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.1/S7.6.1.1_A1.12.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.1/S7.6.1.1_A1.12.js
new file mode 100644
index 000000000..43433a6b5
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.1/S7.6.1.1_A1.12.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.
+
+/**
+ * The "if" token can not be used as identifier
+ *
+ * @path ch07/7.6/7.6.1/7.6.1.1/S7.6.1.1_A1.12.js
+ * @description Checking if execution of "if=1" fails
+ * @negative
+ */
+
+if = 1;
+
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.1/S7.6.1.1_A1.13.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.1/S7.6.1.1_A1.13.js
new file mode 100644
index 000000000..2e52df961
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.1/S7.6.1.1_A1.13.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.
+
+/**
+ * The "in" token can not be used as identifier
+ *
+ * @path ch07/7.6/7.6.1/7.6.1.1/S7.6.1.1_A1.13.js
+ * @description Checking if execution of "in=1" fails
+ * @negative
+ */
+
+in = 1;
+
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.1/S7.6.1.1_A1.14.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.1/S7.6.1.1_A1.14.js
new file mode 100644
index 000000000..5867436c7
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.1/S7.6.1.1_A1.14.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.
+
+/**
+ * The "instanceof" token can not be used as identifier
+ *
+ * @path ch07/7.6/7.6.1/7.6.1.1/S7.6.1.1_A1.14.js
+ * @description Checking if execution of "instanceof=1" fails
+ * @negative
+ */
+
+instanceof = 1;
+
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.1/S7.6.1.1_A1.15.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.1/S7.6.1.1_A1.15.js
new file mode 100644
index 000000000..56ec3af72
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.1/S7.6.1.1_A1.15.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.
+
+/**
+ * The "new" token can not be used as identifier
+ *
+ * @path ch07/7.6/7.6.1/7.6.1.1/S7.6.1.1_A1.15.js
+ * @description Checking if execution of "new=1" fails
+ * @negative
+ */
+
+new = 1;
+
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.1/S7.6.1.1_A1.16.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.1/S7.6.1.1_A1.16.js
new file mode 100644
index 000000000..7f6a21a7c
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.1/S7.6.1.1_A1.16.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.
+
+/**
+ * The "return" token can not be used as identifier
+ *
+ * @path ch07/7.6/7.6.1/7.6.1.1/S7.6.1.1_A1.16.js
+ * @description Checking if execution of "return=1" fails
+ * @negative
+ */
+
+return = 1;
+
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.1/S7.6.1.1_A1.17.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.1/S7.6.1.1_A1.17.js
new file mode 100644
index 000000000..34024b4d4
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.1/S7.6.1.1_A1.17.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.
+
+/**
+ * The "switch" token can not be used as identifier
+ *
+ * @path ch07/7.6/7.6.1/7.6.1.1/S7.6.1.1_A1.17.js
+ * @description Checking if execution of "switch=1" fails
+ * @negative
+ */
+
+switch = 1;
+
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.1/S7.6.1.1_A1.18.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.1/S7.6.1.1_A1.18.js
new file mode 100644
index 000000000..6068789b6
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.1/S7.6.1.1_A1.18.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.
+
+/**
+ * The "this" token can not be used as identifier
+ *
+ * @path ch07/7.6/7.6.1/7.6.1.1/S7.6.1.1_A1.18.js
+ * @description Checking if execution of "this=1" fails
+ * @negative
+ */
+
+this = 1;
+
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.1/S7.6.1.1_A1.19.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.1/S7.6.1.1_A1.19.js
new file mode 100644
index 000000000..bb5ce8b7d
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.1/S7.6.1.1_A1.19.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.
+
+/**
+ * The "throw" token can not be used as identifier
+ *
+ * @path ch07/7.6/7.6.1/7.6.1.1/S7.6.1.1_A1.19.js
+ * @description Checking if execution of "throw=1" fails
+ * @negative
+ */
+
+throw = 1;
+
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.1/S7.6.1.1_A1.2.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.1/S7.6.1.1_A1.2.js
new file mode 100644
index 000000000..fa0b3a8fd
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.1/S7.6.1.1_A1.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.
+
+/**
+ * The "case" token can not be used as identifier
+ *
+ * @path ch07/7.6/7.6.1/7.6.1.1/S7.6.1.1_A1.2.js
+ * @description Checking if execution of "case=1" fails
+ * @negative
+ */
+
+case = 1;
+
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.1/S7.6.1.1_A1.20.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.1/S7.6.1.1_A1.20.js
new file mode 100644
index 000000000..62ce326f6
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.1/S7.6.1.1_A1.20.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.
+
+/**
+ * The "try" token can not be used as identifier
+ *
+ * @path ch07/7.6/7.6.1/7.6.1.1/S7.6.1.1_A1.20.js
+ * @description Checking if execution of "try=1" fails
+ * @negative
+ */
+
+try = 1;
+
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.1/S7.6.1.1_A1.21.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.1/S7.6.1.1_A1.21.js
new file mode 100644
index 000000000..d2aeca3fc
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.1/S7.6.1.1_A1.21.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.
+
+/**
+ * The "typeof" token can not be used as identifier
+ *
+ * @path ch07/7.6/7.6.1/7.6.1.1/S7.6.1.1_A1.21.js
+ * @description Checking if execution of "typeof=1" fails
+ * @negative
+ */
+
+typeof = 1;
+
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.1/S7.6.1.1_A1.22.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.1/S7.6.1.1_A1.22.js
new file mode 100644
index 000000000..2530ab8e7
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.1/S7.6.1.1_A1.22.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.
+
+/**
+ * The "var" token can not be used as identifier
+ *
+ * @path ch07/7.6/7.6.1/7.6.1.1/S7.6.1.1_A1.22.js
+ * @description Checking if execution of "var=1" fails
+ * @negative
+ */
+
+var = 1;
+
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.1/S7.6.1.1_A1.23.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.1/S7.6.1.1_A1.23.js
new file mode 100644
index 000000000..61f99bce1
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.1/S7.6.1.1_A1.23.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.
+
+/**
+ * The "void" token can not be used as identifier
+ *
+ * @path ch07/7.6/7.6.1/7.6.1.1/S7.6.1.1_A1.23.js
+ * @description Checking if execution of "void=1" fails
+ * @negative
+ */
+
+void = 1;
+
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.1/S7.6.1.1_A1.24.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.1/S7.6.1.1_A1.24.js
new file mode 100644
index 000000000..8c6c2816d
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.1/S7.6.1.1_A1.24.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.
+
+/**
+ * The "while" token can not be used as identifier
+ *
+ * @path ch07/7.6/7.6.1/7.6.1.1/S7.6.1.1_A1.24.js
+ * @description Checking if execution of "while=1" fails
+ * @negative
+ */
+
+while = 1;
+
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.1/S7.6.1.1_A1.25.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.1/S7.6.1.1_A1.25.js
new file mode 100644
index 000000000..15a7745b1
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.1/S7.6.1.1_A1.25.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.
+
+/**
+ * The "with" token can not be used as identifier
+ *
+ * @path ch07/7.6/7.6.1/7.6.1.1/S7.6.1.1_A1.25.js
+ * @description Checking if execution of "with=1" fails
+ * @negative
+ */
+
+with = 1;
+
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.1/S7.6.1.1_A1.3.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.1/S7.6.1.1_A1.3.js
new file mode 100644
index 000000000..f69193845
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.1/S7.6.1.1_A1.3.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.
+
+/**
+ * The "catch" token can not be used as identifier
+ *
+ * @path ch07/7.6/7.6.1/7.6.1.1/S7.6.1.1_A1.3.js
+ * @description Checking if execution of "catch=1" fails
+ * @negative
+ */
+
+catch = 1;
+
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.1/S7.6.1.1_A1.4.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.1/S7.6.1.1_A1.4.js
new file mode 100644
index 000000000..86c02078d
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.1/S7.6.1.1_A1.4.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.
+
+/**
+ * The "continue" token can not be used as identifier
+ *
+ * @path ch07/7.6/7.6.1/7.6.1.1/S7.6.1.1_A1.4.js
+ * @description Checking if execution of "contunue=1" fails
+ * @negative
+ */
+
+continue = 1;
+
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.1/S7.6.1.1_A1.5.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.1/S7.6.1.1_A1.5.js
new file mode 100644
index 000000000..52ad11b46
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.1/S7.6.1.1_A1.5.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.
+
+/**
+ * The "default" token can not be used as identifier
+ *
+ * @path ch07/7.6/7.6.1/7.6.1.1/S7.6.1.1_A1.5.js
+ * @description Checking if execution of "default=1" fails
+ * @negative
+ */
+
+default = 1;
+
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.1/S7.6.1.1_A1.6.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.1/S7.6.1.1_A1.6.js
new file mode 100644
index 000000000..b6c24d8bf
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.1/S7.6.1.1_A1.6.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.
+
+/**
+ * The "delete" token can not be used as identifier
+ *
+ * @path ch07/7.6/7.6.1/7.6.1.1/S7.6.1.1_A1.6.js
+ * @description Checking if execution of "delete=1" fails
+ * @negative
+ */
+
+delete = 1;
+
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.1/S7.6.1.1_A1.7.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.1/S7.6.1.1_A1.7.js
new file mode 100644
index 000000000..bce1d54ec
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.1/S7.6.1.1_A1.7.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.
+
+/**
+ * The "do" token can not be used as identifier
+ *
+ * @path ch07/7.6/7.6.1/7.6.1.1/S7.6.1.1_A1.7.js
+ * @description Checking if execution of "do=1" fails
+ * @negative
+ */
+
+do = 1;
+
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.1/S7.6.1.1_A1.8.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.1/S7.6.1.1_A1.8.js
new file mode 100644
index 000000000..b51909070
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.1/S7.6.1.1_A1.8.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.
+
+/**
+ * The "else" token can not be used as identifier
+ *
+ * @path ch07/7.6/7.6.1/7.6.1.1/S7.6.1.1_A1.8.js
+ * @description Checking if execution of "else=1" fails
+ * @negative
+ */
+
+else = 1;
+
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.1/S7.6.1.1_A1.9.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.1/S7.6.1.1_A1.9.js
new file mode 100644
index 000000000..cea582656
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.1/S7.6.1.1_A1.9.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.
+
+/**
+ * The "finally" token can not be used as identifier
+ *
+ * @path ch07/7.6/7.6.1/7.6.1.1/S7.6.1.1_A1.9.js
+ * @description Checking if execution of "finally=1" fails
+ * @negative
+ */
+
+finally = 1;
+
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.1/browser.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.1/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.1/browser.js
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.1/shell.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.1/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.1/shell.js
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2-1gs.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2-1gs.js
new file mode 100644
index 000000000..b76c692e7
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2-1gs.js
@@ -0,0 +1,16 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+
+/**
+ * @path ch07/7.6/7.6.1/7.6.1.2-1gs.js
+ * @description Strict Mode - SyntaxError is thrown when FutureReservedWord 'implements' occurs in strict mode code
+ * @onlyStrict
+ * @negative ^((?!NotEarlyError).)*$
+ */
+
+"use strict";
+throw NotEarlyError;
+var implements = 1;
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/7.6.1-17-s.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/7.6.1-17-s.js
new file mode 100644
index 000000000..99014065a
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/7.6.1-17-s.js
@@ -0,0 +1,23 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.6/7.6.1/7.6.1.2/7.6.1-17-s.js
+ * @description 7.6 - SyntaxError expected: reserved words used as Identifier Names in UTF8: implements (implements)
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+
+ try {
+ eval("var \u0069mplements = 123;");
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/7.6.1-18-s.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/7.6.1-18-s.js
new file mode 100644
index 000000000..3327995db
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/7.6.1-18-s.js
@@ -0,0 +1,23 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.6/7.6.1/7.6.1.2/7.6.1-18-s.js
+ * @description 7.6 - SyntaxError expected: reserved words used as Identifier Names in UTF8: l\u0065t (let)
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+
+ try {
+ eval("var l\u0065t = 123;");
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError;
+ }
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/7.6.1-19-s.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/7.6.1-19-s.js
new file mode 100644
index 000000000..14a5183d8
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/7.6.1-19-s.js
@@ -0,0 +1,22 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.6/7.6.1/7.6.1.2/7.6.1-19-s.js
+ * @description 7.6 - SyntaxError expected: reserved words used as Identifier Names in UTF8: privat\u0065 (private)
+ * @onlyStrict
+ */
+
+function testcase() {
+ "use strict";
+
+ try {
+ eval("var privat\u0065 = 123;");
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError;
+ }
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/7.6.1-20-s.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/7.6.1-20-s.js
new file mode 100644
index 000000000..846805b69
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/7.6.1-20-s.js
@@ -0,0 +1,22 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.6/7.6.1/7.6.1.2/7.6.1-20-s.js
+ * @description 7.6 - SyntaxError expected: reserved words used as Identifier Names in UTF8: \u0070\u0075\u0062\u006c\u0069\u0063 (public)
+ * @onlyStrict
+ */
+
+function testcase() {
+ "use strict";
+
+ try {
+ eval("var \u0070\u0075\u0062\u006c\u0069\u0063 = 123;");
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError;
+ }
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/7.6.1-21-s.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/7.6.1-21-s.js
new file mode 100644
index 000000000..f0536eac3
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/7.6.1-21-s.js
@@ -0,0 +1,25 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.6/7.6.1/7.6.1.2/7.6.1-21-s.js
+ * @description 7.6 - SyntaxError expected: reserved words used as Identifier Names in UTF8: \u0079ield (yield)
+ * @onlyStrict
+ */
+
+
+
+
+function testcase() {
+ "use strict";
+
+ try {
+ eval("var \u0079ield = 123;");
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError;
+ }
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/7.6.1-22-s.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/7.6.1-22-s.js
new file mode 100644
index 000000000..5eb6d1ec6
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/7.6.1-22-s.js
@@ -0,0 +1,25 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.6/7.6.1/7.6.1.2/7.6.1-22-s.js
+ * @description 7.6 - SyntaxError expected: reserved words used as Identifier Names in UTF8: inte\u0072face (interface)
+ * @onlyStrict
+ */
+
+
+
+
+function testcase() {
+ "use strict";
+
+ try {
+ eval("var inte\u0072face = 123;");
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError;
+ }
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/7.6.1-23-s.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/7.6.1-23-s.js
new file mode 100644
index 000000000..db11bad05
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/7.6.1-23-s.js
@@ -0,0 +1,25 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.6/7.6.1/7.6.1.2/7.6.1-23-s.js
+ * @description 7.6 - SyntaxError expected: reserved words used as Identifier Names in UTF8: packag\u0065 (package)
+ * @onlyStrict
+ */
+
+
+
+
+function testcase() {
+ "use strict";
+
+ try {
+ eval("var packag\u0065 = 123;");
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError;
+ }
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/7.6.1-24-s.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/7.6.1-24-s.js
new file mode 100644
index 000000000..f2c7e9f90
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/7.6.1-24-s.js
@@ -0,0 +1,25 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.6/7.6.1/7.6.1.2/7.6.1-24-s.js
+ * @description 7.6 - SyntaxError expected: reserved words used as Identifier Names in UTF8: \u0070\u0072\u006f\u0074\u0065\u0063\u0074\u0065\u0064 (protected)
+ * @onlyStrict
+ */
+
+
+
+
+function testcase() {
+ "use strict";
+
+ try {
+ eval("var \u0070\u0072\u006f\u0074\u0065\u0063\u0074\u0065\u0064 = 123;");
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError;
+ }
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/7.6.1-25-s.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/7.6.1-25-s.js
new file mode 100644
index 000000000..b6ca63f82
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/7.6.1-25-s.js
@@ -0,0 +1,25 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.6/7.6.1/7.6.1.2/7.6.1-25-s.js
+ * @description 7.6 - SyntaxError expected: reserved words used as Identifier Names in UTF8: \u0073\u0074\u0061\u0074\u0069\u0063 (static)
+ * @onlyStrict
+ */
+
+
+
+
+function testcase() {
+ "use strict";
+
+ try {
+ eval("var \u0073\u0074\u0061\u0074\u0069\u0063 = 123;");
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError;
+ }
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/7.6.1.2-1-s.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/7.6.1.2-1-s.js
new file mode 100644
index 000000000..3c34bc7cb
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/7.6.1.2-1-s.js
@@ -0,0 +1,23 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.6/7.6.1/7.6.1.2/7.6.1.2-1-s.js
+ * @description Strict Mode - SyntaxError is thrown when FutureReservedWord 'implements' occurs in strict mode code
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+
+ try {
+ eval("var implements = 1;");
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/7.6.1.2-10-s.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/7.6.1.2-10-s.js
new file mode 100644
index 000000000..8c5004d91
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/7.6.1.2-10-s.js
@@ -0,0 +1,18 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.6/7.6.1/7.6.1.2/7.6.1.2-10-s.js
+ * @description Strict Mode - SyntaxError isn't thrown when 'IMPLEMENTS' occurs in strict mode code
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+ var IMPLEMENTS = 1;
+ return IMPLEMENTS === 1;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/7.6.1.2-11-s.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/7.6.1.2-11-s.js
new file mode 100644
index 000000000..34a017854
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/7.6.1.2-11-s.js
@@ -0,0 +1,18 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.6/7.6.1/7.6.1.2/7.6.1.2-11-s.js
+ * @description Strict Mode - SyntaxError isn't thrown when 'Implements' occurs in strict mode code
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+ var Implements = 1;
+ return Implements === 1;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/7.6.1.2-12-s.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/7.6.1.2-12-s.js
new file mode 100644
index 000000000..14796c164
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/7.6.1.2-12-s.js
@@ -0,0 +1,18 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.6/7.6.1/7.6.1.2/7.6.1.2-12-s.js
+ * @description Strict Mode - SyntaxError isn't thrown when 'implement' occurs in strict mode code
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+ var implement = 1;
+ return implement === 1;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/7.6.1.2-13-s.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/7.6.1.2-13-s.js
new file mode 100644
index 000000000..4513e1222
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/7.6.1.2-13-s.js
@@ -0,0 +1,18 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.6/7.6.1/7.6.1.2/7.6.1.2-13-s.js
+ * @description Strict Mode - SyntaxError isn't thrown when 'implementss' occurs in strict mode code
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+ var implementss = 1;
+ return implementss === 1;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/7.6.1.2-14-s.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/7.6.1.2-14-s.js
new file mode 100644
index 000000000..4863705c0
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/7.6.1.2-14-s.js
@@ -0,0 +1,18 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.6/7.6.1/7.6.1.2/7.6.1.2-14-s.js
+ * @description Strict Mode - SyntaxError isn't thrown when 'implements0' occurs in strict mode code
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+ var implements0 = 1;
+ return implements0 === 1;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/7.6.1.2-16-s.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/7.6.1.2-16-s.js
new file mode 100644
index 000000000..16f6bc191
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/7.6.1.2-16-s.js
@@ -0,0 +1,18 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.6/7.6.1/7.6.1.2/7.6.1.2-16-s.js
+ * @description Strict Mode - SyntaxError isn't thrown when '_implements' occurs in strict mode code
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+ var _implements = 1;
+ return _implements === 1;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/7.6.1.2-2-s.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/7.6.1.2-2-s.js
new file mode 100644
index 000000000..9f922e41d
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/7.6.1.2-2-s.js
@@ -0,0 +1,25 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.6/7.6.1/7.6.1.2/7.6.1.2-2-s.js
+ * @description Strict Mode - SyntaxError is thrown when FutureReservedWord 'let' occurs in strict mode code
+ * @onlyStrict
+ */
+
+
+
+
+function testcase() {
+ "use strict";
+
+ try {
+ eval("var let = 1;");
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError;
+ }
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/7.6.1.2-3-s.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/7.6.1.2-3-s.js
new file mode 100644
index 000000000..77530dd7b
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/7.6.1.2-3-s.js
@@ -0,0 +1,25 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.6/7.6.1/7.6.1.2/7.6.1.2-3-s.js
+ * @description Strict Mode - SyntaxError is thrown when FutureReservedWord 'private' occurs in strict mode code
+ * @onlyStrict
+ */
+
+
+
+
+function testcase() {
+ "use strict";
+
+ try {
+ eval("var private = 1;");
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError;
+ }
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/7.6.1.2-4-s.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/7.6.1.2-4-s.js
new file mode 100644
index 000000000..6f021380b
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/7.6.1.2-4-s.js
@@ -0,0 +1,25 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.6/7.6.1/7.6.1.2/7.6.1.2-4-s.js
+ * @description Strict Mode - SyntaxError is thrown when FutureReservedWord 'public' occurs in strict mode code
+ * @onlyStrict
+ */
+
+
+
+
+function testcase() {
+ "use strict";
+
+ try {
+ eval("var public = 1;");
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError;
+ }
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/7.6.1.2-5-s.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/7.6.1.2-5-s.js
new file mode 100644
index 000000000..f6a798385
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/7.6.1.2-5-s.js
@@ -0,0 +1,25 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.6/7.6.1/7.6.1.2/7.6.1.2-5-s.js
+ * @description Strict Mode - SyntaxError is thrown when FutureReservedWord 'yield' occurs in strict mode code
+ * @onlyStrict
+ */
+
+
+
+
+function testcase() {
+ "use strict";
+
+ try {
+ eval("var yield = 1;")
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError;
+ }
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/7.6.1.2-6-s.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/7.6.1.2-6-s.js
new file mode 100644
index 000000000..3e1e35ccd
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/7.6.1.2-6-s.js
@@ -0,0 +1,25 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.6/7.6.1/7.6.1.2/7.6.1.2-6-s.js
+ * @description Strict Mode - SyntaxError is thrown when FutureReservedWord 'interface' occurs in strict mode code
+ * @onlyStrict
+ */
+
+
+
+
+function testcase() {
+ "use strict";
+
+ try {
+ eval("var interface = 1;")
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError;
+ }
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/7.6.1.2-7-s.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/7.6.1.2-7-s.js
new file mode 100644
index 000000000..6d2487376
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/7.6.1.2-7-s.js
@@ -0,0 +1,25 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.6/7.6.1/7.6.1.2/7.6.1.2-7-s.js
+ * @description Strict Mode - SyntaxError is thrown when FutureReservedWord 'package' occurs in strict mode code
+ * @onlyStrict
+ */
+
+
+
+
+function testcase() {
+ "use strict";
+
+ try {
+ eval("var package = 1;");
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError;
+ }
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/7.6.1.2-8-s.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/7.6.1.2-8-s.js
new file mode 100644
index 000000000..8e2f8e8fe
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/7.6.1.2-8-s.js
@@ -0,0 +1,25 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.6/7.6.1/7.6.1.2/7.6.1.2-8-s.js
+ * @description Strict Mode - SyntaxError is thrown when FutureReservedWord 'protected' occurs in strict mode code
+ * @onlyStrict
+ */
+
+
+
+
+function testcase() {
+ "use strict";
+
+ try {
+ eval("var protected = 1;");
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError;
+ }
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/7.6.1.2-9-s.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/7.6.1.2-9-s.js
new file mode 100644
index 000000000..6e5ebfd21
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/7.6.1.2-9-s.js
@@ -0,0 +1,25 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.6/7.6.1/7.6.1.2/7.6.1.2-9-s.js
+ * @description Strict Mode - SyntaxError is thrown when FutureReservedWord 'static' occurs in strict mode code
+ * @onlyStrict
+ */
+
+
+
+
+function testcase() {
+ "use strict";
+
+ try {
+ eval("var static = 1;");
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError;
+ }
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/S7.6.1.2_A1.1.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/S7.6.1.2_A1.1.js
new file mode 100644
index 000000000..4b7573d26
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/S7.6.1.2_A1.1.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.
+
+/**
+ * The "abstract" token can be used as identifier
+ *
+ * @path ch07/7.6/7.6.1/7.6.1.2/S7.6.1.2_A1.1.js
+ * @description Checking if execution of "abstract=1" succeeds
+ */
+
+var abstract = 1;
+
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/S7.6.1.2_A1.10.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/S7.6.1.2_A1.10.js
new file mode 100644
index 000000000..d255891bb
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/S7.6.1.2_A1.10.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.
+
+/**
+ * The "export" token can not be used as identifier
+ *
+ * @path ch07/7.6/7.6.1/7.6.1.2/S7.6.1.2_A1.10.js
+ * @description Checking if execution of "export=1" fails
+ * @negative
+ */
+
+var export = 1;
+
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/S7.6.1.2_A1.11.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/S7.6.1.2_A1.11.js
new file mode 100644
index 000000000..f95dbf77e
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/S7.6.1.2_A1.11.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.
+
+/**
+ * The "extends" token can not be used as identifier
+ *
+ * @path ch07/7.6/7.6.1/7.6.1.2/S7.6.1.2_A1.11.js
+ * @description Checking if execution of "extends=1" fails
+ * @negative
+ */
+
+var extends = 1;
+
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/S7.6.1.2_A1.12.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/S7.6.1.2_A1.12.js
new file mode 100644
index 000000000..41d1a2aa3
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/S7.6.1.2_A1.12.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.
+
+/**
+ * The "final" token can be used as identifier
+ *
+ * @path ch07/7.6/7.6.1/7.6.1.2/S7.6.1.2_A1.12.js
+ * @description Checking if execution of "final=1" succeeds
+ */
+
+var final = 1;
+
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/S7.6.1.2_A1.13.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/S7.6.1.2_A1.13.js
new file mode 100644
index 000000000..fcea14220
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/S7.6.1.2_A1.13.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.
+
+/**
+ * The "float" token can be used as identifier
+ *
+ * @path ch07/7.6/7.6.1/7.6.1.2/S7.6.1.2_A1.13.js
+ * @description Checking if execution of "float=1" succeeds
+ */
+
+var float = 1;
+
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/S7.6.1.2_A1.14.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/S7.6.1.2_A1.14.js
new file mode 100644
index 000000000..a8c81aef6
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/S7.6.1.2_A1.14.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.
+
+/**
+ * The "goto" token can be used as identifier
+ *
+ * @path ch07/7.6/7.6.1/7.6.1.2/S7.6.1.2_A1.14.js
+ * @description Checking if execution of "goto=1" succeeds
+ */
+
+var goto = 1;
+
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/S7.6.1.2_A1.15.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/S7.6.1.2_A1.15.js
new file mode 100644
index 000000000..b1d3adb8a
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/S7.6.1.2_A1.15.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.
+
+/**
+ * The "implements" token can not be used as identifier in strict code
+ *
+ * @path ch07/7.6/7.6.1/7.6.1.2/S7.6.1.2_A1.15.js
+ * @description Checking if execution of "implements=1" fails in strict code
+ * @onlyStrict
+ * @negative
+ */
+
+"use strict";
+
+var implements = 1;
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/S7.6.1.2_A1.15ns.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/S7.6.1.2_A1.15ns.js
new file mode 100644
index 000000000..845f7914a
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/S7.6.1.2_A1.15ns.js
@@ -0,0 +1,13 @@
+// Copyright 2011 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * The "implements" token can be used as identifier in non-strict code
+ *
+ * @path ch07/7.6/7.6.1/7.6.1.2/S7.6.1.2_A1.15ns.js
+ * @description Checking if execution of "implements=1" succeeds in non-strict code
+ * @noStrict
+ */
+
+var implements = 1;
+
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/S7.6.1.2_A1.16.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/S7.6.1.2_A1.16.js
new file mode 100644
index 000000000..0e28098f0
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/S7.6.1.2_A1.16.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.
+
+/**
+ * The "import" token can not be used as identifier
+ *
+ * @path ch07/7.6/7.6.1/7.6.1.2/S7.6.1.2_A1.16.js
+ * @description Checking if execution of "import=1" fails
+ * @negative
+ */
+
+var import = 1;
+
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/S7.6.1.2_A1.17.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/S7.6.1.2_A1.17.js
new file mode 100644
index 000000000..97bd27342
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/S7.6.1.2_A1.17.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.
+
+/**
+ * The "int" token can be used as identifier
+ *
+ * @path ch07/7.6/7.6.1/7.6.1.2/S7.6.1.2_A1.17.js
+ * @description Checking if execution of "int=1" succeeds
+ */
+
+var int = 1;
+
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/S7.6.1.2_A1.18.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/S7.6.1.2_A1.18.js
new file mode 100644
index 000000000..e8dd1ff42
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/S7.6.1.2_A1.18.js
@@ -0,0 +1,16 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * The "interface" token can not be used as identifier in strict code
+ *
+ * @path ch07/7.6/7.6.1/7.6.1.2/S7.6.1.2_A1.18.js
+ * @description Checking if execution of "interface = 1" fails in
+ * strict code
+ * @onlyStrict
+ * @negative
+ */
+
+"use strict";
+var interface = 1;
+
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/S7.6.1.2_A1.18ns.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/S7.6.1.2_A1.18ns.js
new file mode 100644
index 000000000..878a7cd42
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/S7.6.1.2_A1.18ns.js
@@ -0,0 +1,15 @@
+// Copyright 2011 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * The "interface" token can be used as identifier in
+ * non-strict code
+ *
+ * @path ch07/7.6/7.6.1/7.6.1.2/S7.6.1.2_A1.18ns.js
+ * @description Checking if execution of "interface = 1" succeeds in
+ * non-strict code
+ * @noStrict
+ */
+
+var interface = 1;
+
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/S7.6.1.2_A1.19.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/S7.6.1.2_A1.19.js
new file mode 100644
index 000000000..d4905b5aa
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/S7.6.1.2_A1.19.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.
+
+/**
+ * The "long" token can be used as identifier
+ *
+ * @path ch07/7.6/7.6.1/7.6.1.2/S7.6.1.2_A1.19.js
+ * @description Checking if execution of "long=1" succeeds
+ */
+
+var long = 1;
+
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/S7.6.1.2_A1.2.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/S7.6.1.2_A1.2.js
new file mode 100644
index 000000000..16f86cd48
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/S7.6.1.2_A1.2.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.
+
+/**
+ * The "boolean" token can be used as identifier
+ *
+ * @path ch07/7.6/7.6.1/7.6.1.2/S7.6.1.2_A1.2.js
+ * @description Checking if execution of "boolean=1" succeeds
+ */
+
+var boolean = 1;
+
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/S7.6.1.2_A1.20.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/S7.6.1.2_A1.20.js
new file mode 100644
index 000000000..1646a5a8f
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/S7.6.1.2_A1.20.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.
+
+/**
+ * The "native" token can be used as identifier
+ *
+ * @path ch07/7.6/7.6.1/7.6.1.2/S7.6.1.2_A1.20.js
+ * @description Checking if execution of "native=1" succeeds
+ */
+
+var native = 1;
+
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/S7.6.1.2_A1.21.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/S7.6.1.2_A1.21.js
new file mode 100644
index 000000000..ef2d1dacc
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/S7.6.1.2_A1.21.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.
+
+/**
+ * The "package" token can not be used as identifier in strict code
+ *
+ * @path ch07/7.6/7.6.1/7.6.1.2/S7.6.1.2_A1.21.js
+ * @description Checking if execution of "package=1" fails in strict code
+ * @onlyStrict
+ * @negative
+ */
+
+"use strict";
+var package = 1;
+
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/S7.6.1.2_A1.21ns.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/S7.6.1.2_A1.21ns.js
new file mode 100644
index 000000000..3a33532fe
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/S7.6.1.2_A1.21ns.js
@@ -0,0 +1,13 @@
+// Copyright 2011 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * The "package" token can be used as identifier in non-strict code
+ *
+ * @path ch07/7.6/7.6.1/7.6.1.2/S7.6.1.2_A1.21ns.js
+ * @description Checking if execution of "package=1" succeeds in non-strict code
+ * @noStrict
+ */
+
+var package = 1;
+
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/S7.6.1.2_A1.22.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/S7.6.1.2_A1.22.js
new file mode 100644
index 000000000..45fc83f29
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/S7.6.1.2_A1.22.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.
+
+/**
+ * The "private" token can not be used as identifier in strict code
+ *
+ * @path ch07/7.6/7.6.1/7.6.1.2/S7.6.1.2_A1.22.js
+ * @description Checking if execution of "private=1" fails in strict code
+ * @onlyStrict
+ * @negative
+ */
+
+"use strict";
+var private = 1;
+
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/S7.6.1.2_A1.22ns.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/S7.6.1.2_A1.22ns.js
new file mode 100644
index 000000000..0562ca843
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/S7.6.1.2_A1.22ns.js
@@ -0,0 +1,13 @@
+// Copyright 2011 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * The "private" token can be used as identifier in non-strict code
+ *
+ * @path ch07/7.6/7.6.1/7.6.1.2/S7.6.1.2_A1.22ns.js
+ * @description Checking if execution of "private=1" succeeds in non-strict code
+ * @noStrict
+ */
+
+var private = 1;
+
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/S7.6.1.2_A1.23.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/S7.6.1.2_A1.23.js
new file mode 100644
index 000000000..c04b13172
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/S7.6.1.2_A1.23.js
@@ -0,0 +1,16 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * The "protected" token can not be used as identifier in strict code
+ *
+ * @path ch07/7.6/7.6.1/7.6.1.2/S7.6.1.2_A1.23.js
+ * @description Checking if execution of "protected=1" fails in
+ * strict code
+ * @onlyStrict
+ * @negative
+ */
+
+"use strict";
+var protected = 1;
+
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/S7.6.1.2_A1.23ns.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/S7.6.1.2_A1.23ns.js
new file mode 100644
index 000000000..499512d5b
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/S7.6.1.2_A1.23ns.js
@@ -0,0 +1,13 @@
+// Copyright 2011 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * The "protected" token can be used as identifier in non-strict code
+ *
+ * @path ch07/7.6/7.6.1/7.6.1.2/S7.6.1.2_A1.23ns.js
+ * @description Checking if execution of "protected=1" succeeds in non-strict code
+ * @noStrict
+ */
+
+var protected = 1;
+
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/S7.6.1.2_A1.24.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/S7.6.1.2_A1.24.js
new file mode 100644
index 000000000..55f99e8fd
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/S7.6.1.2_A1.24.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.
+
+/**
+ * The "public" token can not be used as identifier in strict code
+ *
+ * @path ch07/7.6/7.6.1/7.6.1.2/S7.6.1.2_A1.24.js
+ * @description Checking if execution of "public=1" fails in strict code
+ * @onlyStrict
+ * @negative
+ */
+
+"use strict";
+var public = 1;
+
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/S7.6.1.2_A1.24ns.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/S7.6.1.2_A1.24ns.js
new file mode 100644
index 000000000..7090147cd
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/S7.6.1.2_A1.24ns.js
@@ -0,0 +1,13 @@
+// Copyright 2011 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * The "public" token can be used as identifier in non-strict code
+ *
+ * @path ch07/7.6/7.6.1/7.6.1.2/S7.6.1.2_A1.24ns.js
+ * @description Checking if execution of "public=1" succeeds in non-strict code
+ * @noStrict
+ */
+
+var public = 1;
+
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/S7.6.1.2_A1.25.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/S7.6.1.2_A1.25.js
new file mode 100644
index 000000000..0c11e3cf3
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/S7.6.1.2_A1.25.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.
+
+/**
+ * The "short" token can be used as identifier
+ *
+ * @path ch07/7.6/7.6.1/7.6.1.2/S7.6.1.2_A1.25.js
+ * @description Checking if execution of "short=1" succeeds
+ */
+
+var short = 1;
+
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/S7.6.1.2_A1.26.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/S7.6.1.2_A1.26.js
new file mode 100644
index 000000000..a1f336935
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/S7.6.1.2_A1.26.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.
+
+/**
+ * The "static" token can not be used as identifier in strict code
+ *
+ * @path ch07/7.6/7.6.1/7.6.1.2/S7.6.1.2_A1.26.js
+ * @description Checking if execution of "static=1" fails in strict code
+ * @onlyStrict
+ * @negative
+ */
+
+"use strict";
+var static = 1;
+
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/S7.6.1.2_A1.26ns.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/S7.6.1.2_A1.26ns.js
new file mode 100644
index 000000000..2e7e1f7b7
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/S7.6.1.2_A1.26ns.js
@@ -0,0 +1,13 @@
+// Copyright 2011 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * The "static" token can be used as identifier in non-strict code
+ *
+ * @path ch07/7.6/7.6.1/7.6.1.2/S7.6.1.2_A1.26ns.js
+ * @description Checking if execution of "static=1" succeeds in non-strict code
+ * @noStrict
+ */
+
+var static = 1;
+
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/S7.6.1.2_A1.27.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/S7.6.1.2_A1.27.js
new file mode 100644
index 000000000..c78862fb9
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/S7.6.1.2_A1.27.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.
+
+/**
+ * The "super" token can not be used as identifier
+ *
+ * @path ch07/7.6/7.6.1/7.6.1.2/S7.6.1.2_A1.27.js
+ * @description Checking if execution of "super=1" fails
+ * @negative
+ */
+
+var super = 1;
+
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/S7.6.1.2_A1.28.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/S7.6.1.2_A1.28.js
new file mode 100644
index 000000000..515372a7a
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/S7.6.1.2_A1.28.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.
+
+/**
+ * The "synchronized" token can be used as identifier
+ *
+ * @path ch07/7.6/7.6.1/7.6.1.2/S7.6.1.2_A1.28.js
+ * @description Checking if execution of "synchronized=1" succeeds
+ */
+
+var synchronized = 1;
+
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/S7.6.1.2_A1.29.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/S7.6.1.2_A1.29.js
new file mode 100644
index 000000000..54dec6155
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/S7.6.1.2_A1.29.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.
+
+/**
+ * The "throws" token can be used as identifier
+ *
+ * @path ch07/7.6/7.6.1/7.6.1.2/S7.6.1.2_A1.29.js
+ * @description Checking if execution of "throws=1" succeeds
+ */
+
+var throws = 1;
+
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/S7.6.1.2_A1.3.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/S7.6.1.2_A1.3.js
new file mode 100644
index 000000000..50c5d7885
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/S7.6.1.2_A1.3.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.
+
+/**
+ * The "byte" token can be used as identifier
+ *
+ * @path ch07/7.6/7.6.1/7.6.1.2/S7.6.1.2_A1.3.js
+ * @description Checking if execution of "byte=1" succeeds
+ */
+
+var byte = 1;
+
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/S7.6.1.2_A1.30.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/S7.6.1.2_A1.30.js
new file mode 100644
index 000000000..37128f047
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/S7.6.1.2_A1.30.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.
+
+/**
+ * The "transient" token can be used as identifier
+ *
+ * @path ch07/7.6/7.6.1/7.6.1.2/S7.6.1.2_A1.30.js
+ * @description Checking if execution of "transient=1" succeeds
+ */
+
+var transient = 1;
+
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/S7.6.1.2_A1.31.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/S7.6.1.2_A1.31.js
new file mode 100644
index 000000000..57fb357d8
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/S7.6.1.2_A1.31.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.
+
+/**
+ * The "volatile" token can be used as identifier
+ *
+ * @path ch07/7.6/7.6.1/7.6.1.2/S7.6.1.2_A1.31.js
+ * @description Checking if execution of "volatile=1" succeeds
+ */
+
+var volatile = 1;
+
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/S7.6.1.2_A1.4.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/S7.6.1.2_A1.4.js
new file mode 100644
index 000000000..1af1677e4
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/S7.6.1.2_A1.4.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.
+
+/**
+ * The "char" token can be used as identifier
+ *
+ * @path ch07/7.6/7.6.1/7.6.1.2/S7.6.1.2_A1.4.js
+ * @description Checking if execution of "char=1" succeeds
+ */
+
+var char = 1;
+
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/S7.6.1.2_A1.5.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/S7.6.1.2_A1.5.js
new file mode 100644
index 000000000..b84b44248
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/S7.6.1.2_A1.5.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.
+
+/**
+ * The "class" token can not be used as identifier
+ *
+ * @path ch07/7.6/7.6.1/7.6.1.2/S7.6.1.2_A1.5.js
+ * @description Checking if execution of "class=1" fails
+ * @negative
+ */
+
+var class = 1;
+
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/S7.6.1.2_A1.6.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/S7.6.1.2_A1.6.js
new file mode 100644
index 000000000..da95d7ebf
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/S7.6.1.2_A1.6.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.
+
+/**
+ * The "const" token can not be used as identifier
+ *
+ * @path ch07/7.6/7.6.1/7.6.1.2/S7.6.1.2_A1.6.js
+ * @description Checking if execution of "const=1" fails
+ * @negative
+ */
+
+var const = 1;
+
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/S7.6.1.2_A1.7.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/S7.6.1.2_A1.7.js
new file mode 100644
index 000000000..ed4c3f0fc
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/S7.6.1.2_A1.7.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.
+
+/**
+ * The "debugger" token can not be used as identifier
+ *
+ * @path ch07/7.6/7.6.1/7.6.1.2/S7.6.1.2_A1.7.js
+ * @description Checking if execution of "debugger=1" fails
+ * @negative
+ */
+
+var debugger = 1;
+
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/S7.6.1.2_A1.8.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/S7.6.1.2_A1.8.js
new file mode 100644
index 000000000..70a0a0a49
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/S7.6.1.2_A1.8.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.
+
+/**
+ * The "double" token can be used as identifier
+ *
+ * @path ch07/7.6/7.6.1/7.6.1.2/S7.6.1.2_A1.8.js
+ * @description Checking if execution of "double=1" succeeds
+ */
+
+var double = 1;
+
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/S7.6.1.2_A1.9.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/S7.6.1.2_A1.9.js
new file mode 100644
index 000000000..5294cb0d0
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/S7.6.1.2_A1.9.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.
+
+/**
+ * The "enum" token can not be used as identifier
+ *
+ * @path ch07/7.6/7.6.1/7.6.1.2/S7.6.1.2_A1.9.js
+ * @description Checking if execution of "enum=1" fails
+ * @negative
+ */
+
+var enum = 1;
+
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/browser.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/browser.js
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/shell.js b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/7.6.1.2/shell.js
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/S7.6.1_A1.1.js b/js/src/tests/test262/ch07/7.6/7.6.1/S7.6.1_A1.1.js
new file mode 100644
index 000000000..d97c7843a
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/S7.6.1_A1.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.
+
+/**
+ * The "null" token can not be used as identifier
+ *
+ * @path ch07/7.6/7.6.1/S7.6.1_A1.1.js
+ * @description Checking if execution of "null = 1" fails
+ * @negative
+ */
+
+null = 1;
+
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/S7.6.1_A1.2.js b/js/src/tests/test262/ch07/7.6/7.6.1/S7.6.1_A1.2.js
new file mode 100644
index 000000000..2c49731cb
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/S7.6.1_A1.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.
+
+/**
+ * The "true" token can not be used as identifier
+ *
+ * @path ch07/7.6/7.6.1/S7.6.1_A1.2.js
+ * @description Checking if execution of "true=1" fails
+ * @negative
+ */
+
+true = 1;
+
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/S7.6.1_A1.3.js b/js/src/tests/test262/ch07/7.6/7.6.1/S7.6.1_A1.3.js
new file mode 100644
index 000000000..01cf52f75
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/S7.6.1_A1.3.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.
+
+/**
+ * The "false" token can not be used as identifier
+ *
+ * @path ch07/7.6/7.6.1/S7.6.1_A1.3.js
+ * @description Checking if execution of "false=1" fails
+ * @negative
+ */
+
+false = 1;
+
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/S7.6.1_A2.js b/js/src/tests/test262/ch07/7.6/7.6.1/S7.6.1_A2.js
new file mode 100644
index 000000000..e123f067f
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/S7.6.1_A2.js
@@ -0,0 +1,121 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * List of words that are not reserved
+ *
+ * @path ch07/7.6/7.6.1/S7.6.1_A2.js
+ * @description Try assign 1 for not reserved words
+ */
+
+// a
+var and = 1;
+var and_eq = 1;
+var as = 1;
+var asm = 1;
+var assert = 1;
+var auto = 1;
+// b
+var base = 1;
+var bitand = 1;
+var bitor = 1;
+var bool = 1;
+var byvalue = 1;
+// c
+var checked = 1;
+var clone = 1;
+var comment = 1;
+var compl = 1;
+var const_cast = 1;
+// d
+var decimal = 1;
+var delegate = 1;
+var dynamic_cast = 1;
+// e
+var explicit = 1;
+var extern = 1;
+var equals = 1;
+var event = 1;
+// f
+var finalize = 1;
+var fixed = 1;
+var friend = 1;
+var foreach = 1;
+var future = 1;
+// g
+var getClass = 1;
+var generic = 1;
+// h
+var hashCode = 1;
+// i
+var implicit = 1;
+var infinity = 1;
+var inline = 1;
+var inner = 1;
+var internal = 1;
+var is = 1;
+// j
+// k
+// l
+var lock = 1;
+// m
+var mutable = 1;
+// n
+var namespace = 1;
+var not = 1;
+var notify = 1;
+var notifyAll = 1;
+var not_eq = 1;
+// o
+var object = 1;
+var operator = 1;
+var or = 1;
+var or_eq = 1;
+var out = 1;
+var outer = 1;
+var override = 1;
+// p
+var params = 1;
+// q
+// r
+var readonly = 1;
+var reinterpret_cast = 1;
+var ref = 1;
+var register = 1;
+
+// s
+var sbyte = 1;
+var signed = 1;
+var sizeof = 1;
+var stackalloc = 1;
+var static_cast = 1;
+var string = 1;
+var strictfp = 1;
+var struct = 1;
+// t
+var template = 1;
+var toString = 1;
+var typedef = 1;
+var typeid = 1;
+// u
+var uint = 1;
+var unchecked = 1;
+var undefiend = 1;
+var union = 1;
+var unsafe = 1;
+var unsigned = 1;
+var use = 1;
+var using = 1;
+var ushort = 1;
+// v
+var valueOf = 1;
+var virtual = 1;
+// w
+var wait = 1;
+var wchar_t = 1;
+// x
+var xor = 1;
+var xor_eq = 1;
+// y
+// z
+
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/browser.js b/js/src/tests/test262/ch07/7.6/7.6.1/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/browser.js
diff --git a/js/src/tests/test262/ch07/7.6/7.6.1/shell.js b/js/src/tests/test262/ch07/7.6/7.6.1/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/7.6.1/shell.js
diff --git a/js/src/tests/test262/ch07/7.6/S7.6_A1.2_T1.js b/js/src/tests/test262/ch07/7.6/S7.6_A1.2_T1.js
new file mode 100644
index 000000000..54aee1064
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/S7.6_A1.2_T1.js
@@ -0,0 +1,16 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * IdentifierStart :: $
+ *
+ * @path ch07/7.6/S7.6_A1.2_T1.js
+ * @description Create variable $
+ */
+
+//CHECK#1
+var $ = 1;
+if ($ !== 1) {
+ $ERROR('#1: var $ = 1; $ === 1. Actual: ' + ($));
+}
+
diff --git a/js/src/tests/test262/ch07/7.6/S7.6_A1.2_T2.js b/js/src/tests/test262/ch07/7.6/S7.6_A1.2_T2.js
new file mode 100644
index 000000000..d6474ac41
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/S7.6_A1.2_T2.js
@@ -0,0 +1,16 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * IdentifierStart :: $
+ *
+ * @path ch07/7.6/S7.6_A1.2_T2.js
+ * @description The $ as unicode character \u0024
+ */
+
+//CHECK#1
+var \u0024 = 1;
+if ($ !== 1) {
+ $ERROR('#1: var \\u0024 = 1; $ === 1. Actual: ' + ($));
+}
+
diff --git a/js/src/tests/test262/ch07/7.6/S7.6_A1.2_T3.js b/js/src/tests/test262/ch07/7.6/S7.6_A1.2_T3.js
new file mode 100644
index 000000000..571075a76
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/S7.6_A1.2_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.
+
+/**
+ * IdentifierStart :: $
+ *
+ * @path ch07/7.6/S7.6_A1.2_T3.js
+ * @description The $ as unicode character \u0024
+ */
+
+//CHECK#1
+var identifier = String.fromCharCode(0x0024);
+eval("var " + identifier + "=1");
+if (eval(identifier + "===1") !== true) {
+ $ERROR('#1: var identifier = String.fromCharCode(0x0024); eval("var " + identifier + "=1"); eval(identifier + "===1") === true');
+}
+
+//CHECK#2
+if ("$" !== String.fromCharCode(0x0024)) {
+ $ERROR('#2: "$" === String.fromCharCode(0x0024)');
+}
+
diff --git a/js/src/tests/test262/ch07/7.6/S7.6_A1.3_T1.js b/js/src/tests/test262/ch07/7.6/S7.6_A1.3_T1.js
new file mode 100644
index 000000000..8d1164d2b
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/S7.6_A1.3_T1.js
@@ -0,0 +1,16 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * IdentifierStart :: _
+ *
+ * @path ch07/7.6/S7.6_A1.3_T1.js
+ * @description Create variable _
+ */
+
+//CHECK#1
+var _ = 1;
+if (_ !== 1) {
+ $ERROR('#1: var _ = 1; _ === 1. Actual: ' + (_));
+}
+
diff --git a/js/src/tests/test262/ch07/7.6/S7.6_A1.3_T2.js b/js/src/tests/test262/ch07/7.6/S7.6_A1.3_T2.js
new file mode 100644
index 000000000..ba300f76d
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/S7.6_A1.3_T2.js
@@ -0,0 +1,16 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * IdentifierStart :: _
+ *
+ * @path ch07/7.6/S7.6_A1.3_T2.js
+ * @description The _ as unicode character \u005F
+ */
+
+//CHECK#1
+var \u005F = 1;
+if (_ !== 1) {
+ $ERROR('#1: var \\u005F = 1; _ === 1. Actual: ' + (_));
+}
+
diff --git a/js/src/tests/test262/ch07/7.6/S7.6_A1.3_T3.js b/js/src/tests/test262/ch07/7.6/S7.6_A1.3_T3.js
new file mode 100644
index 000000000..e3a8361c2
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/S7.6_A1.3_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.
+
+/**
+ * IdentifierStart :: _
+ *
+ * @path ch07/7.6/S7.6_A1.3_T3.js
+ * @description The _ as unicode character \u005F
+ */
+
+//CHECK#1
+var identifier = String.fromCharCode(0x005F);
+eval("var " + identifier + "=1");
+if (eval(identifier + "===1") !== true) {
+ $ERROR('#1: var identifier = String.fromCharCode(0x005F); eval("var " + identifier + "=1"); eval(identifier + "===1") === true');
+}
+
+//CHECK#2
+if ("_" !== String.fromCharCode(0x005F)) {
+ $ERROR('#2: "_" === String.fromCharCode(0x005F)');
+}
+
diff --git a/js/src/tests/test262/ch07/7.6/S7.6_A2.1_T1.js b/js/src/tests/test262/ch07/7.6/S7.6_A2.1_T1.js
new file mode 100644
index 000000000..5ef24abef
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/S7.6_A2.1_T1.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.
+
+/**
+ * IdentifierPart :: IdentifierStart
+ *
+ * @path ch07/7.6/S7.6_A2.1_T1.js
+ * @description IdentifierStart :: UnicodeLetter
+ */
+
+//CHECK#1
+try {
+ var identifier = "x" + "x";
+ eval("var " + identifier + "=1");
+ if (xx !== 1) {
+ $ERROR('#1.1: var identifier = "x" + "x"; eval("var " + identifier + "=1"); xx === 1. Actual: ' + (xx));
+ }
+} catch (e) {
+ $ERROR('#1.2: var identifier = "x" + "x"; eval("var " + identifier + "=1"); xx === 1. Actual: ' + (xx));
+}
+
+//CHECK#2
+try {
+ var identifier = "x" + String.fromCharCode(0x0078);
+ eval("var " + identifier + "=2");
+ if (xx !== 2) {
+ $ERROR('#2.1: var identifier = "x" + String.fromCharCode(0x0078); eval("var " + identifier + "=2"); xx === 2. Actual: ' + (xx));
+ }
+} catch (e) {
+ $ERROR('#2.2: var identifier = "x" + String.fromCharCode(0x0078); eval("var " + identifier + "=2"); xx === 2. Actual: ' + (xx));
+}
+
+//CHECK#3
+try {
+ var identifier = String.fromCharCode(0x0078) + String.fromCharCode(0x0078);
+ eval("var " + identifier + "=3");
+ if (xx !== 3) {
+ $ERROR('#3.1: var identifier = String.fromCharCode(0x0078) + String.fromCharCode(0x0078); eval("var " + identifier + "=3"); xx === 3. Actual: ' + (xx));
+ }
+} catch (e) {
+ $ERROR('#3.2: var identifier = String.fromCharCode(0x0078) + String.fromCharCode(0x0078); eval("var " + identifier + "=3"); xx === 3. Actual: ' + (xx));
+}
+
+//CHECK#4
+try {
+ var identifier = "$" + String.fromCharCode(0x0078);
+ eval("var " + identifier + "=4");
+ if ($x !== 4) {
+ $ERROR('#4.1: var identifier = "$" + String.fromCharCode(0x0078); eval("var " + identifier + "=4"); $x === 4. Actual: ' + ($x));
+ }
+} catch (e) {
+ $ERROR('#4.2: var identifier = "$" + String.fromCharCode(0x0078); eval("var " + identifier + "=4"); $x === 4. Actual: ' + ($x));
+}
+
+//CHECK#5
+try {
+ var identifier = "_" + String.fromCharCode(0x0078);
+ eval("var " + identifier + "=5");
+ if (_x !== 5) {
+ $ERROR('#5.1: var identifier = "_" + String.fromCharCode(0x0078); eval("var " + identifier + "=5"); _x === 5. Actual: ' + (_x));
+ }
+} catch (e) {
+ $ERROR('#5.2: var identifier = "_" + String.fromCharCode(0x0078); eval("var " + identifier + "=5"); _x === 5. Actual: ' + (_x));
+}
+
+//CHECK#6
+try {
+ var \u0078x = 6;
+ if (xx !== 6) {
+ $ERROR('#6.1: var \\u0078x = 1; xx === 6. Actual: ' + (xx));
+ }
+} catch (e) {
+ $ERROR('#6.2: var \\u0078x = 1; xx === 6. Actual: ' + (xx));
+}
+
diff --git a/js/src/tests/test262/ch07/7.6/S7.6_A2.1_T2.js b/js/src/tests/test262/ch07/7.6/S7.6_A2.1_T2.js
new file mode 100644
index 000000000..3d595b566
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/S7.6_A2.1_T2.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.
+
+/**
+ * IdentifierPart :: IdentifierStart
+ *
+ * @path ch07/7.6/S7.6_A2.1_T2.js
+ * @description IdentifierStart :: $
+ */
+
+//CHECK#1
+try {
+ var identifier = "x" + "$";
+ eval("var " + identifier + "=1");
+ if (x$ !== 1) {
+ $ERROR('#1.1: var identifier = "x" + "$"; eval("var " + identifier + "=1"); x$ === 1. Actual: ' + (x$));
+ }
+} catch (e) {
+ $ERROR('#1.2: var identifier = "x" + "$"; eval("var " + identifier + "=1"); x$ === 1. Actual: ' + (x$));
+}
+
+//CHECK#2
+try {
+ var identifier = String.fromCharCode(0x0078) + "$";
+ eval("var " + identifier + "=2");
+ if (x$ !== 2) {
+ $ERROR('#2.1: var identifier = String.fromCharCode(0x0078) + "$"; eval("var " + identifier + "=2"); x$ === 2. Actual: ' + (x$));
+ }
+} catch (e) {
+ $ERROR('#2.2: var identifier = String.fromCharCode(0x0078) + "$"; eval("var " + identifier + "=2"); x$ === 2. Actual: ' + (x$));
+}
+
+//CHECK#3
+try {
+ var identifier = "$" + "$";
+ eval("var " + identifier + "=3");
+ if ($$ !== 3) {
+ $ERROR('#3.1: var identifier = "$" + "$"; eval("var " + identifier + "=3"); $$ === 3. Actual: ' + ($$));
+ }
+} catch (e) {
+ $ERROR('#3.2: var identifier = "$" + "$"; eval("var " + identifier + "=3"); $$ === 3. Actual: ' + ($$));
+}
+
+//CHECK#4
+try {
+ var identifier = String.fromCharCode(0x0024) + String.fromCharCode(0x0024);
+ eval("var " + identifier + "=4");
+ if ($$ !== 4) {
+ $ERROR('#4.1: var identifier = String.fromCharCode(0x0024) + String.fromCharCode(0x0024); eval("var " + identifier + "=4"); $$ === 4. Actual: ' + ($$));
+ }
+} catch (e) {
+ $ERROR('#4.2: var identifier = String.fromCharCode(0x0024) + String.fromCharCode(0x0024); eval("var " + identifier + "=4"); $$ === 4. Actual: ' + ($$));
+}
+
+//CHECK#5
+try {
+ var identifier = "_" + "$";
+ eval("var " + identifier + "=5");
+ if (_$ !== 5) {
+ $ERROR('#5.1: var identifier = "_" + "$"; eval("var " + identifier + "=5"); _$ === 5. Actual: ' + (_$));
+ }
+} catch (e) {
+ $ERROR('#5.2: var identifier = "_" + "$"; eval("var " + identifier + "=5"); _$ === 5. Actual: ' + (_$));
+}
+
+//CHECK#6
+try {
+ var \u0078$ = 6;
+ if (x$ !== 6) {
+ $ERROR('#6.1: var \\u0078$ = 1; x$ === 6. Actual: ' + (x$));
+ }
+} catch (e) {
+ $ERROR('#6.2: var \\u0078$ = 1; x$ === 6. Actual: ' + (x$));
+}
+
diff --git a/js/src/tests/test262/ch07/7.6/S7.6_A2.1_T3.js b/js/src/tests/test262/ch07/7.6/S7.6_A2.1_T3.js
new file mode 100644
index 000000000..9c1032169
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/S7.6_A2.1_T3.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.
+
+/**
+ * IdentifierPart :: IdentifierStart
+ *
+ * @path ch07/7.6/S7.6_A2.1_T3.js
+ * @description IdentifierStart :: _
+ */
+
+//CHECK#1
+try {
+ var identifier = "x" + "_";
+ eval("var " + identifier + "=1");
+ if (x_ !== 1) {
+ $ERROR('#1.1: var identifier = "x" + "_"; eval("var " + identifier + "=1"); x_ === 1. Actual: ' + (x_));
+ }
+} catch (e) {
+ $ERROR('#1.2: var identifier = "x" + "_"; eval("var " + identifier + "=1"); x_ === 1. Actual: ' + (x_));
+}
+
+//CHECK#2
+try {
+ var identifier = String.fromCharCode(0x0078) + "_";
+ eval("var " + identifier + "=2");
+ if (x_ !== 2) {
+ $ERROR('#2.1: var identifier = String.fromCharCode(0x0078) + "_"; eval("var " + identifier + "=2"); x_ === 2. Actual: ' + (x_));
+ }
+} catch (e) {
+ $ERROR('#2.2: var identifier = String.fromCharCode(0x0078) + "_"; eval("var " + identifier + "=2"); x_ === 2. Actual: ' + (x_));
+}
+
+//CHECK#3
+try {
+ var identifier = "_" + "_";
+ eval("var " + identifier + "=3");
+ if (__ !== 3) {
+ $ERROR('#3.1: var identifier = "_" + "_"; eval("var " + identifier + "=3"); __ === 3. Actual: ' + (__));
+ }
+} catch (e) {
+ $ERROR('#3.2: var identifier = "_" + "_"; eval("var " + identifier + "=3"); __ === 3. Actual: ' + (__));
+}
+
+//CHECK#4
+try {
+ var identifier = String.fromCharCode(0x005F) + String.fromCharCode(0x005F);
+ eval("var " + identifier + "=4");
+ if (__ !== 4) {
+ $ERROR('#4.1: var identifier = String.fromCharCode(0x005F) + String.fromCharCode(0x005F); eval("var " + identifier + "=4"); __ === 4. Actual: ' + (__));
+ }
+} catch (e) {
+ $ERROR('#4.2: var identifier = String.fromCharCode(0x005F) + String.fromCharCode(0x005F); eval("var " + identifier + "=4"); __ === 4. Actual: ' + (__));
+}
+
+//CHECK#5
+try {
+ var identifier = "_" + "_";
+ eval("var " + identifier + "=5");
+ if (__ !== 5) {
+ $ERROR('#5.1: var identifier = "_" + "_"; eval("var " + identifier + "=5"); __ === 5. Actual: ' + (__));
+ }
+} catch (e) {
+ $ERROR('#5.2: var identifier = "_" + "_"; eval("var " + identifier + "=5"); __ === 5. Actual: ' + (__));
+}
+
+//CHECK#6
+try {
+ var \u0078_ = 6;
+ if (x_ !== 6) {
+ $ERROR('#6.1: var \\u0078_ = 1; x_ === 6. Actual: ' + (x_));
+ }
+} catch (e) {
+ $ERROR('#6.2: var \\u0078_ = 1; x_ === 6. Actual: ' + (x_));
+}
+
diff --git a/js/src/tests/test262/ch07/7.6/S7.6_A2.1_T4.js b/js/src/tests/test262/ch07/7.6/S7.6_A2.1_T4.js
new file mode 100644
index 000000000..a03182254
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/S7.6_A2.1_T4.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.
+
+/**
+ * IdentifierPart :: IdentifierStart
+ *
+ * @path ch07/7.6/S7.6_A2.1_T4.js
+ * @description IdentifierStart :: \UnicodeEscapeSequence
+ */
+
+//CHECK#1
+try {
+ var x\u0078 = 1;
+ if (xx !== 1) {
+ $ERROR('#1.1: var x\\u0078 = 1; xx === 1. Actual: ' + (xx));
+ }
+} catch (e) {
+ $ERROR('#1.2: var x\\u0078 = 1; xx === 1. Actual: ' + (xx));
+}
+
+//CHECK#2
+try {
+ var \u0078\u0078 = 2;
+ if (xx !== 2) {
+ $ERROR('#2.1: var \\u0078\\u0078 = 1; xx === 2. Actual: ' + (xx));
+ }
+} catch (e) {
+ $ERROR('#2.2: var \\u0078\\u0078 = 1; xx === 2. Actual: ' + (xx));
+}
+
+//CHECK#3
+try {
+ var \u0024\u0024 = 3;
+ if ($$ !== 3) {
+ $ERROR('#3.1: var \\u0024\\u0024 = 1; $$ === 3. Actual: ' + ($$));
+ }
+} catch (e) {
+ $ERROR('#3.2: var \\u0024\\u0024 = 1; $$ === 3. Actual: ' + ($$));
+}
+
+//CHECK#4
+try {
+ var \u005F\u005F = 4;
+ if (__ !== 4) {
+ $ERROR('#4.1: var \\u005F\\u005F = 1; __ === 4. Actual: ' + (__));
+ }
+} catch (e) {
+ $ERROR('#4.2: var \\u005F\\u005F = 1; __ === 4. Actual: ' + (__));
+}
+
diff --git a/js/src/tests/test262/ch07/7.6/S7.6_A4.1_T1.js b/js/src/tests/test262/ch07/7.6/S7.6_A4.1_T1.js
new file mode 100644
index 000000000..1e18ed18d
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/S7.6_A4.1_T1.js
@@ -0,0 +1,116 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * Correct interpretation of ENGLISH ALPHABET
+ *
+ * @path ch07/7.6/S7.6_A4.1_T1.js
+ * @description Check ENGLISH CAPITAL ALPHABET
+ */
+
+//CHECK#A-Z
+var \u0041 = 1;
+if (A !== 1) {
+ $ERROR('#A');
+}
+var \u0042 = 1;
+if (B !== 1) {
+ $ERROR('#B');
+}
+var \u0043 = 1;
+if (C !== 1) {
+ $ERROR('#C');
+}
+var \u0044 = 1;
+if (D !== 1) {
+ $ERROR('#D');
+}
+var \u0045 = 1;
+if (E !== 1) {
+ $ERROR('#E');
+}
+var \u0046 = 1;
+if (F !== 1) {
+ $ERROR('#F');
+}
+var \u0047 = 1;
+if (G !== 1) {
+ $ERROR('#G');
+}
+var \u0048 = 1;
+if (H !== 1) {
+ $ERROR('#H');
+}
+var \u0049 = 1;
+if (I !== 1) {
+ $ERROR('#I');
+}
+var \u004A = 1;
+if (J !== 1) {
+ $ERROR('#J');
+}
+var \u004B = 1;
+if (K !== 1) {
+ $ERROR('#K');
+}
+var \u004C = 1;
+if (L !== 1) {
+ $ERROR('#L');
+}
+var \u004D = 1;
+if (M !== 1) {
+ $ERROR('#M');
+}
+var \u004E = 1;
+if (N !== 1) {
+ $ERROR('#N');
+}
+var \u004F = 1;
+if (O !== 1) {
+ $ERROR('#O');
+}
+var \u0050 = 1;
+if (P !== 1) {
+ $ERROR('#P');
+}
+var \u0051 = 1;
+if (Q !== 1) {
+ $ERROR('#Q');
+}
+var \u0052 = 1;
+if (R !== 1) {
+ $ERROR('#R');
+}
+var \u0053 = 1;
+if (S !== 1) {
+ $ERROR('#S');
+}
+var \u0054 = 1;
+if (T !== 1) {
+ $ERROR('#T');
+}
+var \u0055 = 1;
+if (U !== 1) {
+ $ERROR('#U');
+}
+var \u0056 = 1;
+if (V !== 1) {
+ $ERROR('#V');
+}
+var \u0057 = 1;
+if (W !== 1) {
+ $ERROR('#W');
+}
+var \u0058 = 1;
+if (X !== 1) {
+ $ERROR('#X');
+}
+var \u0059 = 1;
+if (Y !== 1) {
+ $ERROR('#Y');
+}
+var \u005A = 1;
+if (Z !== 1) {
+ $ERROR('#Z');
+}
+
diff --git a/js/src/tests/test262/ch07/7.6/S7.6_A4.1_T2.js b/js/src/tests/test262/ch07/7.6/S7.6_A4.1_T2.js
new file mode 100644
index 000000000..20003197e
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/S7.6_A4.1_T2.js
@@ -0,0 +1,117 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * Correct interpretation of ENGLISH ALPHABET
+ *
+ * @path ch07/7.6/S7.6_A4.1_T2.js
+ * @description Check ENGLISH SMALL ALPHABET
+ */
+
+//CHECK#a-z
+var \u0061 = 1;
+if (a !== 1) {
+ $ERROR('#a');
+}
+var \u0062 = 1;
+if (b !== 1) {
+ $ERROR('#b');
+}
+var \u0063 = 1;
+if (c !== 1) {
+ $ERROR('#c');
+}
+var \u0064 = 1;
+if (d !== 1) {
+ $ERROR('#d');
+}
+var \u0065 = 1;
+if (e !== 1) {
+ $ERROR('#e');
+}
+var \u0066 = 1;
+if (f !== 1) {
+ $ERROR('#f');
+}
+var \u0067 = 1;
+if (g !== 1) {
+ $ERROR('#g');
+}
+var \u0068 = 1;
+if (h !== 1) {
+ $ERROR('#h');
+}
+var \u0069 = 1;
+if (i !== 1) {
+ $ERROR('#i');
+}
+var \u006A = 1;
+if (j !== 1) {
+ $ERROR('#j');
+}
+var \u006B = 1;
+if (k !== 1) {
+ $ERROR('#k');
+}
+var \u006C = 1;
+if (l !== 1) {
+ $ERROR('#l');
+}
+var \u006D = 1;
+if (m !== 1) {
+ $ERROR('#m');
+}
+var \u006E = 1;
+if (n !== 1) {
+ $ERROR('#n');
+}
+var \u006F = 1;
+if (o !== 1) {
+ $ERROR('#o');
+}
+var \u0070 = 1;
+if (p !== 1) {
+ $ERROR('#p');
+}
+var \u0071 = 1;
+if (q !== 1) {
+ $ERROR('#q');
+}
+var \u0072 = 1;
+if (r !== 1) {
+ $ERROR('#r');
+}
+var \u0073 = 1;
+if (s !== 1) {
+ $ERROR('#s');
+}
+var \u0074 = 1;
+if (t !== 1) {
+ $ERROR('#t');
+}
+var \u0075 = 1;
+if (u !== 1) {
+ $ERROR('#u');
+}
+var \u0076 = 1;
+if (v !== 1) {
+ $ERROR('#v');
+}
+var \u0077 = 1;
+if (w !== 1) {
+ $ERROR('#w');
+}
+var \u0078 = 1;
+if (x !== 1) {
+ $ERROR('#x');
+}
+var \u0079 = 1;
+if (y !== 1) {
+ $ERROR('#y');
+}
+var \u007A = 1;
+if (z !== 1) {
+ $ERROR('#z');
+}
+
+
diff --git a/js/src/tests/test262/ch07/7.6/S7.6_A4.2_T1.js b/js/src/tests/test262/ch07/7.6/S7.6_A4.2_T1.js
new file mode 100644
index 000000000..e588b8c15
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/S7.6_A4.2_T1.js
@@ -0,0 +1,144 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * Correct interpretation of RUSSIAN ALPHABET
+ *
+ * @path ch07/7.6/S7.6_A4.2_T1.js
+ * @description Check RUSSIAN CAPITAL ALPHABET
+ */
+
+//CHECK#А-Я
+var \u0410 = 1;
+if (А !== 1) {
+ $ERROR('#А');
+}
+var \u0411 = 1;
+if (Б !== 1) {
+ $ERROR('#Б');
+}
+var \u0412 = 1;
+if (В !== 1) {
+ $ERROR('#В');
+}
+var \u0413 = 1;
+if (Г !== 1) {
+ $ERROR('#Г');
+}
+var \u0414 = 1;
+if (Д !== 1) {
+ $ERROR('#Д');
+}
+var \u0415 = 1;
+if (Е !== 1) {
+ $ERROR('#Е');
+}
+var \u0416 = 1;
+if (Ж !== 1) {
+ $ERROR('#Ж');
+}
+var \u0417 = 1;
+if (З !== 1) {
+ $ERROR('#З');
+}
+var \u0418 = 1;
+if (И !== 1) {
+ $ERROR('#И');
+}
+var \u0419 = 1;
+if (Й !== 1) {
+ $ERROR('#Й');
+}
+var \u041A = 1;
+if (К !== 1) {
+ $ERROR('#К');
+}
+var \u041B = 1;
+if (Л !== 1) {
+ $ERROR('#Л');
+}
+var \u041C = 1;
+if (М !== 1) {
+ $ERROR('#М');
+}
+var \u041D = 1;
+if (Н !== 1) {
+ $ERROR('#Н');
+}
+var \u041E = 1;
+if (О !== 1) {
+ $ERROR('#О');
+}
+var \u041F = 1;
+if (П !== 1) {
+ $ERROR('#П');
+}
+var \u0420 = 1;
+if (Р !== 1) {
+ $ERROR('#Р');
+}
+var \u0421 = 1;
+if (С !== 1) {
+ $ERROR('#С');
+}
+var \u0422 = 1;
+if (Т !== 1) {
+ $ERROR('#Т');
+}
+var \u0423 = 1;
+if (У !== 1) {
+ $ERROR('#У');
+}
+var \u0424 = 1;
+if (Ф !== 1) {
+ $ERROR('#Ф');
+}
+var \u0425 = 1;
+if (Х !== 1) {
+ $ERROR('#Х');
+}
+var \u0426 = 1;
+if (Ц !== 1) {
+ $ERROR('#Ц');
+}
+var \u0427 = 1;
+if (Ч !== 1) {
+ $ERROR('#Ч');
+}
+var \u0428 = 1;
+if (Ш !== 1) {
+ $ERROR('#Ш');
+}
+var \u0429 = 1;
+if (Щ !== 1) {
+ $ERROR('#Щ');
+}
+var \u042A = 1;
+if (Ъ !== 1) {
+ $ERROR('#Ъ');
+}
+var \u042B = 1;
+if (Ы !== 1) {
+ $ERROR('#Ы');
+}
+var \u042C = 1;
+if (Ь !== 1) {
+ $ERROR('#Ь');
+}
+var \u042D = 1;
+if (Э !== 1) {
+ $ERROR('#Э');
+}
+var \u042E = 1;
+if (Ю !== 1) {
+ $ERROR('#Ю');
+}
+var \u042F = 1;
+if (Я !== 1) {
+ $ERROR('#Я');
+}
+var \u0401 = 1;
+if (Ё !== 1) {
+ $ERROR('#Ё');
+}
+
diff --git a/js/src/tests/test262/ch07/7.6/S7.6_A4.2_T2.js b/js/src/tests/test262/ch07/7.6/S7.6_A4.2_T2.js
new file mode 100644
index 000000000..119b94918
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/S7.6_A4.2_T2.js
@@ -0,0 +1,144 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * Correct interpretation of RUSSIAN ALPHABET
+ *
+ * @path ch07/7.6/S7.6_A4.2_T2.js
+ * @description Check RUSSIAN SMALL ALPHABET
+ */
+
+//CHECK#а-я
+var \u0430 = 1;
+if (а !== 1) {
+ $ERROR('#а');
+}
+var \u0431 = 1;
+if (б !== 1) {
+ $ERROR('#б');
+}
+var \u0432 = 1;
+if (в !== 1) {
+ $ERROR('#в');
+}
+var \u0433 = 1;
+if (г !== 1) {
+ $ERROR('#г');
+}
+var \u0434 = 1;
+if (д !== 1) {
+ $ERROR('#д');
+}
+var \u0435 = 1;
+if (е !== 1) {
+ $ERROR('#е');
+}
+var \u0436 = 1;
+if (ж !== 1) {
+ $ERROR('#ж');
+}
+var \u0437 = 1;
+if (з !== 1) {
+ $ERROR('#з');
+}
+var \u0438 = 1;
+if (и !== 1) {
+ $ERROR('#и');
+}
+var \u0439 = 1;
+if (й !== 1) {
+ $ERROR('#й');
+}
+var \u043A = 1;
+if (к !== 1) {
+ $ERROR('#к');
+}
+var \u043B = 1;
+if (л !== 1) {
+ $ERROR('#л');
+}
+var \u043C = 1;
+if (м !== 1) {
+ $ERROR('#м');
+}
+var \u043D = 1;
+if (н !== 1) {
+ $ERROR('#н');
+}
+var \u043E = 1;
+if (о !== 1) {
+ $ERROR('#о');
+}
+var \u043F = 1;
+if (п !== 1) {
+ $ERROR('#п');
+}
+var \u0440 = 1;
+if (р !== 1) {
+ $ERROR('#р');
+}
+var \u0441 = 1;
+if (с !== 1) {
+ $ERROR('#с');
+}
+var \u0442 = 1;
+if (т !== 1) {
+ $ERROR('#т');
+}
+var \u0443 = 1;
+if (у !== 1) {
+ $ERROR('#у');
+}
+var \u0444 = 1;
+if (ф !== 1) {
+ $ERROR('#ф');
+}
+var \u0445 = 1;
+if (х !== 1) {
+ $ERROR('#х');
+}
+var \u0446 = 1;
+if (ц !== 1) {
+ $ERROR('#ц');
+}
+var \u0447 = 1;
+if (ч !== 1) {
+ $ERROR('#ч');
+}
+var \u0448 = 1;
+if (ш !== 1) {
+ $ERROR('#ш');
+}
+var \u0449 = 1;
+if (щ !== 1) {
+ $ERROR('#щ');
+}
+var \u044A = 1;
+if (ъ !== 1) {
+ $ERROR('#ъ');
+}
+var \u044B = 1;
+if (ы !== 1) {
+ $ERROR('#ы');
+}
+var \u044C = 1;
+if (ь !== 1) {
+ $ERROR('#ь');
+}
+var \u044D = 1;
+if (э !== 1) {
+ $ERROR('#э');
+}
+var \u044E = 1;
+if (ю !== 1) {
+ $ERROR('#ю');
+}
+var \u044F = 1;
+if (я !== 1) {
+ $ERROR('#я');
+}
+var \u0451 = 1;
+if (ё !== 1) {
+ $ERROR('#ё');
+}
+
diff --git a/js/src/tests/test262/ch07/7.6/S7.6_A4.3_T1.js b/js/src/tests/test262/ch07/7.6/S7.6_A4.3_T1.js
new file mode 100644
index 000000000..ab13aa253
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/S7.6_A4.3_T1.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.
+
+/**
+ * Correct interpretation of DIGITS
+ *
+ * @path ch07/7.6/S7.6_A4.3_T1.js
+ * @description Identifier is $+ANY_DIGIT
+ */
+
+//CHECK#0-9
+var $\u0030 = 0;
+if ($0 !== 0) {
+ $ERROR('#0: $\\u0030 = 0; $0 === 0');
+}
+var $\u0031 = 1;
+if ($1 !== 1) {
+ $ERROR('#1: $\\u0031 = 1; $1 === 1');
+}
+var $\u0032 = 2;
+if ($2 !== 2) {
+ $ERROR('#2: $\\u0032 = 2; $2 === 2');
+}
+var $\u0033 = 3;
+if ($3 !== 3) {
+ $ERROR('#3: $\\u0033 = 3; $3 === 3');
+}
+var $\u0034 = 4;
+if ($4 !== 4) {
+ $ERROR('#4: $\\u0034 = 4; $4 === 4');
+}
+var $\u0035 = 5;
+if ($5 !== 5) {
+ $ERROR('#5: $\\u0035 = 5; $5 === 5');
+}
+var $\u0036 = 6;
+if ($6 !== 6) {
+ $ERROR('#6: $\\u0036 = 6; $6 === 6');
+}
+var $\u0037 = 7;
+if ($7 !== 7) {
+ $ERROR('#7: $\\u0037 = 7; $7 === 7');
+}
+var $\u0038 = 8;
+if ($8 !== 8) {
+ $ERROR('#8: $\\u0038 = 8; $8 === 8');
+}
+var $\u0039 = 9;
+if ($9 !== 9) {
+ $ERROR('#9: $\\u0039 = 9; $9 === 9');
+}
+
diff --git a/js/src/tests/test262/ch07/7.6/browser.js b/js/src/tests/test262/ch07/7.6/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/browser.js
diff --git a/js/src/tests/test262/ch07/7.6/shell.js b/js/src/tests/test262/ch07/7.6/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.6/shell.js
diff --git a/js/src/tests/test262/ch07/7.7/S7.7_A1.js b/js/src/tests/test262/ch07/7.7/S7.7_A1.js
new file mode 100644
index 000000000..e033e1164
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.7/S7.7_A1.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.
+
+/**
+ * Correct interpretation of all punctuators
+ *
+ * @path ch07/7.7/S7.7_A1.js
+ * @description Using all punctuators
+ */
+
+//CHECK#1
+ ({});[];
+ this.NaN;
+ 1 < 2 > 3 <= 4 >= 5 == 6 != 7 === 8 !== 9;
+ 1 + 2 - 3 * 4 % 5 / 6 << 7 >> 8 >>> 9;
+ this.NaN++; ++this.NaN; this.NaN--; --this.NaN;
+ 1 & 2 | 3 ^ 4 && !5 || ~6;
+ 1 ? 2 : 3;
+ this.NaN = 1; this.NaN += 2; this.NaN -= 3; this.NaN *= 4; this.NaN /= 5;
+ this.NaN %= 6; this.NaN <<= 7; this.NaN >>= 8; this.NaN >>>= 9;
+ this.NaN &= 1; this.NaN |= 2; this.NaN ^= 3;
+
diff --git a/js/src/tests/test262/ch07/7.7/S7.7_A2_T1.js b/js/src/tests/test262/ch07/7.7/S7.7_A2_T1.js
new file mode 100644
index 000000000..1a545639d
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.7/S7.7_A2_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.
+
+/**
+ * Punctuator cannot be expressed as a Unicode escape sequence consisting of six characters, namely \u plus four hexadecimal digits
+ *
+ * @path ch07/7.7/S7.7_A2_T1.js
+ * @description Try to use {} as a Unicode \u007B\u007D
+ * @negative
+ */
+
+\u007B\u007D;
+
diff --git a/js/src/tests/test262/ch07/7.7/S7.7_A2_T10.js b/js/src/tests/test262/ch07/7.7/S7.7_A2_T10.js
new file mode 100644
index 000000000..6d71a5617
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.7/S7.7_A2_T10.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.
+
+/**
+ * Punctuator cannot be expressed as a Unicode escape sequence consisting of six characters, namely \u plus four hexadecimal digits
+ *
+ * @path ch07/7.7/S7.7_A2_T10.js
+ * @description Try to use / as a Unicode \u002F
+ * @negative
+ */
+
+1\u002F2;
+
diff --git a/js/src/tests/test262/ch07/7.7/S7.7_A2_T2.js b/js/src/tests/test262/ch07/7.7/S7.7_A2_T2.js
new file mode 100644
index 000000000..1a06e190e
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.7/S7.7_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.
+
+/**
+ * Punctuator cannot be expressed as a Unicode escape sequence consisting of six characters, namely \u plus four hexadecimal digits
+ *
+ * @path ch07/7.7/S7.7_A2_T2.js
+ * @description Try to use () as Unicode \u00281\u0029
+ * @negative
+ */
+
+\u00281\u0029;
+
diff --git a/js/src/tests/test262/ch07/7.7/S7.7_A2_T3.js b/js/src/tests/test262/ch07/7.7/S7.7_A2_T3.js
new file mode 100644
index 000000000..1b9b950f4
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.7/S7.7_A2_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.
+
+/**
+ * Punctuator cannot be expressed as a Unicode escape sequence consisting of six characters, namely \u plus four hexadecimal digits
+ *
+ * @path ch07/7.7/S7.7_A2_T3.js
+ * @description Try to use [] as a Unicode \u005B\u005D
+ * @negative
+ */
+
+\u005B\u005D;
+
diff --git a/js/src/tests/test262/ch07/7.7/S7.7_A2_T4.js b/js/src/tests/test262/ch07/7.7/S7.7_A2_T4.js
new file mode 100644
index 000000000..c877858e2
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.7/S7.7_A2_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.
+
+/**
+ * Punctuator cannot be expressed as a Unicode escape sequence consisting of six characters, namely \u plus four hexadecimal digits
+ *
+ * @path ch07/7.7/S7.7_A2_T4.js
+ * @description Try to use ; as a Unicode \u003B
+ * @negative
+ */
+
+\u003B;
+
diff --git a/js/src/tests/test262/ch07/7.7/S7.7_A2_T5.js b/js/src/tests/test262/ch07/7.7/S7.7_A2_T5.js
new file mode 100644
index 000000000..1b92226af
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.7/S7.7_A2_T5.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.
+
+/**
+ * Punctuator cannot be expressed as a Unicode escape sequence consisting of six characters, namely \u plus four hexadecimal digits
+ *
+ * @path ch07/7.7/S7.7_A2_T5.js
+ * @description Try to use . as a Unicode \u002E
+ * @negative
+ */
+
+x = 1;
+this\u002Ex;
+
diff --git a/js/src/tests/test262/ch07/7.7/S7.7_A2_T6.js b/js/src/tests/test262/ch07/7.7/S7.7_A2_T6.js
new file mode 100644
index 000000000..e0cb0382f
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.7/S7.7_A2_T6.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.
+
+/**
+ * Punctuator cannot be expressed as a Unicode escape sequence consisting of six characters, namely \u plus four hexadecimal digits
+ *
+ * @path ch07/7.7/S7.7_A2_T6.js
+ * @description Try to use , as a Unicode \u002C
+ * @negative
+ */
+
+1\u002C2;
+
diff --git a/js/src/tests/test262/ch07/7.7/S7.7_A2_T7.js b/js/src/tests/test262/ch07/7.7/S7.7_A2_T7.js
new file mode 100644
index 000000000..aff3092a6
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.7/S7.7_A2_T7.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.
+
+/**
+ * Punctuator cannot be expressed as a Unicode escape sequence consisting of six characters, namely \u plus four hexadecimal digits
+ *
+ * @path ch07/7.7/S7.7_A2_T7.js
+ * @description Try to use + as a Unicode \u002B
+ * @negative
+ */
+
+1\u002B2;
+
diff --git a/js/src/tests/test262/ch07/7.7/S7.7_A2_T8.js b/js/src/tests/test262/ch07/7.7/S7.7_A2_T8.js
new file mode 100644
index 000000000..9e9cd1ac4
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.7/S7.7_A2_T8.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.
+
+/**
+ * Punctuator cannot be expressed as a Unicode escape sequence consisting of six characters, namely \u plus four hexadecimal digits
+ *
+ * @path ch07/7.7/S7.7_A2_T8.js
+ * @description Try to use - as a Unicode \u002D
+ * @negative
+ */
+
+1\u002D2;
+
diff --git a/js/src/tests/test262/ch07/7.7/S7.7_A2_T9.js b/js/src/tests/test262/ch07/7.7/S7.7_A2_T9.js
new file mode 100644
index 000000000..7ba61f5a9
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.7/S7.7_A2_T9.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.
+
+/**
+ * Punctuator cannot be expressed as a Unicode escape sequence consisting of six characters, namely \u plus four hexadecimal digits
+ *
+ * @path ch07/7.7/S7.7_A2_T9.js
+ * @description Try to use * as a Unicode \u002A
+ * @negative
+ */
+
+1\u002A2;
+
diff --git a/js/src/tests/test262/ch07/7.7/browser.js b/js/src/tests/test262/ch07/7.7/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.7/browser.js
diff --git a/js/src/tests/test262/ch07/7.7/shell.js b/js/src/tests/test262/ch07/7.7/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.7/shell.js
diff --git a/js/src/tests/test262/ch07/7.8/7.8.1/S7.8.1_A1_T1.js b/js/src/tests/test262/ch07/7.8/7.8.1/S7.8.1_A1_T1.js
new file mode 100644
index 000000000..e7b188b6c
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.1/S7.8.1_A1_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.
+
+/**
+ * Literal :: NullLiteral
+ *
+ * @path ch07/7.8/7.8.1/S7.8.1_A1_T1.js
+ * @description Check null === null
+ */
+
+//CHECK#1
+if (null !== null) {
+ $ERROR('#1: null === null');
+}
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.1/S7.8.1_A1_T2.js b/js/src/tests/test262/ch07/7.8/7.8.1/S7.8.1_A1_T2.js
new file mode 100644
index 000000000..340f8bed4
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.1/S7.8.1_A1_T2.js
@@ -0,0 +1,16 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * Literal :: NullLiteral
+ *
+ * @path ch07/7.8/7.8.1/S7.8.1_A1_T2.js
+ * @description Check RegExp("0").exec("1") === null
+ */
+
+//CHECK#1
+if (RegExp("0").exec("1") !== null) {
+ $ERROR('#1: RegExp("0").exec("1") === null');
+}
+
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.1/browser.js b/js/src/tests/test262/ch07/7.8/7.8.1/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.1/browser.js
diff --git a/js/src/tests/test262/ch07/7.8/7.8.1/shell.js b/js/src/tests/test262/ch07/7.8/7.8.1/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.1/shell.js
diff --git a/js/src/tests/test262/ch07/7.8/7.8.2/S7.8.2_A1_T1.js b/js/src/tests/test262/ch07/7.8/7.8.2/S7.8.2_A1_T1.js
new file mode 100644
index 000000000..f2925a291
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.2/S7.8.2_A1_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.
+
+/**
+ * Literal :: BooleanLiteral
+ *
+ * @path ch07/7.8/7.8.2/S7.8.2_A1_T1.js
+ * @description BooleanLiteral :: true
+ */
+
+//CHECK#1
+if (Boolean(true) !== true) {
+ $ERROR('#1: Boolean(true) === true. Actual: Boolean(true) === ' + (Boolean(true)));
+}
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.2/S7.8.2_A1_T2.js b/js/src/tests/test262/ch07/7.8/7.8.2/S7.8.2_A1_T2.js
new file mode 100644
index 000000000..5adaf379d
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.2/S7.8.2_A1_T2.js
@@ -0,0 +1,16 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * Literal :: BooleanLiteral
+ *
+ * @path ch07/7.8/7.8.2/S7.8.2_A1_T2.js
+ * @description BooleanLiteral :: false
+ */
+
+//CHECK#1
+if (Boolean(false) !== false) {
+ $ERROR('#1: Boolean(false) === false. Actual: Boolean(false) === ' + (Boolean(false)));
+}
+
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.2/browser.js b/js/src/tests/test262/ch07/7.8/7.8.2/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.2/browser.js
diff --git a/js/src/tests/test262/ch07/7.8/7.8.2/shell.js b/js/src/tests/test262/ch07/7.8/7.8.2/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.2/shell.js
diff --git a/js/src/tests/test262/ch07/7.8/7.8.3/7.8.3-1-s.js b/js/src/tests/test262/ch07/7.8/7.8.3/7.8.3-1-s.js
new file mode 100644
index 000000000..fa67b5095
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.3/7.8.3-1-s.js
@@ -0,0 +1,22 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.8/7.8.3/7.8.3-1-s.js
+ * @description Strict Mode - octal extension (010) is forbidden in strict mode
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+ try {
+ eval("var _7_8_3_1 = 010;");
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError && typeof _7_8_3_1 === "undefined";
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch07/7.8/7.8.3/7.8.3-1gs.js b/js/src/tests/test262/ch07/7.8/7.8.3/7.8.3-1gs.js
new file mode 100644
index 000000000..91b6ceae2
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.3/7.8.3-1gs.js
@@ -0,0 +1,16 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+
+/**
+ * @path ch07/7.8/7.8.3/7.8.3-1gs.js
+ * @description Strict Mode - octal extension(010) is forbidden in strict mode
+ * @onlyStrict
+ * @negative ^((?!NotEarlyError).)*$
+ */
+
+"use strict";
+throw NotEarlyError;
+var y = 010;
diff --git a/js/src/tests/test262/ch07/7.8/7.8.3/7.8.3-2-s.js b/js/src/tests/test262/ch07/7.8/7.8.3/7.8.3-2-s.js
new file mode 100644
index 000000000..79755f8df
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.3/7.8.3-2-s.js
@@ -0,0 +1,22 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.8/7.8.3/7.8.3-2-s.js
+ * @description Strict Mode - octal extension (00) is forbidden in strict mode
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+ try {
+ eval("var _7_8_3_2 = 00;");
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError && typeof _7_8_3_2 === "undefined";
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch07/7.8/7.8.3/7.8.3-2gs.js b/js/src/tests/test262/ch07/7.8/7.8.3/7.8.3-2gs.js
new file mode 100644
index 000000000..dae203a53
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.3/7.8.3-2gs.js
@@ -0,0 +1,17 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.8/7.8.3/7.8.3-2gs.js
+ * @description Strict Mode - octal extension is forbidden in strict mode (after a hex number is assigned to a variable)
+ * @onlyStrict
+ * @negative ^((?!NotEarlyError).)*$
+ */
+
+"use strict";
+throw NotEarlyError;
+var a;
+a = 0x1;
+a = 01;
diff --git a/js/src/tests/test262/ch07/7.8/7.8.3/7.8.3-3-s.js b/js/src/tests/test262/ch07/7.8/7.8.3/7.8.3-3-s.js
new file mode 100644
index 000000000..7d33f9a5c
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.3/7.8.3-3-s.js
@@ -0,0 +1,22 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.8/7.8.3/7.8.3-3-s.js
+ * @description Strict Mode - octal extension (01) is forbidden in strict mode
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+ try {
+ eval("var _7_8_3_3 = 01;");
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError && typeof _7_8_3_3 === "undefined";
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch07/7.8/7.8.3/7.8.3-3gs.js b/js/src/tests/test262/ch07/7.8/7.8.3/7.8.3-3gs.js
new file mode 100644
index 000000000..48d56d63e
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.3/7.8.3-3gs.js
@@ -0,0 +1,15 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.8/7.8.3/7.8.3-3gs.js
+ * @description Strict Mode - octal extension is forbidden in strict mode (after a hex number is assigned to a variable from an eval)
+ * @onlyStrict
+ * @negative SyntaxError
+ */
+
+"use strict";
+var a;
+eval("a = 0x1;a = 01;");
diff --git a/js/src/tests/test262/ch07/7.8/7.8.3/7.8.3-4-s.js b/js/src/tests/test262/ch07/7.8/7.8.3/7.8.3-4-s.js
new file mode 100644
index 000000000..53a486b05
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.3/7.8.3-4-s.js
@@ -0,0 +1,22 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.8/7.8.3/7.8.3-4-s.js
+ * @description Strict Mode - octal extension (06) is forbidden in strict mode
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+ try {
+ eval("var _7_8_3_4 = 06;");
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError && typeof _7_8_3_4 === "undefined";
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch07/7.8/7.8.3/7.8.3-5-s.js b/js/src/tests/test262/ch07/7.8/7.8.3/7.8.3-5-s.js
new file mode 100644
index 000000000..98ac43f58
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.3/7.8.3-5-s.js
@@ -0,0 +1,22 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.8/7.8.3/7.8.3-5-s.js
+ * @description Strict Mode - octal extension (07) is forbidden in strict mode
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+ try {
+ eval("var _7_8_3_5 = 07;");
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError && typeof _7_8_3_5 === "undefined";
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch07/7.8/7.8.3/7.8.3-6-s.js b/js/src/tests/test262/ch07/7.8/7.8.3/7.8.3-6-s.js
new file mode 100644
index 000000000..fe2f60c64
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.3/7.8.3-6-s.js
@@ -0,0 +1,22 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.8/7.8.3/7.8.3-6-s.js
+ * @description Strict Mode - octal extension (000) is forbidden in strict mode
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+ try {
+ eval("var _7_8_3_6 = 000;");
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError && typeof _7_8_3_6 === "undefined";
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch07/7.8/7.8.3/7.8.3-7-s.js b/js/src/tests/test262/ch07/7.8/7.8.3/7.8.3-7-s.js
new file mode 100644
index 000000000..d0ffda882
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.3/7.8.3-7-s.js
@@ -0,0 +1,22 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.8/7.8.3/7.8.3-7-s.js
+ * @description Strict Mode - octal extension (005) is forbidden in strict mode
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+ try {
+ eval("var _7_8_3_7 = 005;");
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError && typeof _7_8_3_7 === "undefined";
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A1.1_T1.js b/js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A1.1_T1.js
new file mode 100644
index 000000000..ff82f498e
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A1.1_T1.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.
+
+/**
+ * DecimalLiteral :: DecimalIntegerLiteral
+ *
+ * @path ch07/7.8/7.8.3/S7.8.3_A1.1_T1.js
+ * @description DecimalIntegerLiteral :: 0, NoNZeroDigit
+ */
+
+//CHECK#0
+if (0 !== 0) {
+ $ERROR('#0: 0 === 0');
+}
+
+//CHECK#1
+if (1 !== 1) {
+ $ERROR('#1: 1 === 1');
+}
+
+//CHECK#2
+if (2 !== 2) {
+ $ERROR('#2: 2 === 2');
+}
+
+//CHECK#3
+if (3 !== 3) {
+ $ERROR('#3: 3 === 3');
+}
+
+//CHECK#4
+if (4 !== 4) {
+ $ERROR('#4: 4 === 4');
+}
+
+//CHECK#5
+if (5 !== 5) {
+ $ERROR('#5: 5 === 5');
+}
+
+//CHECK#6
+if (6 !== 6) {
+ $ERROR('#6: 6 === 6');
+}
+
+//CHECK#7
+if (7 !== 7) {
+ $ERROR('#7: 7 === 7');
+}
+
+//CHECK#8
+if (8 !== 8) {
+ $ERROR('#8: 8 === 8');
+}
+
+//CHECK#9
+if (9 !== 9) {
+ $ERROR('#9: 9 === 9');
+}
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A1.1_T2.js b/js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A1.1_T2.js
new file mode 100644
index 000000000..df2206462
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A1.1_T2.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.
+
+/**
+ * DecimalLiteral :: DecimalIntegerLiteral
+ *
+ * @path ch07/7.8/7.8.3/S7.8.3_A1.1_T2.js
+ * @description DecimalIntegerLiteral :: NoNZeroDigit DecimalDigits
+ */
+
+//CHECK#1
+if (11 !== 11) {
+ $ERROR('#1: 11 === 11');
+}
+
+//CHECK#2
+if (22 !== 22) {
+ $ERROR('#2: 22 === 22');
+}
+
+//CHECK#3
+if (33 !== 33) {
+ $ERROR('#3: 33 === 33');
+}
+
+//CHECK#4
+if (44 !== 44) {
+ $ERROR('#4: 44 === 44');
+}
+
+//CHECK#5
+if (55 !== 55) {
+ $ERROR('#5: 55 === 55');
+}
+
+//CHECK#6
+if (66 !== 66) {
+ $ERROR('#6: 66 === 66');
+}
+
+//CHECK#7
+if (77 !== 77) {
+ $ERROR('#7: 77 === 77');
+}
+
+//CHECK#8
+if (88 !== 88) {
+ $ERROR('#8: 88 === 88');
+}
+
+//CHECK#9
+if (99 !== 99) {
+ $ERROR('#9: 99 === 99');
+}
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A1.2_T1.js b/js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A1.2_T1.js
new file mode 100644
index 000000000..50a042d2c
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A1.2_T1.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.
+
+/**
+ * DecimalLiteral :: DecimalIntegerLiteral ExponentPart
+ *
+ * @path ch07/7.8/7.8.3/S7.8.3_A1.2_T1.js
+ * @description ExponentPart :: e DecimalDigits
+ */
+
+//CHECK#0
+if (0e1 !== 0) {
+ $ERROR('#0: 0e1 === 0');
+}
+
+//CHECK#1
+if (1e1 !== 10) {
+ $ERROR('#1: 1e1 === 10');
+}
+
+//CHECK#2
+if (2e1 !== 20) {
+ $ERROR('#2: 2e1 === 20');
+}
+
+//CHECK#3
+if (3e1 !== 30) {
+ $ERROR('#3: 3e1 === 30');
+}
+
+//CHECK#4
+if (4e1 !== 40) {
+ $ERROR('#4: 4e1 === 40');
+}
+
+//CHECK#5
+if (5e1 !== 50) {
+ $ERROR('#5: 5e1 === 50');
+}
+
+//CHECK#6
+if (6e1 !== 60) {
+ $ERROR('#6: 6e1 === 60');
+}
+
+//CHECK#7
+if (7e1 !== 70) {
+ $ERROR('#7: 7e1 === 70');
+}
+
+//CHECK#8
+if (8e1 !== 80) {
+ $ERROR('#8: 8e1 === 80');
+}
+
+//CHECK#9
+if (9e1 !== 90) {
+ $ERROR('#9: 9e1 === 90');
+}
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A1.2_T2.js b/js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A1.2_T2.js
new file mode 100644
index 000000000..f2398a460
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A1.2_T2.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.
+
+/**
+ * DecimalLiteral :: DecimalIntegerLiteral ExponentPart
+ *
+ * @path ch07/7.8/7.8.3/S7.8.3_A1.2_T2.js
+ * @description ExponentPart :: E DecimalDigits
+ */
+
+//CHECK#0
+if (0E1 !== 0) {
+ $ERROR('#0: 0E1 === 0');
+}
+
+//CHECK#1
+if (1E1 !== 10) {
+ $ERROR('#1: 1E1 === 1');
+}
+
+//CHECK#2
+if (2E1 !== 20) {
+ $ERROR('#2: 2E1 === 20');
+}
+
+//CHECK#3
+if (3E1 !== 30) {
+ $ERROR('#3: 3E1 === 30');
+}
+
+//CHECK#4
+if (4E1 !== 40) {
+ $ERROR('#4: 4E1 === 40');
+}
+
+//CHECK#5
+if (5E1 !== 50) {
+ $ERROR('#5: 5E1 === 50');
+}
+
+//CHECK#6
+if (6E1 !== 60) {
+ $ERROR('#6: 6E1 === 60');
+}
+
+//CHECK#7
+if (7E1 !== 70) {
+ $ERROR('#7: 7E1 === 70');
+}
+
+//CHECK#8
+if (8E1 !== 80) {
+ $ERROR('#8: 8E1 === 80');
+}
+
+//CHECK#9
+if (9E1 !== 90) {
+ $ERROR('#9: 9E1 === 90');
+}
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A1.2_T3.js b/js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A1.2_T3.js
new file mode 100644
index 000000000..352745f8a
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A1.2_T3.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.
+
+/**
+ * DecimalLiteral :: DecimalIntegerLiteral ExponentPart
+ *
+ * @path ch07/7.8/7.8.3/S7.8.3_A1.2_T3.js
+ * @description ExponentPart :: e -DecimalDigits
+ */
+
+//CHECK#0
+if (0e-1 !== 0) {
+ $ERROR('#0: 0e-1 === 0');
+}
+
+//CHECK#1
+if (1e-1 !== 0.1) {
+ $ERROR('#1: 1e-1 === 0.1');
+}
+
+//CHECK#2
+if (2e-1 !== 0.2) {
+ $ERROR('#2: 2e-1 === 0.2');
+}
+
+//CHECK#3
+if (3e-1 !== 0.3) {
+ $ERROR('#3: 3e-1 === 0.3');
+}
+
+//CHECK#4
+if (4e-1 !== 0.4) {
+ $ERROR('#4: 4e-1 === 0.4');
+}
+
+//CHECK#5
+if (5e-1 !== 0.5) {
+ $ERROR('#5: 5e-1 === 0.5');
+}
+
+//CHECK#6
+if (6e-1 !== 0.6) {
+ $ERROR('#6: 6e-1 === 0.6');
+}
+
+//CHECK#7
+if (7e-1 !== 0.7) {
+ $ERROR('#7: 7e-1 === 0.7');
+}
+
+//CHECK#8
+if (8e-1 !== 0.8) {
+ $ERROR('#8: 8e-1 === 0.8');
+}
+
+//CHECK#9
+if (9e-1 !== 0.9) {
+ $ERROR('#9: 9e-1 === 0.9');
+}
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A1.2_T4.js b/js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A1.2_T4.js
new file mode 100644
index 000000000..b0f95210f
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A1.2_T4.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.
+
+/**
+ * DecimalLiteral :: DecimalIntegerLiteral ExponentPart
+ *
+ * @path ch07/7.8/7.8.3/S7.8.3_A1.2_T4.js
+ * @description ExponentPart :: E -DecimalDigits
+ */
+
+//CHECK#0
+if (0E-1 !== 0) {
+ $ERROR('#0: 0E-1 === 0');
+}
+
+//CHECK#1
+if (1E-1 !== 0.1) {
+ $ERROR('#1: 1E-1 === 0.1');
+}
+
+//CHECK#2
+if (2E-1 !== 0.2) {
+ $ERROR('#2: 2E-1 === 0.2');
+}
+
+//CHECK#3
+if (3E-1 !== 0.3) {
+ $ERROR('#3: 3E-1 === 0.3');
+}
+
+//CHECK#4
+if (4E-1 !== 0.4) {
+ $ERROR('#4: 4E-1 === 0.4');
+}
+
+//CHECK#5
+if (5E-1 !== 0.5) {
+ $ERROR('#5: 5E-1 === 0.5');
+}
+
+//CHECK#6
+if (6E-1 !== 0.6) {
+ $ERROR('#6: 6E-1 === 0.6');
+}
+
+//CHECK#7
+if (7E-1 !== 0.7) {
+ $ERROR('#7: 7E-1 === 0.7');
+}
+
+//CHECK#8
+if (8E-1 !== 0.8) {
+ $ERROR('#8: 8E-1 === 0.8');
+}
+
+//CHECK#9
+if (9E-1 !== 0.9) {
+ $ERROR('#9: 9E-1 === 0.9');
+}
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A1.2_T5.js b/js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A1.2_T5.js
new file mode 100644
index 000000000..87c79f63d
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A1.2_T5.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.
+
+/**
+ * DecimalLiteral :: DecimalIntegerLiteral ExponentPart
+ *
+ * @path ch07/7.8/7.8.3/S7.8.3_A1.2_T5.js
+ * @description ExponentPart :: e +DecimalDigits
+ */
+
+//CHECK#0
+if (0e+1 !== 0) {
+ $ERROR('#0: 0e+1 === 0');
+}
+
+//CHe+CK#1
+if (1e+1 !== 10) {
+ $ERROR('#1: 1e+1 === 10');
+}
+
+//CHe+CK#2
+if (2e+1 !== 20) {
+ $ERROR('#2: 2e+1 === 20');
+}
+
+//CHe+CK#3
+if (3e+1 !== 30) {
+ $ERROR('#3: 3e+1 === 30');
+}
+
+//CHe+CK#4
+if (4e+1 !== 40) {
+ $ERROR('#4: 4e+1 === 40');
+}
+
+//CHe+CK#5
+if (5e+1 !== 50) {
+ $ERROR('#5: 5e+1 === 50');
+}
+
+//CHe+CK#6
+if (6e+1 !== 60) {
+ $ERROR('#6: 6e+1 === 60');
+}
+
+//CHe+CK#7
+if (7e+1 !== 70) {
+ $ERROR('#7: 7e+1 === 70');
+}
+
+//CHe+CK#8
+if (8e+1 !== 80) {
+ $ERROR('#8: 8e+1 === 80');
+}
+
+//CHe+CK#9
+if (9e+1 !== 90) {
+ $ERROR('#9: 9e+1 === 90');
+}
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A1.2_T6.js b/js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A1.2_T6.js
new file mode 100644
index 000000000..bdfc65d33
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A1.2_T6.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.
+
+/**
+ * DecimalLiteral :: DecimalIntegerLiteral ExponentPart
+ *
+ * @path ch07/7.8/7.8.3/S7.8.3_A1.2_T6.js
+ * @description ExponentPart :: E +DecimalDigits
+ */
+
+//CHECK#0
+if (0E+1 !== 0) {
+ $ERROR('#0: 0E+1 === 0');
+}
+
+//CHE+CK#1
+if (1E+1 !== 10) {
+ $ERROR('#1: 1E+1 === 10');
+}
+
+//CHE+CK#2
+if (2E+1 !== 20) {
+ $ERROR('#2: 2E+1 === 20');
+}
+
+//CHE+CK#3
+if (3E+1 !== 30) {
+ $ERROR('#3: 3E+1 === 30');
+}
+
+//CHE+CK#4
+if (4E+1 !== 40) {
+ $ERROR('#4: 4E+1 === 40');
+}
+
+//CHE+CK#5
+if (5E+1 !== 50) {
+ $ERROR('#5: 5E+1 === 50');
+}
+
+//CHE+CK#6
+if (6E+1 !== 60) {
+ $ERROR('#6: 6E+1 === 60');
+}
+
+//CHE+CK#7
+if (7E+1 !== 70) {
+ $ERROR('#7: 7E+1 === 70');
+}
+
+//CHE+CK#8
+if (8E+1 !== 80) {
+ $ERROR('#8: 8E+1 === 80');
+}
+
+//CHE+CK#9
+if (9E+1 !== 90) {
+ $ERROR('#9: 9E+1 === 90');
+}
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A1.2_T7.js b/js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A1.2_T7.js
new file mode 100644
index 000000000..d636e7e6b
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A1.2_T7.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.
+
+/**
+ * DecimalLiteral :: DecimalIntegerLiteral ExponentPart
+ *
+ * @path ch07/7.8/7.8.3/S7.8.3_A1.2_T7.js
+ * @description ExponentPart :: e 0
+ */
+
+//CHECK#0
+if (0e0 !== 0) {
+ $ERROR('#0: 0e0 === 0');
+}
+
+//CHECK#1
+if (1e0 !== 1) {
+ $ERROR('#1: 1e0 === 1');
+}
+
+//CHECK#2
+if (2e0 !== 2) {
+ $ERROR('#2: 2e0 === 2');
+}
+
+//CHECK#3
+if (3e0 !== 3) {
+ $ERROR('#3: 3e0 === 3');
+}
+
+//CHECK#4
+if (4e0 !== 4) {
+ $ERROR('#4: 4e0 === 4');
+}
+
+//CHECK#5
+if (5e0 !== 5) {
+ $ERROR('#5: 5e0 === 5');
+}
+
+//CHECK#6
+if (6e0 !== 6) {
+ $ERROR('#6: 6e0 === 6');
+}
+
+//CHECK#7
+if (7e0 !== 7) {
+ $ERROR('#7: 7e0 === 7');
+}
+
+//CHECK#8
+if (8e0 !== 8) {
+ $ERROR('#8: 8e0 === 8');
+}
+
+//CHECK#9
+if (9e0 !== 9) {
+ $ERROR('#9: 9e0 === 9');
+}
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A1.2_T8.js b/js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A1.2_T8.js
new file mode 100644
index 000000000..c45e4353d
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A1.2_T8.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.
+
+/**
+ * DecimalLiteral :: DecimalIntegerLiteral ExponentPart
+ *
+ * @path ch07/7.8/7.8.3/S7.8.3_A1.2_T8.js
+ * @description ExponentPart :: E 0
+ */
+
+//CHECK#0
+if (0E0 !== 0) {
+ $ERROR('#0: 0E0 === 0');
+}
+
+//CHECK#1
+if (1E0 !== 1) {
+ $ERROR('#1: 1E0 === 1');
+}
+
+//CHECK#2
+if (2E0 !== 2) {
+ $ERROR('#2: 2E0 === 2');
+}
+
+//CHECK#3
+if (3E0 !== 3) {
+ $ERROR('#3: 3E0 === 3');
+}
+
+//CHECK#4
+if (4E0 !== 4) {
+ $ERROR('#4: 4E0 === 4');
+}
+
+//CHECK#5
+if (5E0 !== 5) {
+ $ERROR('#5: 5E0 === 5');
+}
+
+//CHECK#6
+if (6E0 !== 6) {
+ $ERROR('#6: 6E0 === 6');
+}
+
+//CHECK#7
+if (7E0 !== 7) {
+ $ERROR('#7: 7E0 === 7');
+}
+
+//CHECK#8
+if (8E0 !== 8) {
+ $ERROR('#8: 8E0 === 8');
+}
+
+//CHECK#9
+if (9E0 !== 9) {
+ $ERROR('#9: 9E0 === 9');
+}
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A2.1_T1.js b/js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A2.1_T1.js
new file mode 100644
index 000000000..571cfe65e
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A2.1_T1.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.
+
+/**
+ * DecimalLiteral :: .DecimalDigits
+ *
+ * @path ch07/7.8/7.8.3/S7.8.3_A2.1_T1.js
+ * @description Use .DecimalDigit
+ */
+
+//CHECK#0
+if (.0 !== 0.0) {
+ $ERROR('#0: .0 === 0.0');
+}
+
+//CHECK#1
+if (.1 !== 0.1) {
+ $ERROR('#1: .1 === 0.1');
+}
+
+//CHECK#2
+if (.2 !== 0.2) {
+ $ERROR('#2: .2 === 0.2');
+}
+
+//CHECK#3
+if (.3 !== 0.3) {
+ $ERROR('#3: .3 === 0.3');
+}
+
+//CHECK#4
+if (.4 !== 0.4) {
+ $ERROR('#4: .4 === 0.4');
+}
+
+//CHECK#5
+if (.5 !== 0.5) {
+ $ERROR('#5: .5 === 0.5');
+}
+
+//CHECK#6
+if (.6 !== 0.6) {
+ $ERROR('#6: .6 === 0.6');
+}
+
+//CHECK#7
+if (.7 !== 0.7) {
+ $ERROR('#7: .7 === 0.7');
+}
+
+//CHECK#8
+if (.8 !== 0.8) {
+ $ERROR('#8: .8 === 0.8');
+}
+
+//CHECK#9
+if (.9 !== 0.9) {
+ $ERROR('#9: .9 === 0.9');
+}
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A2.1_T2.js b/js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A2.1_T2.js
new file mode 100644
index 000000000..88ed6fc02
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A2.1_T2.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.
+
+/**
+ * DecimalLiteral :: .DecimalDigits
+ *
+ * @path ch07/7.8/7.8.3/S7.8.3_A2.1_T2.js
+ * @description Use .DecimalDigits
+ */
+
+//CHECK#0
+if (.00 !== 0.00) {
+ $ERROR('#0: .00 === 0.00');
+}
+
+//CHECK#1
+if (.11 !== 0.11) {
+ $ERROR('#1: .11 === 0.11');
+}
+
+//CHECK#2
+if (.22 !== 0.22) {
+ $ERROR('#2: .22 === 0.22');
+}
+
+//CHECK#3
+if (.33 !== 0.33) {
+ $ERROR('#3: .33 === 0.33');
+}
+
+//CHECK#4
+if (.44 !== 0.44) {
+ $ERROR('#4: .44 === 0.44');
+}
+
+//CHECK#5
+if (.55 !== 0.55) {
+ $ERROR('#5: .55 === 0.55');
+}
+
+//CHECK#6
+if (.66 !== 0.66) {
+ $ERROR('#6: .66 === 0.66');
+}
+
+//CHECK#7
+if (.77 !== 0.77) {
+ $ERROR('#7: .77 === 0.77');
+}
+
+//CHECK#8
+if (.88 !== 0.88) {
+ $ERROR('#8: .88 === 0.88');
+}
+
+//CHECK#9
+if (.99 !== 0.99) {
+ $ERROR('#9: .99 === 0.99');
+}
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A2.1_T3.js b/js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A2.1_T3.js
new file mode 100644
index 000000000..2b5d47bd1
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A2.1_T3.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.
+
+/**
+ * DecimalLiteral :: .DecimalDigits
+ *
+ * @path ch07/7.8/7.8.3/S7.8.3_A2.1_T3.js
+ * @description Use .DecimalDigits that have at the end zeros
+ */
+
+//CHECK#0
+if (.00 !== 0.0) {
+ $ERROR('#0: .0 === 0.0');
+}
+
+//CHECK#1
+if (.10 !== 0.1) {
+ $ERROR('#1: .1 === 0.1');
+}
+
+//CHECK#2
+if (.20 !== 0.2) {
+ $ERROR('#2: .2 === 0.2');
+}
+
+//CHECK#3
+if (.30 !== 0.3) {
+ $ERROR('#3: .3 === 0.3');
+}
+
+//CHECK#4
+if (.40 !== 0.4) {
+ $ERROR('#4: .4 === 0.4');
+}
+
+//CHECK#5
+if (.50 !== 0.5) {
+ $ERROR('#5: .5 === 0.5');
+}
+
+//CHECK#6
+if (.60 !== 0.6) {
+ $ERROR('#6: .6 === 0.6');
+}
+
+//CHECK#7
+if (.70 !== 0.7) {
+ $ERROR('#7: .7 === 0.7');
+}
+
+//CHECK#8
+if (.80 !== 0.8) {
+ $ERROR('#8: .8 === 0.8');
+}
+
+//CHECK#9
+if (.90 !== 0.9) {
+ $ERROR('#9: .9 === 0.9');
+}
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A2.2_T1.js b/js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A2.2_T1.js
new file mode 100644
index 000000000..bd80eb9d7
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A2.2_T1.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.
+
+/**
+ * DecimalLiteral :: .DecimalDigits ExponentPart
+ *
+ * @path ch07/7.8/7.8.3/S7.8.3_A2.2_T1.js
+ * @description ExponentPart :: e DecimalDigits
+ */
+
+//CHECK#0
+if (.0e1 !== 0) {
+ $ERROR('#0: .0e1 === 0');
+}
+
+//CHECK#1
+if (.1e1 !== 1) {
+ $ERROR('#1: .1e1 === 1');
+}
+
+//CHECK#2
+if (.2e1 !== 2) {
+ $ERROR('#2: .2e1 === 2');
+}
+
+//CHECK#3
+if (.3e1 !== 3) {
+ $ERROR('#3: .3e1 === 3');
+}
+
+//CHECK#4
+if (.4e1 !== 4) {
+ $ERROR('#4: .4e1 === 4');
+}
+
+//CHECK#5
+if (.5e1 !== 5) {
+ $ERROR('#5: .5e1 === 5');
+}
+
+//CHECK#6
+if (.6e1 !== 6) {
+ $ERROR('#6: .6e1 === 6');
+}
+
+//CHECK#7
+if (.7e1 !== 7) {
+ $ERROR('#7: .7e1 === 7');
+}
+
+//CHECK#8
+if (.8e1 !== 8) {
+ $ERROR('#8: .8e1 === 8');
+}
+
+//CHECK#9
+if (.9e1 !== 9) {
+ $ERROR('#9: .9e1 === 9');
+}
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A2.2_T2.js b/js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A2.2_T2.js
new file mode 100644
index 000000000..0e6db7925
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A2.2_T2.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.
+
+/**
+ * DecimalLiteral :: .DecimalDigits ExponentPart
+ *
+ * @path ch07/7.8/7.8.3/S7.8.3_A2.2_T2.js
+ * @description ExponentPart :: E DecimalDigits
+ */
+
+//CHECK#0
+if (.0E1 !== 0) {
+ $ERROR('#0: .0E1 === 0');
+}
+
+//CHECK#1
+if (.1E1 !== 1) {
+ $ERROR('#1: .1E1 === 1');
+}
+
+//CHECK#2
+if (.2E1 !== 2) {
+ $ERROR('#2: .2E1 === 2');
+}
+
+//CHECK#3
+if (.3E1 !== 3) {
+ $ERROR('#3: .3E1 === 3');
+}
+
+//CHECK#4
+if (.4E1 !== 4) {
+ $ERROR('#4: .4E1 === 4');
+}
+
+//CHECK#5
+if (.5E1 !== 5) {
+ $ERROR('#5: .5E1 === 5');
+}
+
+//CHECK#6
+if (.6E1 !== 6) {
+ $ERROR('#6: .6E1 === 6');
+}
+
+//CHECK#7
+if (.7E1 !== 7) {
+ $ERROR('#7: .7E1 === 7');
+}
+
+//CHECK#8
+if (.8E1 !== 8) {
+ $ERROR('#8: .8E1 === 8');
+}
+
+//CHECK#9
+if (.9E1 !== 9) {
+ $ERROR('#9: .9E1 === 9');
+}
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A2.2_T3.js b/js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A2.2_T3.js
new file mode 100644
index 000000000..513868760
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A2.2_T3.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.
+
+/**
+ * DecimalLiteral :: .DecimalDigits ExponentPart
+ *
+ * @path ch07/7.8/7.8.3/S7.8.3_A2.2_T3.js
+ * @description ExponentPart :: e +DecimalDigits
+ */
+
+//CHECK#0
+if (.0e-1 !== 0) {
+ $ERROR('#0: .0e-1 === 0');
+}
+
+//CHECK#1
+if (.1e-1 !== 0.01) {
+ $ERROR('#1: .1e-1 === 0.01');
+}
+
+//CHECK#2
+if (.2e-1 !== 0.02) {
+ $ERROR('#2: .2e-1 === 0.02');
+}
+
+//CHECK#3
+if (.3e-1 !== 0.03) {
+ $ERROR('#3: .3e-1 === 0.03');
+}
+
+//CHECK#4
+if (.4e-1 !== 0.04) {
+ $ERROR('#4: .4e-1 === 0.04');
+}
+
+//CHECK#5
+if (.5e-1 !== 0.05) {
+ $ERROR('#5: .5e-1 === 0.05');
+}
+
+//CHECK#6
+if (.6e-1 !== 0.06) {
+ $ERROR('#6: .6e-1 === 0.06');
+}
+
+//CHECK#7
+if (.7e-1 !== 0.07) {
+ $ERROR('#7: .7e-1 === 0.07');
+}
+
+//CHECK#8
+if (.8e-1 !== 0.08) {
+ $ERROR('#8: .8e-1 === 0.08');
+}
+
+//CHECK#9
+if (.9e-1 !== 0.09) {
+ $ERROR('#9: .9e-1 === 0.09');
+}
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A2.2_T4.js b/js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A2.2_T4.js
new file mode 100644
index 000000000..88ddf9858
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A2.2_T4.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.
+
+/**
+ * DecimalLiteral :: .DecimalDigits ExponentPart
+ *
+ * @path ch07/7.8/7.8.3/S7.8.3_A2.2_T4.js
+ * @description ExponentPart :: E +DecimalDigits
+ */
+
+//CHECK#0
+if (.0E-1 !== 0) {
+ $ERROR('#0: .0E-1 === 0');
+}
+
+//CHECK#1
+if (.1E-1 !== 0.01) {
+ $ERROR('#1: .1E-1 === 0.01');
+}
+
+//CHECK#2
+if (.2E-1 !== 0.02) {
+ $ERROR('#2: .2E-1 === 0.02');
+}
+
+//CHECK#3
+if (.3E-1 !== 0.03) {
+ $ERROR('#3: .3E-1 === 0.03');
+}
+
+//CHECK#4
+if (.4E-1 !== 0.04) {
+ $ERROR('#4: .4E-1 === 0.04');
+}
+
+//CHECK#5
+if (.5E-1 !== 0.05) {
+ $ERROR('#5: .5E-1 === 0.05');
+}
+
+//CHECK#6
+if (.6E-1 !== 0.06) {
+ $ERROR('#6: .6E-1 === 0.06');
+}
+
+//CHECK#7
+if (.7E-1 !== 0.07) {
+ $ERROR('#7: .7E-1 === 0.07');
+}
+
+//CHECK#8
+if (.8E-1 !== 0.08) {
+ $ERROR('#8: .8E-1 === 0.08');
+}
+
+//CHECK#9
+if (.9E-1 !== 0.09) {
+ $ERROR('#9: .9E-1 === 0.09');
+}
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A2.2_T5.js b/js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A2.2_T5.js
new file mode 100644
index 000000000..881511a10
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A2.2_T5.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.
+
+/**
+ * DecimalLiteral :: .DecimalDigits ExponentPart
+ *
+ * @path ch07/7.8/7.8.3/S7.8.3_A2.2_T5.js
+ * @description ExponentPart :: e +DecimalDigits
+ */
+
+//CHECK#0
+if (.0e+1 !== 0) {
+ $ERROR('#0: .0e+1 === 0');
+}
+
+//CHECK#1
+if (.1e+1 !== 1) {
+ $ERROR('#1: .1e+1 === 1');
+}
+
+//CHECK#2
+if (.2e+1 !== 2) {
+ $ERROR('#2: .2e+1 === 2');
+}
+
+//CHECK#3
+if (.3e+1 !== 3) {
+ $ERROR('#3: .3e+1 === 3');
+}
+
+//CHECK#4
+if (.4e+1 !== 4) {
+ $ERROR('#4: .4e+1 === 4');
+}
+
+//CHECK#5
+if (.5e+1 !== 5) {
+ $ERROR('#5: .5e+1 === 5');
+}
+
+//CHECK#6
+if (.6e+1 !== 6) {
+ $ERROR('#6: .6e+1 === 6');
+}
+
+//CHECK#7
+if (.7e+1 !== 7) {
+ $ERROR('#7: .7e+1 === 7');
+}
+
+//CHECK#8
+if (.8e+1 !== 8) {
+ $ERROR('#8: .8e+1 === 8');
+}
+
+//CHECK#9
+if (.9e+1 !== 9) {
+ $ERROR('#9: .9e+1 === 9');
+}
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A2.2_T6.js b/js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A2.2_T6.js
new file mode 100644
index 000000000..8b206eee7
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A2.2_T6.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.
+
+/**
+ * DecimalLiteral :: .DecimalDigits ExponentPart
+ *
+ * @path ch07/7.8/7.8.3/S7.8.3_A2.2_T6.js
+ * @description ExponentPart :: E +DecimalDigits
+ */
+
+//CHECK#0
+if (.0E+1 !== 0) {
+ $ERROR('#0: .0E+1 === 0');
+}
+
+//CHECK#1
+if (.1E+1 !== 1) {
+ $ERROR('#1: .1E+1 === 1');
+}
+
+//CHECK#2
+if (.2E+1 !== 2) {
+ $ERROR('#2: .2E+1 === 2');
+}
+
+//CHECK#3
+if (.3E+1 !== 3) {
+ $ERROR('#3: .3E+1 === 3');
+}
+
+//CHECK#4
+if (.4E+1 !== 4) {
+ $ERROR('#4: .4E+1 === 4');
+}
+
+//CHECK#5
+if (.5E+1 !== 5) {
+ $ERROR('#5: .5E+1 === 5');
+}
+
+//CHECK#6
+if (.6E+1 !== 6) {
+ $ERROR('#6: .6E+1 === 6');
+}
+
+//CHECK#7
+if (.7E+1 !== 7) {
+ $ERROR('#7: .7E+1 === 7');
+}
+
+//CHECK#8
+if (.8E+1 !== 8) {
+ $ERROR('#8: .8E+1 === 8');
+}
+
+//CHECK#9
+if (.9E+1 !== 9) {
+ $ERROR('#9: .9E+1 === 9');
+}
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A2.2_T7.js b/js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A2.2_T7.js
new file mode 100644
index 000000000..a3701e00c
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A2.2_T7.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.
+
+/**
+ * DecimalLiteral :: .DecimalDigits ExponentPart
+ *
+ * @path ch07/7.8/7.8.3/S7.8.3_A2.2_T7.js
+ * @description ExponentPart :: e 0
+ */
+
+//CHECK#0
+if (.0e0 !== 0.0) {
+ $ERROR('#0: .0e0 === 0.0');
+}
+
+//CHECK#1
+if (.1e0 !== 0.1) {
+ $ERROR('#1: .1e0 === 0.1');
+}
+
+//CHECK#2
+if (.2e0 !== 0.2) {
+ $ERROR('#2: .2e0 === 0.2');
+}
+
+//CHECK#3
+if (.3e0 !== 0.3) {
+ $ERROR('#3: .3e0 === 0.3');
+}
+
+//CHECK#4
+if (.4e0 !== 0.4) {
+ $ERROR('#4: .4e0 === 0.4');
+}
+
+//CHECK#5
+if (.5e0 !== 0.5) {
+ $ERROR('#5: .5e0 === 0.5');
+}
+
+//CHECK#6
+if (.6e0 !== 0.6) {
+ $ERROR('#6: .6e0 === 0.6');
+}
+
+//CHECK#7
+if (.7e0 !== 0.7) {
+ $ERROR('#7: .7e0 === 0.7');
+}
+
+//CHECK#8
+if (.8e0 !== 0.8) {
+ $ERROR('#8: .8e0 === 0.8');
+}
+
+//CHECK#9
+if (.9e0 !== 0.9) {
+ $ERROR('#9: .9e0 === 0.9');
+}
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A2.2_T8.js b/js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A2.2_T8.js
new file mode 100644
index 000000000..d8bca29e1
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A2.2_T8.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.
+
+/**
+ * DecimalLiteral :: .DecimalDigits ExponentPart
+ *
+ * @path ch07/7.8/7.8.3/S7.8.3_A2.2_T8.js
+ * @description ExponentPart :: E 0
+ */
+
+//CHECK#0
+if (.0E0 !== 0.0) {
+ $ERROR('#0: .0E0 === 0.0');
+}
+
+//CHECK#1
+if (.1E0 !== 0.1) {
+ $ERROR('#1: .1E0 === 0.1');
+}
+
+//CHECK#2
+if (.2E0 !== 0.2) {
+ $ERROR('#2: .2E0 === 0.2');
+}
+
+//CHECK#3
+if (.3E0 !== 0.3) {
+ $ERROR('#3: .3E0 === 0.3');
+}
+
+//CHECK#4
+if (.4E0 !== 0.4) {
+ $ERROR('#4: .4E0 === 0.4');
+}
+
+//CHECK#5
+if (.5E0 !== 0.5) {
+ $ERROR('#5: .5E0 === 0.5');
+}
+
+//CHECK#6
+if (.6E0 !== 0.6) {
+ $ERROR('#6: .6E0 === 0.6');
+}
+
+//CHECK#7
+if (.7E0 !== 0.7) {
+ $ERROR('#7: .7E0 === 0.7');
+}
+
+//CHECK#8
+if (.8E0 !== 0.8) {
+ $ERROR('#8: .8E0 === 0.8');
+}
+
+//CHECK#9
+if (.9E0 !== 0.9) {
+ $ERROR('#9: .9E0 === 0.9');
+}
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A3.1_T1.js b/js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A3.1_T1.js
new file mode 100644
index 000000000..0e34b120b
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A3.1_T1.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.
+
+/**
+ * DecimalLiteral :: DecimalIntegerLiteral.
+ *
+ * @path ch07/7.8/7.8.3/S7.8.3_A3.1_T1.js
+ * @description DecimalIntegerLiteral :: 0, NoNZeroDigit
+ */
+
+//CHECK#0
+if (0. !== 0) {
+ $ERROR('#0: 0. === 0');
+}
+
+//CHECK#1
+if (1. !== 1) {
+ $ERROR('#1: 1. === 1');
+}
+
+//CHECK#2
+if (2. !== 2) {
+ $ERROR('#2: 2. === 2');
+}
+
+//CHECK#3
+if (3. !== 3) {
+ $ERROR('#3: 3. === 3');
+}
+
+//CHECK#4
+if (4. !== 4) {
+ $ERROR('#4: 4. === 4');
+}
+
+//CHECK#5
+if (5. !== 5) {
+ $ERROR('#5: 5. === 5');
+}
+
+//CHECK#6
+if (6. !== 6) {
+ $ERROR('#6: 6. === 6');
+}
+
+//CHECK#7
+if (7. !== 7) {
+ $ERROR('#7: 7. === 7');
+}
+
+//CHECK#8
+if (8. !== 8) {
+ $ERROR('#8: 8. === 8');
+}
+
+//CHECK#9
+if (9. !== 9) {
+ $ERROR('#9: 9. === 9');
+}
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A3.1_T2.js b/js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A3.1_T2.js
new file mode 100644
index 000000000..6dcdd78e3
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A3.1_T2.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.
+
+/**
+ * DecimalLiteral :: DecimalIntegerLiteral.
+ *
+ * @path ch07/7.8/7.8.3/S7.8.3_A3.1_T2.js
+ * @description DecimalIntegerLiteral :: NoNZeroDigit DecimalDigigts
+ */
+
+//CHECK#1
+if (11. !== 11) {
+ $ERROR('#1: 11. === 11');
+}
+
+//CHECK#2
+if (22. !== 22) {
+ $ERROR('#2: 22. === 22');
+}
+
+//CHECK#3
+if (33. !== 33) {
+ $ERROR('#3: 33. === 33');
+}
+
+//CHECK#4
+if (44. !== 44) {
+ $ERROR('#4: 44. === 44');
+}
+
+//CHECK#5
+if (55. !== 55) {
+ $ERROR('#5: 55. === 55');
+}
+
+//CHECK#6
+if (66. !== 66) {
+ $ERROR('#6: 66. === 66');
+}
+
+//CHECK#7
+if (77. !== 77) {
+ $ERROR('#7: 77. === 77');
+}
+
+//CHECK#8
+if (88. !== 88) {
+ $ERROR('#8: 88. === 88');
+}
+
+//CHECK#9
+if (99. !== 99) {
+ $ERROR('#9: 99. === 99');
+}
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A3.2_T1.js b/js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A3.2_T1.js
new file mode 100644
index 000000000..5c0a5ffa7
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A3.2_T1.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.
+
+/**
+ * DecimalLiteral :: DecimalIntegerLiteral. DecimalDigits
+ *
+ * @path ch07/7.8/7.8.3/S7.8.3_A3.2_T1.js
+ * @description After DecimalIntegerLiteral. used ZeroDigit
+ */
+
+//CHECK#0
+if (0.0 !== 0) {
+ $ERROR('#0: 0.0 === 0');
+}
+
+//CHECK#1
+if (1.0 !== 1) {
+ $ERROR('#1: 1.0 === 1');
+}
+
+//CHECK#2
+if (2.0 !== 2) {
+ $ERROR('#2: 2.0 === 2');
+}
+
+//CHECK#3
+if (3.0 !== 3) {
+ $ERROR('#3: 3.0 === 3');
+}
+
+//CHECK#4
+if (4.0 !== 4) {
+ $ERROR('#4: 4.0 === 4');
+}
+
+//CHECK#5
+if (5.0 !== 5) {
+ $ERROR('#5: 5.0 === 5');
+}
+
+//CHECK#6
+if (6.0 !== 6) {
+ $ERROR('#6: 6.0 === 6');
+}
+
+//CHECK#7
+if (7.0 !== 7) {
+ $ERROR('#7: 7.0 === 7');
+}
+
+//CHECK#8
+if (8.0 !== 8) {
+ $ERROR('#8: 8.0 === 8');
+}
+
+//CHECK#9
+if (9.0 !== 9) {
+ $ERROR('#9: 9.0 === 9');
+}
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A3.2_T2.js b/js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A3.2_T2.js
new file mode 100644
index 000000000..110c931e5
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A3.2_T2.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.
+
+/**
+ * DecimalLiteral :: DecimalIntegerLiteral. DecimalDigits
+ *
+ * @path ch07/7.8/7.8.3/S7.8.3_A3.2_T2.js
+ * @description After DecimalIntegerLiteral. used ZeroDigits
+ */
+
+//CHECK#0
+if (0.00 !== 0) {
+ $ERROR('#0: 0.00 === 0');
+}
+
+//CHECK#1
+if (1.00 !== 1) {
+ $ERROR('#1: 1.00 === 1');
+}
+
+//CHECK#2
+if (2.00 !== 2) {
+ $ERROR('#2: 2.00 === 2');
+}
+
+//CHECK#3
+if (3.00 !== 3) {
+ $ERROR('#3: 3.00 === 3');
+}
+
+//CHECK#4
+if (4.00 !== 4) {
+ $ERROR('#4: 4.00 === 4');
+}
+
+//CHECK#5
+if (5.00 !== 5) {
+ $ERROR('#5: 5.00 === 5');
+}
+
+//CHECK#6
+if (6.00 !== 6) {
+ $ERROR('#6: 6.00 === 6');
+}
+
+//CHECK#7
+if (7.00 !== 7) {
+ $ERROR('#7: 7.00 === 7');
+}
+
+//CHECK#8
+if (8.00 !== 8) {
+ $ERROR('#8: 8.00 === 8');
+}
+
+//CHECK#9
+if (9.00 !== 9) {
+ $ERROR('#9: 9.00 === 9');
+}
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A3.2_T3.js b/js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A3.2_T3.js
new file mode 100644
index 000000000..fe293b95b
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A3.2_T3.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.
+
+/**
+ * DecimalLiteral :: DecimalIntegerLiteral. DecimalDigits
+ *
+ * @path ch07/7.8/7.8.3/S7.8.3_A3.2_T3.js
+ * @description After DecimalIntegerLiteral. used NoNZeroDigit
+ */
+
+//CHECK#0
+if (0.0 !== 0.0) {
+ $ERROR('#0: 0.0 === 0.0');
+}
+
+//CHECK#1
+if (1.1 !== 1.1) {
+ $ERROR('#1: 1.1 === 1.1');
+}
+
+//CHECK#2
+if (2.2 !== 2.2) {
+ $ERROR('#2: 2.2 === 2.2');
+}
+
+//CHECK#3
+if (3.3 !== 3.3) {
+ $ERROR('#3: 3.3 === 3.3');
+}
+
+//CHECK#4
+if (4.4 !== 4.4) {
+ $ERROR('#4: 4.4 === 4.4');
+}
+
+//CHECK#5
+if (5.5 !== 5.5) {
+ $ERROR('#5: 5.5 === 5.5');
+}
+
+//CHECK#6
+if (6.6 !== 6.6) {
+ $ERROR('#6: 6.6 === 6.6');
+}
+
+//CHECK#7
+if (7.7 !== 7.7) {
+ $ERROR('#7: 7.7 === 7.7');
+}
+
+//CHECK#8
+if (8.8 !== 8.8) {
+ $ERROR('#8: 8..8 === 8.8');
+}
+
+//CHECK#9
+if (9.9 !== 9.9) {
+ $ERROR('#9: 9.9 === 9.9');
+}
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A3.3_T1.js b/js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A3.3_T1.js
new file mode 100644
index 000000000..e0a6edba5
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A3.3_T1.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.
+
+/**
+ * DecimalLiteral :: DecimalIntegerLiteral. ExponentPart
+ *
+ * @path ch07/7.8/7.8.3/S7.8.3_A3.3_T1.js
+ * @description ExponentPart :: e DecimalDigits
+ */
+
+//CHECK#0
+if (0.e1 !== 0) {
+ $ERROR('#0: 0.e1 === 0');
+}
+
+//CHECK#1
+if (1.e1 !== 10) {
+ $ERROR('#1: 1.e1 === 10');
+}
+
+//CHECK#2
+if (2.e1 !== 20) {
+ $ERROR('#2: 2.e1 === 20');
+}
+
+//CHECK#3
+if (3.e1 !== 30) {
+ $ERROR('#3: 3.e1 === 30');
+}
+
+//CHECK#4
+if (4.e1 !== 40) {
+ $ERROR('#4: 4.e1 === 40');
+}
+
+//CHECK#5
+if (5.e1 !== 50) {
+ $ERROR('#5: 5.e1 === 50');
+}
+
+//CHECK#6
+if (6.e1 !== 60) {
+ $ERROR('#6: 6.e1 === 60');
+}
+
+//CHECK#7
+if (7.e1 !== 70) {
+ $ERROR('#7: 7.e1 === 70');
+}
+
+//CHECK#8
+if (8.e1 !== 80) {
+ $ERROR('#8: 8.e1 === 80');
+}
+
+//CHECK#9
+if (9.e1 !== 90) {
+ $ERROR('#9: 9.e1 === 90');
+}
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A3.3_T2.js b/js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A3.3_T2.js
new file mode 100644
index 000000000..034d2c548
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A3.3_T2.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.
+
+/**
+ * DecimalLiteral :: DecimalIntegerLiteral. ExponentPart
+ *
+ * @path ch07/7.8/7.8.3/S7.8.3_A3.3_T2.js
+ * @description ExponentPart :: E DecimalDigits
+ */
+
+//CHECK#0
+if (0.E1 !== 0) {
+ $ERROR('#0: 0.E1 === 0');
+}
+
+//CHECK#1
+if (1.E1 !== 10) {
+ $ERROR('#1: 1.E1 === 10');
+}
+
+//CHECK#2
+if (2.E1 !== 20) {
+ $ERROR('#2: 2.E1 === 20');
+}
+
+//CHECK#3
+if (3.E1 !== 30) {
+ $ERROR('#3: 3.E1 === 30');
+}
+
+//CHECK#4
+if (4.E1 !== 40) {
+ $ERROR('#4: 4.E1 === 40');
+}
+
+//CHECK#5
+if (5.E1 !== 50) {
+ $ERROR('#5: 5.E1 === 50');
+}
+
+//CHECK#6
+if (6.E1 !== 60) {
+ $ERROR('#6: 6.E1 === 60');
+}
+
+//CHECK#7
+if (7.E1 !== 70) {
+ $ERROR('#7: 7.E1 === 70');
+}
+
+//CHECK#8
+if (8.E1 !== 80) {
+ $ERROR('#8: 8.E1 === 80');
+}
+
+//CHECK#9
+if (9.E1 !== 90) {
+ $ERROR('#9: 9.E1 === 90');
+}
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A3.3_T3.js b/js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A3.3_T3.js
new file mode 100644
index 000000000..a60c83d58
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A3.3_T3.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.
+
+/**
+ * DecimalLiteral :: DecimalIntegerLiteral. ExponentPart
+ *
+ * @path ch07/7.8/7.8.3/S7.8.3_A3.3_T3.js
+ * @description ExponentPart :: e -DecimalDigits
+ */
+
+//CHECK#0
+if (0.e-1 !== 0) {
+ $ERROR('#0: 0.e-1 === 0');
+}
+
+//CHECK#1
+if (1.e-1 !== 0.1) {
+ $ERROR('#1: 1.e-1 === 0.1');
+}
+
+//CHECK#2
+if (2.e-1 !== 0.2) {
+ $ERROR('#2: 2.e-1 === 0.2');
+}
+
+//CHECK#3
+if (3.e-1 !== 0.3) {
+ $ERROR('#3: 3.e-1 === 0.3');
+}
+
+//CHECK#4
+if (4.e-1 !== 0.4) {
+ $ERROR('#4: 4.e-1 === 0.4');
+}
+
+//CHECK#5
+if (5.e-1 !== 0.5) {
+ $ERROR('#5: 5.e-1 === 0.5');
+}
+
+//CHECK#6
+if (6.e-1 !== 0.6) {
+ $ERROR('#6: 6.e-1 === 0.6');
+}
+
+//CHECK#7
+if (7.e-1 !== 0.7) {
+ $ERROR('#7: 7.e-1 === 0.7');
+}
+
+//CHECK#8
+if (8.e-1 !== 0.8) {
+ $ERROR('#8: 8.e-1 === 0.8');
+}
+
+//CHECK#9
+if (9.e-1 !== 0.9) {
+ $ERROR('#9: 9.e-1 === 0.9');
+}
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A3.3_T4.js b/js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A3.3_T4.js
new file mode 100644
index 000000000..9dc5be7a2
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A3.3_T4.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.
+
+/**
+ * DecimalLiteral :: DecimalIntegerLiteral. ExponentPart
+ *
+ * @path ch07/7.8/7.8.3/S7.8.3_A3.3_T4.js
+ * @description ExponentPart :: E -DecimalDigits
+ */
+
+//CHECK#0
+if (0.E-1 !== 0) {
+ $ERROR('#0: 0.E-1 === 0');
+}
+
+//CHECK#1
+if (1.E-1 !== 0.1) {
+ $ERROR('#1: 1.E-1 === 0.1');
+}
+
+//CHECK#2
+if (2.E-1 !== 0.2) {
+ $ERROR('#2: 2.E-1 === 0.2');
+}
+
+//CHECK#3
+if (3.E-1 !== 0.3) {
+ $ERROR('#3: 3.E-1 === 0.3');
+}
+
+//CHECK#4
+if (4.E-1 !== 0.4) {
+ $ERROR('#4: 4.E-1 === 0.4');
+}
+
+//CHECK#5
+if (5.E-1 !== 0.5) {
+ $ERROR('#5: 5.E-1 === 0.5');
+}
+
+//CHECK#6
+if (6.E-1 !== 0.6) {
+ $ERROR('#6: 6.E-1 === 0.6');
+}
+
+//CHECK#7
+if (7.E-1 !== 0.7) {
+ $ERROR('#7: 7.E-1 === 0.7');
+}
+
+//CHECK#8
+if (8.E-1 !== 0.8) {
+ $ERROR('#8: 8.E-1 === 0.8');
+}
+
+//CHECK#9
+if (9.E-1 !== 0.9) {
+ $ERROR('#9: 9.E-1 === 0.9');
+}
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A3.3_T5.js b/js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A3.3_T5.js
new file mode 100644
index 000000000..9b2e9b820
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A3.3_T5.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.
+
+/**
+ * DecimalLiteral :: DecimalIntegerLiteral. ExponentPart
+ *
+ * @path ch07/7.8/7.8.3/S7.8.3_A3.3_T5.js
+ * @description ExponentPart :: e +DecimalDigits
+ */
+
+//CHECK#0
+if (0.e+1 !== 0) {
+ $ERROR('#0: 0.e+1 === 0');
+}
+
+//CHECK#1
+if (1.e+1 !== 10) {
+ $ERROR('#1: 1.e+1 === 10');
+}
+
+//CHECK#2
+if (2.e+1 !== 20) {
+ $ERROR('#2: 2.e+1 === 20');
+}
+
+//CHECK#3
+if (3.e+1 !== 30) {
+ $ERROR('#3: 3.e+1 === 30');
+}
+
+//CHECK#4
+if (4.e+1 !== 40) {
+ $ERROR('#4: 4.e+1 === 40');
+}
+
+//CHECK#5
+if (5.e+1 !== 50) {
+ $ERROR('#5: 5.e+1 === 50');
+}
+
+//CHECK#6
+if (6.e+1 !== 60) {
+ $ERROR('#6: 6.e+1 === 60');
+}
+
+//CHECK#7
+if (7.e+1 !== 70) {
+ $ERROR('#7: 7.e+1 === 70');
+}
+
+//CHECK#8
+if (8.e+1 !== 80) {
+ $ERROR('#8: 8.e+1 === 80');
+}
+
+//CHECK#9
+if (9.e+1 !== 90) {
+ $ERROR('#9: 9.e+1 === 90');
+}
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A3.3_T6.js b/js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A3.3_T6.js
new file mode 100644
index 000000000..33c8a84c9
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A3.3_T6.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.
+
+/**
+ * DecimalLiteral :: DecimalIntegerLiteral. ExponentPart
+ *
+ * @path ch07/7.8/7.8.3/S7.8.3_A3.3_T6.js
+ * @description ExponentPart :: E +DecimalDigits
+ */
+
+//CHECK#0
+if (0.E+1 !== 0) {
+ $ERROR('#0: 0.E+1 === 0');
+}
+
+//CHECK#1
+if (1.E+1 !== 10) {
+ $ERROR('#1: 1.E+1 === 10');
+}
+
+//CHECK#2
+if (2.E+1 !== 20) {
+ $ERROR('#2: 2.E+1 === 20');
+}
+
+//CHECK#3
+if (3.E+1 !== 30) {
+ $ERROR('#3: 3.E+1 === 30');
+}
+
+//CHECK#4
+if (4.E+1 !== 40) {
+ $ERROR('#4: 4.E+1 === 40');
+}
+
+//CHECK#5
+if (5.E+1 !== 50) {
+ $ERROR('#5: 5.E+1 === 50');
+}
+
+//CHECK#6
+if (6.E+1 !== 60) {
+ $ERROR('#6: 6.E+1 === 60');
+}
+
+//CHECK#7
+if (7.E+1 !== 70) {
+ $ERROR('#7: 7.E+1 === 70');
+}
+
+//CHECK#8
+if (8.E+1 !== 80) {
+ $ERROR('#8: 8.E+1 === 80');
+}
+
+//CHECK#9
+if (9.E+1 !== 90) {
+ $ERROR('#9: 9.E+1 === 90');
+}
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A3.3_T7.js b/js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A3.3_T7.js
new file mode 100644
index 000000000..628581d66
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A3.3_T7.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.
+
+/**
+ * DecimalLiteral :: DecimalIntegerLiteral. ExponentPart
+ *
+ * @path ch07/7.8/7.8.3/S7.8.3_A3.3_T7.js
+ * @description ExponentPart :: e 0
+ */
+
+//CHECK#0
+if (0.e0 !== 0) {
+ $ERROR('#0: 0.e0 === 0');
+}
+
+//CHECK#1
+if (1.e0 !== 1) {
+ $ERROR('#1: 1.e0 === 1');
+}
+
+//CHECK#2
+if (2.e0 !== 2) {
+ $ERROR('#2: 2.e0 === 2');
+}
+
+//CHECK#3
+if (3.e0 !== 3) {
+ $ERROR('#3: 3.e0 === 3');
+}
+
+//CHECK#4
+if (4.e0 !== 4) {
+ $ERROR('#4: 4.e0 === 4');
+}
+
+//CHECK#5
+if (5.e0 !== 5) {
+ $ERROR('#5: 5.e0 === 5');
+}
+
+//CHECK#6
+if (6.e0 !== 6) {
+ $ERROR('#6: 6.e0 === 6');
+}
+
+//CHECK#7
+if (7.e0 !== 7) {
+ $ERROR('#7: 7.e0 === 7');
+}
+
+//CHECK#8
+if (8.e0 !== 8) {
+ $ERROR('#8: 8.e0 === 8');
+}
+
+//CHECK#9
+if (9.e0 !== 9) {
+ $ERROR('#9: 9.e0 === 9');
+}
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A3.3_T8.js b/js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A3.3_T8.js
new file mode 100644
index 000000000..b6f249124
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A3.3_T8.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.
+
+/**
+ * DecimalLiteral :: DecimalIntegerLiteral. ExponentPart
+ *
+ * @path ch07/7.8/7.8.3/S7.8.3_A3.3_T8.js
+ * @description ExponentPart :: E 0
+ */
+
+//CHECK#0
+if (0.E0 !== 0) {
+ $ERROR('#0: 0.E0 === 0');
+}
+
+//CHECK#1
+if (1.E0 !== 1) {
+ $ERROR('#1: 1.E0 === 1');
+}
+
+//CHECK#2
+if (2.E0 !== 2) {
+ $ERROR('#2: 2.E0 === 2');
+}
+
+//CHECK#3
+if (3.E0 !== 3) {
+ $ERROR('#3: 3.E0 === 3');
+}
+
+//CHECK#4
+if (4.E0 !== 4) {
+ $ERROR('#4: 4.E0 === 4');
+}
+
+//CHECK#5
+if (5.E0 !== 5) {
+ $ERROR('#5: 5.E0 === 5');
+}
+
+//CHECK#6
+if (6.E0 !== 6) {
+ $ERROR('#6: 6.E0 === 6');
+}
+
+//CHECK#7
+if (7.E0 !== 7) {
+ $ERROR('#7: 7.E0 === 7');
+}
+
+//CHECK#8
+if (8.E0 !== 8) {
+ $ERROR('#8: 8.E0 === 8');
+}
+
+//CHECK#9
+if (9.E0 !== 9) {
+ $ERROR('#9: 9.E0 === 9');
+}
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A3.4_T1.js b/js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A3.4_T1.js
new file mode 100644
index 000000000..15ad5b224
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A3.4_T1.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.
+
+/**
+ * DecimalLiteral :: DecimalIntegerLiteral. DecimalDigigts ExponentPart
+ *
+ * @path ch07/7.8/7.8.3/S7.8.3_A3.4_T1.js
+ * @description ExponentPart :: e DecimalDigits
+ */
+
+//CHECK#0
+if (0.0e1 !== 0) {
+ $ERROR('#0: 0.0e1 === 0');
+}
+
+//CHECK#1
+if (1.1e1 !== 11) {
+ $ERROR('#1: 1.1e1 === 11');
+}
+
+//CHECK#2
+if (2.2e1 !== 22) {
+ $ERROR('#2: 2.2e1 === 22');
+}
+
+//CHECK#3
+if (3.3e1 !== 33) {
+ $ERROR('#3: 3.3e1 === 33');
+}
+
+//CHECK#4
+if (4.4e1 !== 44) {
+ $ERROR('#4: 4.4e1 === 44');
+}
+
+//CHECK#5
+if (5.5e1 !== 55) {
+ $ERROR('#5: 5.5e1 === 55');
+}
+
+//CHECK#6
+if (6.6e1 !== 66) {
+ $ERROR('#6: 6.e1 === 66');
+}
+
+//CHECK#7
+if (7.7e1 !== 77) {
+ $ERROR('#7: 7.7e1 === 77');
+}
+
+//CHECK#8
+if (8.8e1 !== 88) {
+ $ERROR('#8: 8.8e1 === 88');
+}
+
+//CHECK#9
+if (9.9e1 !== 99) {
+ $ERROR('#9: 9.9e1 === 99');
+}
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A3.4_T2.js b/js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A3.4_T2.js
new file mode 100644
index 000000000..a3a67a30e
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A3.4_T2.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.
+
+/**
+ * DecimalLiteral :: DecimalIntegerLiteral. DecimalDigigts ExponentPart
+ *
+ * @path ch07/7.8/7.8.3/S7.8.3_A3.4_T2.js
+ * @description ExponentPart :: E DecimalDigits
+ */
+
+//CHECK#0
+if (0.0E1 !== 0) {
+ $ERROR('#0: 0.0E1 === 0');
+}
+
+//CHECK#1
+if (1.1E1 !== 11) {
+ $ERROR('#1: 1.1E1 === 11');
+}
+
+//CHECK#2
+if (2.2E1 !== 22) {
+ $ERROR('#2: 2.2E1 === 22');
+}
+
+//CHECK#3
+if (3.3E1 !== 33) {
+ $ERROR('#3: 3.3E1 === 33');
+}
+
+//CHECK#4
+if (4.4E1 !== 44) {
+ $ERROR('#4: 4.4E1 === 44');
+}
+
+//CHECK#5
+if (5.5E1 !== 55) {
+ $ERROR('#5: 5.5E1 === 55');
+}
+
+//CHECK#6
+if (6.6E1 !== 66) {
+ $ERROR('#6: 6.E1 === 66');
+}
+
+//CHECK#7
+if (7.7E1 !== 77) {
+ $ERROR('#7: 7.7E1 === 77');
+}
+
+//CHECK#8
+if (8.8E1 !== 88) {
+ $ERROR('#8: 8.8E1 === 88');
+}
+
+//CHECK#9
+if (9.9E1 !== 99) {
+ $ERROR('#9: 9.9E1 === 99');
+}
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A3.4_T3.js b/js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A3.4_T3.js
new file mode 100644
index 000000000..fef945e47
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A3.4_T3.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.
+
+/**
+ * DecimalLiteral :: DecimalIntegerLiteral. DecimalDigigts ExponentPart
+ *
+ * @path ch07/7.8/7.8.3/S7.8.3_A3.4_T3.js
+ * @description ExponentPart :: e -DecimalDigits
+ */
+
+//CHECK#0
+if (0.0e-1 !== 0) {
+ $ERROR('#0: 0.0e-1 === 0');
+}
+
+//CHECK#1
+if (1.1e-1 !== 0.11) {
+ $ERROR('#1: 1.1e-1 === 0.11');
+}
+
+//CHECK#2
+if (2.2e-1 !== 0.22) {
+ $ERROR('#2: 2.2e-1 === 0.22');
+}
+
+//CHECK#3
+if (3.3e-1 !== 0.33) {
+ $ERROR('#3: 3.3e-1 === 0.33');
+}
+
+//CHECK#4
+if (4.4e-1 !== 0.44) {
+ $ERROR('#4: 4.4e-1 === 0.44');
+}
+
+//CHECK#5
+if (5.5e-1 !== 0.55) {
+ $ERROR('#5: 5.5e-1 === 0.55');
+}
+
+//CHECK#6
+if (6.6e-1 !== 0.66) {
+ $ERROR('#6: 6.e-1 === 0.66');
+}
+
+//CHECK#7
+if (7.7e-1 !== 0.77) {
+ $ERROR('#7: 7.7e-1 === 0.77');
+}
+
+//CHECK#8
+if (8.8e-1 !== 0.88) {
+ $ERROR('#8: 8.8e-1 === 0.88');
+}
+
+//CHECK#9
+if (9.9e-1 !== 0.99) {
+ $ERROR('#9: 9.9e-1 === 0.99');
+}
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A3.4_T4.js b/js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A3.4_T4.js
new file mode 100644
index 000000000..f68532fd8
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A3.4_T4.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.
+
+/**
+ * DecimalLiteral :: DecimalIntegerLiteral. DecimalDigigts ExponentPart
+ *
+ * @path ch07/7.8/7.8.3/S7.8.3_A3.4_T4.js
+ * @description ExponentPart :: E -DecimalDigits
+ */
+
+//CHECK#0
+if (0.0E-1 !== 0) {
+ $ERROR('#0: 0.0E-1 === 0');
+}
+
+//CHECK#1
+if (1.1E-1 !== 0.11) {
+ $ERROR('#1: 1.1E-1 === 0.11');
+}
+
+//CHECK#2
+if (2.2E-1 !== 0.22) {
+ $ERROR('#2: 2.2E-1 === 0.22');
+}
+
+//CHECK#3
+if (3.3E-1 !== 0.33) {
+ $ERROR('#3: 3.3E-1 === 0.33');
+}
+
+//CHECK#4
+if (4.4E-1 !== 0.44) {
+ $ERROR('#4: 4.4E-1 === 0.44');
+}
+
+//CHECK#5
+if (5.5E-1 !== 0.55) {
+ $ERROR('#5: 5.5E-1 === 0.55');
+}
+
+//CHECK#6
+if (6.6E-1 !== 0.66) {
+ $ERROR('#6: 6.E-1 === 0.66');
+}
+
+//CHECK#7
+if (7.7E-1 !== 0.77) {
+ $ERROR('#7: 7.7E-1 === 0.77');
+}
+
+//CHECK#8
+if (8.8E-1 !== 0.88) {
+ $ERROR('#8: 8.8E-1 === 0.88');
+}
+
+//CHECK#9
+if (9.9E-1 !== 0.99) {
+ $ERROR('#9: 9.9E-1 === 0.99');
+}
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A3.4_T5.js b/js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A3.4_T5.js
new file mode 100644
index 000000000..161105928
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A3.4_T5.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.
+
+/**
+ * DecimalLiteral :: DecimalIntegerLiteral. DecimalDigigts ExponentPart
+ *
+ * @path ch07/7.8/7.8.3/S7.8.3_A3.4_T5.js
+ * @description ExponentPart :: e +DecimalDigits
+ */
+
+//CHECK#0
+if (0.0e+1 !== 0) {
+ $ERROR('#0: 0.0e+1 === 0');
+}
+
+//CHECK#1
+if (1.1e+1 !== 11) {
+ $ERROR('#1: 1.1e+1 === 11');
+}
+
+//CHECK#2
+if (2.2e+1 !== 22) {
+ $ERROR('#2: 2.2e+1 === 22');
+}
+
+//CHECK#3
+if (3.3e+1 !== 33) {
+ $ERROR('#3: 3.3e+1 === 33');
+}
+
+//CHECK#4
+if (4.4e+1 !== 44) {
+ $ERROR('#4: 4.4e+1 === 44');
+}
+
+//CHECK#5
+if (5.5e+1 !== 55) {
+ $ERROR('#5: 5.5e+1 === 55');
+}
+
+//CHECK#6
+if (6.6e+1 !== 66) {
+ $ERROR('#6: 6.e+1 === 66');
+}
+
+//CHECK#7
+if (7.7e+1 !== 77) {
+ $ERROR('#7: 7.7e+1 === 77');
+}
+
+//CHECK#8
+if (8.8e+1 !== 88) {
+ $ERROR('#8: 8.8e+1 === 88');
+}
+
+//CHECK#9
+if (9.9e+1 !== 99) {
+ $ERROR('#9: 9.9e+1 === 99');
+}
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A3.4_T6.js b/js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A3.4_T6.js
new file mode 100644
index 000000000..5d28f6609
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A3.4_T6.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.
+
+/**
+ * DecimalLiteral :: DecimalIntegerLiteral. DecimalDigigts ExponentPart
+ *
+ * @path ch07/7.8/7.8.3/S7.8.3_A3.4_T6.js
+ * @description ExponentPart :: E +DecimalDigits
+ */
+
+//CHECK#0
+if (0.0E+1 !== 0) {
+ $ERROR('#0: 0.0E+1 === 0');
+}
+
+//CHECK#1
+if (1.1E+1 !== 11) {
+ $ERROR('#1: 1.1E+1 === 11');
+}
+
+//CHECK#2
+if (2.2E+1 !== 22) {
+ $ERROR('#2: 2.2E+1 === 22');
+}
+
+//CHECK#3
+if (3.3E+1 !== 33) {
+ $ERROR('#3: 3.3E+1 === 33');
+}
+
+//CHECK#4
+if (4.4E+1 !== 44) {
+ $ERROR('#4: 4.4E+1 === 44');
+}
+
+//CHECK#5
+if (5.5E+1 !== 55) {
+ $ERROR('#5: 5.5E+1 === 55');
+}
+
+//CHECK#6
+if (6.6E+1 !== 66) {
+ $ERROR('#6: 6.E+1 === 66');
+}
+
+//CHECK#7
+if (7.7E+1 !== 77) {
+ $ERROR('#7: 7.7E+1 === 77');
+}
+
+//CHECK#8
+if (8.8E+1 !== 88) {
+ $ERROR('#8: 8.8E+1 === 88');
+}
+
+//CHECK#9
+if (9.9E+1 !== 99) {
+ $ERROR('#9: 9.9E+1 === 99');
+}
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A3.4_T7.js b/js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A3.4_T7.js
new file mode 100644
index 000000000..b5ebe39d4
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A3.4_T7.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.
+
+/**
+ * DecimalLiteral :: DecimalIntegerLiteral. DecimalDigigts ExponentPart
+ *
+ * @path ch07/7.8/7.8.3/S7.8.3_A3.4_T7.js
+ * @description ExponentPart :: e 0
+ */
+
+//CHECK#0
+if (0.0e0 !== 0.0) {
+ $ERROR('#0: 0.0e0 === 0.0');
+}
+
+//CHECK#1
+if (1.1e0 !== 1.1) {
+ $ERROR('#1: 1.1e0 === 1.1');
+}
+
+//CHECK#2
+if (2.2e0 !== 2.2) {
+ $ERROR('#2: 2.2e0 === 2.2');
+}
+
+//CHECK#3
+if (3.3e0 !== 3.3) {
+ $ERROR('#3: 3.3e0 === 3.3');
+}
+
+//CHECK#4
+if (4.4e0 !== 4.4) {
+ $ERROR('#4: 4.4e0 === 4.4');
+}
+
+//CHECK#5
+if (5.5e0 !== 5.5) {
+ $ERROR('#5: 5.5e0 === 5.5');
+}
+
+//CHECK#6
+if (6.6e0 !== 6.6) {
+ $ERROR('#6: 6.e0 === 6.6');
+}
+
+//CHECK#7
+if (7.7e0 !== 7.7) {
+ $ERROR('#7: 7.7e0 === 7.7');
+}
+
+//CHECK#8
+if (8.8e0 !== 8.8) {
+ $ERROR('#8: 8.8e0 === 8.8');
+}
+
+//CHECK#9
+if (9.9e0 !== 9.9) {
+ $ERROR('#9: 9.9e0 === 9.9');
+}
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A3.4_T8.js b/js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A3.4_T8.js
new file mode 100644
index 000000000..36b643364
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A3.4_T8.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.
+
+/**
+ * DecimalLiteral :: DecimalIntegerLiteral. DecimalDigigts ExponentPart
+ *
+ * @path ch07/7.8/7.8.3/S7.8.3_A3.4_T8.js
+ * @description ExponentPart :: E 0
+ */
+
+//CHECK#0
+if (0.0E0 !== 0.0) {
+ $ERROR('#0: 0.0E0 === 0.0');
+}
+
+//CHECK#1
+if (1.1E0 !== 1.1) {
+ $ERROR('#1: 1.1E0 === 1.1');
+}
+
+//CHECK#2
+if (2.2E0 !== 2.2) {
+ $ERROR('#2: 2.2E0 === 2.2');
+}
+
+//CHECK#3
+if (3.3E0 !== 3.3) {
+ $ERROR('#3: 3.3E0 === 3.3');
+}
+
+//CHECK#4
+if (4.4E0 !== 4.4) {
+ $ERROR('#4: 4.4E0 === 4.4');
+}
+
+//CHECK#5
+if (5.5E0 !== 5.5) {
+ $ERROR('#5: 5.5E0 === 5.5');
+}
+
+//CHECK#6
+if (6.6E0 !== 6.6) {
+ $ERROR('#6: 6.E0 === 6.6');
+}
+
+//CHECK#7
+if (7.7E0 !== 7.7) {
+ $ERROR('#7: 7.7E0 === 7.7');
+}
+
+//CHECK#8
+if (8.8E0 !== 8.8) {
+ $ERROR('#8: 8.8E0 === 8.8');
+}
+
+//CHECK#9
+if (9.9E0 !== 9.9) {
+ $ERROR('#9: 9.9E0 === 9.9');
+}
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A4.1_T1.js b/js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A4.1_T1.js
new file mode 100644
index 000000000..eaed76725
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A4.1_T1.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.
+
+/**
+ * DecimalLiteral :: ExponentPart is incorrect
+ *
+ * @path ch07/7.8/7.8.3/S7.8.3_A4.1_T1.js
+ * @description ExponentPart :: e DecimalDigits
+ * @negative
+ */
+
+//CHECK#1
+e1
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A4.1_T2.js b/js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A4.1_T2.js
new file mode 100644
index 000000000..306ed8ba2
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A4.1_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.
+
+/**
+ * DecimalLiteral :: ExponentPart is incorrect
+ *
+ * @path ch07/7.8/7.8.3/S7.8.3_A4.1_T2.js
+ * @description ExponentPart :: E DecimalDigits
+ * @negative
+ */
+
+//CHECK#1
+E1
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A4.1_T3.js b/js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A4.1_T3.js
new file mode 100644
index 000000000..b7c5e5a9f
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A4.1_T3.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.
+
+/**
+ * DecimalLiteral :: ExponentPart is incorrect
+ *
+ * @path ch07/7.8/7.8.3/S7.8.3_A4.1_T3.js
+ * @description ExponentPart :: e DecimalDigits
+ * @negative
+ */
+
+//CHECK#1
+e-1
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A4.1_T4.js b/js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A4.1_T4.js
new file mode 100644
index 000000000..fb21413d4
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A4.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.
+
+/**
+ * DecimalLiteral :: ExponentPart is incorrect
+ *
+ * @path ch07/7.8/7.8.3/S7.8.3_A4.1_T4.js
+ * @description ExponentPart :: E DecimalDigits
+ * @negative
+ */
+
+//CHECK#1
+E-1
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A4.1_T5.js b/js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A4.1_T5.js
new file mode 100644
index 000000000..89719f0f7
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A4.1_T5.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.
+
+/**
+ * DecimalLiteral :: ExponentPart is incorrect
+ *
+ * @path ch07/7.8/7.8.3/S7.8.3_A4.1_T5.js
+ * @description ExponentPart :: e DecimalDigits
+ * @negative
+ */
+
+//CHECK#1
+e+1
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A4.1_T6.js b/js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A4.1_T6.js
new file mode 100644
index 000000000..533e23bc4
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A4.1_T6.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.
+
+/**
+ * DecimalLiteral :: ExponentPart is incorrect
+ *
+ * @path ch07/7.8/7.8.3/S7.8.3_A4.1_T6.js
+ * @description ExponentPart :: E DecimalDigits
+ * @negative
+ */
+
+//CHECK#1
+E+1
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A4.1_T7.js b/js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A4.1_T7.js
new file mode 100644
index 000000000..d6475e50f
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A4.1_T7.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.
+
+/**
+ * DecimalLiteral :: ExponentPart is incorrect
+ *
+ * @path ch07/7.8/7.8.3/S7.8.3_A4.1_T7.js
+ * @description ExponentPart :: e 0
+ * @negative
+ */
+
+//CHECK#1
+e0
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A4.1_T8.js b/js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A4.1_T8.js
new file mode 100644
index 000000000..89e284f4f
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A4.1_T8.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.
+
+/**
+ * DecimalLiteral :: ExponentPart is incorrect
+ *
+ * @path ch07/7.8/7.8.3/S7.8.3_A4.1_T8.js
+ * @description ExponentPart :: E 0
+ * @negative
+ */
+
+//CHECK#1
+E0
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A4.2_T1.js b/js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A4.2_T1.js
new file mode 100644
index 000000000..a925aaed9
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A4.2_T1.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.
+
+/**
+ * ExponentPart :: ExponentIndicator ( /+/-) 0 DecimalDigits is allowed
+ *
+ * @path ch07/7.8/7.8.3/S7.8.3_A4.2_T1.js
+ * @description ExponentIndicator :: e
+ */
+
+//CHECK#0
+if (0e01 !== 0) {
+ $ERROR('#0: 0e01 === 0');
+}
+
+//CHECK#1
+if (1e01 !== 10) {
+ $ERROR('#1: 1e01 === 10');
+}
+
+//CHECK#2
+if (2e01 !== 20) {
+ $ERROR('#2: 2e01 === 20');
+}
+
+//CHECK#3
+if (3e01 !== 30) {
+ $ERROR('#3: 3e01 === 30');
+}
+
+//CHECK#4
+if (4e01 !== 40) {
+ $ERROR('#4: 4e01 === 40');
+}
+
+//CHECK#5
+if (5e01 !== 50) {
+ $ERROR('#5: 5e01 === 50');
+}
+
+//CHECK#6
+if (6e01 !== 60) {
+ $ERROR('#6: 6e01 === 60');
+}
+
+//CHECK#7
+if (7e01 !== 70) {
+ $ERROR('#7: 7e01 === 70');
+}
+
+//CHECK#8
+if (8e01 !== 80) {
+ $ERROR('#8: 8e01 === 80');
+}
+
+//CHECK#9
+if (9e01 !== 90) {
+ $ERROR('#9: 9e01 === 90');
+}
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A4.2_T2.js b/js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A4.2_T2.js
new file mode 100644
index 000000000..bfc6f4eee
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A4.2_T2.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.
+
+/**
+ * ExponentPart :: ExponentIndicator ( /+/-) 0 DecimalDigits is allowed
+ *
+ * @path ch07/7.8/7.8.3/S7.8.3_A4.2_T2.js
+ * @description ExponentIndicator :: E
+ */
+
+//CHECK#0
+if (0E01 !== 0) {
+ $ERROR('#0: 0E01 === 0');
+}
+
+//CHECK#1
+if (1E01 !== 10) {
+ $ERROR('#1: 1E01 === 10');
+}
+
+//CHECK#2
+if (2E01 !== 20) {
+ $ERROR('#2: 2E01 === 20');
+}
+
+//CHECK#3
+if (3E01 !== 30) {
+ $ERROR('#3: 3E01 === 30');
+}
+
+//CHECK#4
+if (4E01 !== 40) {
+ $ERROR('#4: 4E01 === 40');
+}
+
+//CHECK#5
+if (5E01 !== 50) {
+ $ERROR('#5: 5E01 === 50');
+}
+
+//CHECK#6
+if (6E01 !== 60) {
+ $ERROR('#6: 6E01 === 60');
+}
+
+//CHECK#7
+if (7E01 !== 70) {
+ $ERROR('#7: 7E01 === 70');
+}
+
+//CHECK#8
+if (8E01 !== 80) {
+ $ERROR('#8: 8E01 === 80');
+}
+
+//CHECK#9
+if (9E01 !== 90) {
+ $ERROR('#9: 9E01 === 90');
+}
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A4.2_T3.js b/js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A4.2_T3.js
new file mode 100644
index 000000000..15f7bf7bd
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A4.2_T3.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.
+
+/**
+ * ExponentPart :: ExponentIndicator ( /+/-) 0 DecimalDigits is allowed
+ *
+ * @path ch07/7.8/7.8.3/S7.8.3_A4.2_T3.js
+ * @description ExponentIndicator :: e
+ */
+
+//CHECK#0
+if (0e-01 !== 0) {
+ $ERROR('#0: 0e-01 === 0');
+}
+
+//CHECK#1
+if (1e-01 !== 0.1) {
+ $ERROR('#1: 1e-01 === 0.1');
+}
+
+//CHECK#2
+if (2e-01 !== 0.2) {
+ $ERROR('#2: 2e-01 === 0.2');
+}
+
+//CHECK#3
+if (3e-01 !== 0.3) {
+ $ERROR('#3: 3e-01 === 0.3');
+}
+
+//CHECK#4
+if (4e-01 !== 0.4) {
+ $ERROR('#4: 4e-01 === 0.4');
+}
+
+//CHECK#5
+if (5e-01 !== 0.5) {
+ $ERROR('#5: 5e-01 === 0.5');
+}
+
+//CHECK#6
+if (6e-01 !== 0.6) {
+ $ERROR('#6: 6e-01 === 0.6');
+}
+
+//CHECK#7
+if (7e-01 !== 0.7) {
+ $ERROR('#7: 7e-01 === 0.7');
+}
+
+//CHECK#8
+if (8e-01 !== 0.8) {
+ $ERROR('#8: 8e-01 === 0.8');
+}
+
+//CHECK#9
+if (9e-01 !== 0.9) {
+ $ERROR('#9: 9e-01 === 0.9');
+}
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A4.2_T4.js b/js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A4.2_T4.js
new file mode 100644
index 000000000..2682b8f0e
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A4.2_T4.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.
+
+/**
+ * ExponentPart :: ExponentIndicator ( /+/-) 0 DecimalDigits is allowed
+ *
+ * @path ch07/7.8/7.8.3/S7.8.3_A4.2_T4.js
+ * @description ExponentIndicator :: E
+ */
+
+//CHECK#0
+if (0E-01 !== 0) {
+ $ERROR('#0: 0E-01 === 0');
+}
+
+//CHECK#1
+if (1E-01 !== 0.1) {
+ $ERROR('#1: 1E-01 === 0.1');
+}
+
+//CHECK#2
+if (2E-01 !== 0.2) {
+ $ERROR('#2: 2E-01 === 0.2');
+}
+
+//CHECK#3
+if (3E-01 !== 0.3) {
+ $ERROR('#3: 3E-01 === 0.3');
+}
+
+//CHECK#4
+if (4E-01 !== 0.4) {
+ $ERROR('#4: 4E-01 === 0.4');
+}
+
+//CHECK#5
+if (5E-01 !== 0.5) {
+ $ERROR('#5: 5E-01 === 0.5');
+}
+
+//CHECK#6
+if (6E-01 !== 0.6) {
+ $ERROR('#6: 6E-01 === 0.6');
+}
+
+//CHECK#7
+if (7E-01 !== 0.7) {
+ $ERROR('#7: 7E-01 === 0.7');
+}
+
+//CHECK#8
+if (8E-01 !== 0.8) {
+ $ERROR('#8: 8E-01 === 0.8');
+}
+
+//CHECK#9
+if (9E-01 !== 0.9) {
+ $ERROR('#9: 9E-01 === 0.9');
+}
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A4.2_T5.js b/js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A4.2_T5.js
new file mode 100644
index 000000000..386daa930
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A4.2_T5.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.
+
+/**
+ * ExponentPart :: ExponentIndicator ( /+/-) 0 DecimalDigits is allowed
+ *
+ * @path ch07/7.8/7.8.3/S7.8.3_A4.2_T5.js
+ * @description ExponentIndicator :: e
+ */
+
+//CHECK#0
+if (0e+01 !== 0) {
+ $ERROR('#0: 0e+01 === 0');
+}
+
+//CHECK#1
+if (1e+01 !== 10) {
+ $ERROR('#1: 1e+01 === 10');
+}
+
+//CHECK#2
+if (2e+01 !== 20) {
+ $ERROR('#2: 2e+01 === 20');
+}
+
+//CHECK#3
+if (3e+01 !== 30) {
+ $ERROR('#3: 3e+01 === 30');
+}
+
+//CHECK#4
+if (4e+01 !== 40) {
+ $ERROR('#4: 4e+01 === 40');
+}
+
+//CHECK#5
+if (5e+01 !== 50) {
+ $ERROR('#5: 5e+01 === 50');
+}
+
+//CHECK#6
+if (6e+01 !== 60) {
+ $ERROR('#6: 6e+01 === 60');
+}
+
+//CHECK#7
+if (7e+01 !== 70) {
+ $ERROR('#7: 7e+01 === 70');
+}
+
+//CHECK#8
+if (8e+01 !== 80) {
+ $ERROR('#8: 8e+01 === 80');
+}
+
+//CHECK#9
+if (9e+01 !== 90) {
+ $ERROR('#9: 9e+01 === 90');
+}
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A4.2_T6.js b/js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A4.2_T6.js
new file mode 100644
index 000000000..df360f5ea
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A4.2_T6.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.
+
+/**
+ * ExponentPart :: ExponentIndicator ( /+/-) 0 DecimalDigits is allowed
+ *
+ * @path ch07/7.8/7.8.3/S7.8.3_A4.2_T6.js
+ * @description ExponentIndicator :: E
+ */
+
+//CHECK#0
+if (0E+01 !== 0) {
+ $ERROR('#0: 0E+01 === 0');
+}
+
+//CHECK#1
+if (1E+01 !== 10) {
+ $ERROR('#1: 1E+01 === 10');
+}
+
+//CHECK#2
+if (2E+01 !== 20) {
+ $ERROR('#2: 2E+01 === 20');
+}
+
+//CHECK#3
+if (3E+01 !== 30) {
+ $ERROR('#3: 3E+01 === 30');
+}
+
+//CHECK#4
+if (4E+01 !== 40) {
+ $ERROR('#4: 4E+01 === 40');
+}
+
+//CHECK#5
+if (5E+01 !== 50) {
+ $ERROR('#5: 5E+01 === 50');
+}
+
+//CHECK#6
+if (6E+01 !== 60) {
+ $ERROR('#6: 6E+01 === 60');
+}
+
+//CHECK#7
+if (7E+01 !== 70) {
+ $ERROR('#7: 7E+01 === 70');
+}
+
+//CHECK#8
+if (8E+01 !== 80) {
+ $ERROR('#8: 8E+01 === 80');
+}
+
+//CHECK#9
+if (9E+01 !== 90) {
+ $ERROR('#9: 9E+01 === 90');
+}
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A4.2_T7.js b/js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A4.2_T7.js
new file mode 100644
index 000000000..9fbd8a679
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A4.2_T7.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.
+
+/**
+ * ExponentPart :: ExponentIndicator ( /+/-) 0 DecimalDigits is allowed
+ *
+ * @path ch07/7.8/7.8.3/S7.8.3_A4.2_T7.js
+ * @description ExponentIndicator :: e
+ */
+
+//CHECK#0
+if (0e00 !== 0) {
+ $ERROR('#0: 0e00 === 0');
+}
+
+//CHECK#1
+if (1e00 !== 1) {
+ $ERROR('#1: 1e00 === 1');
+}
+
+//CHECK#2
+if (2e00 !== 2) {
+ $ERROR('#2: 2e00 === 2');
+}
+
+//CHECK#3
+if (3e00 !== 3) {
+ $ERROR('#3: 3e00 === 3');
+}
+
+//CHECK#4
+if (4e00 !== 4) {
+ $ERROR('#4: 4e00 === 4');
+}
+
+//CHECK#5
+if (5e00 !== 5) {
+ $ERROR('#5: 5e00 === 5');
+}
+
+//CHECK#6
+if (6e00 !== 6) {
+ $ERROR('#6: 6e00 === 6');
+}
+
+//CHECK#7
+if (7e00 !== 7) {
+ $ERROR('#7: 7e00 === 7');
+}
+
+//CHECK#8
+if (8e00 !== 8) {
+ $ERROR('#8: 8e00 === 8');
+}
+
+//CHECK#9
+if (9e00 !== 9) {
+ $ERROR('#9: 9e00 === 9');
+}
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A4.2_T8.js b/js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A4.2_T8.js
new file mode 100644
index 000000000..2c62351fa
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A4.2_T8.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.
+
+/**
+ * ExponentPart :: ExponentIndicator ( /+/-) 0 DecimalDigits is allowed
+ *
+ * @path ch07/7.8/7.8.3/S7.8.3_A4.2_T8.js
+ * @description ExponentIndicator :: E
+ */
+
+//CHECK#0
+if (0E00 !== 0) {
+ $ERROR('#0: 0E00 === 0');
+}
+
+//CHECK#1
+if (1E00 !== 1) {
+ $ERROR('#1: 1E00 === 1');
+}
+
+//CHECK#2
+if (2E00 !== 2) {
+ $ERROR('#2: 2E00 === 2');
+}
+
+//CHECK#3
+if (3E00 !== 3) {
+ $ERROR('#3: 3E00 === 3');
+}
+
+//CHECK#4
+if (4E00 !== 4) {
+ $ERROR('#4: 4E00 === 4');
+}
+
+//CHECK#5
+if (5E00 !== 5) {
+ $ERROR('#5: 5E00 === 5');
+}
+
+//CHECK#6
+if (6E00 !== 6) {
+ $ERROR('#6: 6E00 === 6');
+}
+
+//CHECK#7
+if (7E00 !== 7) {
+ $ERROR('#7: 7E00 === 7');
+}
+
+//CHECK#8
+if (8E00 !== 8) {
+ $ERROR('#8: 8E00 === 8');
+}
+
+//CHECK#9
+if (9E00 !== 9) {
+ $ERROR('#9: 9E00 === 9');
+}
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A5.1_T1.js b/js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A5.1_T1.js
new file mode 100644
index 000000000..2e6b786b4
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A5.1_T1.js
@@ -0,0 +1,90 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * DecimalLiteral :: HexIntegerLiteral
+ *
+ * @path ch07/7.8/7.8.3/S7.8.3_A5.1_T1.js
+ * @description HexIntegerLiteral :: 0x Digit
+ */
+
+//CHECK#0
+if (0x0 !== 0) {
+ $ERROR('#0: 0x0 === 0');
+}
+
+//CHECK#1
+if (0x1 !== 1) {
+ $ERROR('#1: 0x1 === 1');
+}
+
+//CHECK#2
+if (0x2 !== 2) {
+ $ERROR('#2: 0x2 === 2');
+}
+
+//CHECK#3
+if (0x3 !== 3) {
+ $ERROR('#3: 0x3 === 3');
+}
+
+//CHECK#4
+if (0x4 !== 4) {
+ $ERROR('#4: 0x4 === 4');
+}
+
+//CHECK#5
+if (0x5 !== 5) {
+ $ERROR('#5: 0x5 === 5');
+}
+
+//CHECK#6
+if (0x6 !== 6) {
+ $ERROR('#6: 0x6 === 6');
+}
+
+//CHECK#7
+if (0x7 !== 7) {
+ $ERROR('#7: 0x7 === 7');
+}
+
+//CHECK#8
+if (0x8 !== 8) {
+ $ERROR('#8: 0x8 === 8');
+}
+
+//CHECK#9
+if (0x9 !== 9) {
+ $ERROR('#9: 0x9 === 9');
+}
+
+//CHECK#A
+if (0xA !== 10) {
+ $ERROR('#A: 0xA === 10');
+}
+
+//CHECK#B
+if (0xB !== 11) {
+ $ERROR('#B: 0xB === 11');
+}
+
+//CHECK#C
+if (0xC !== 12) {
+ $ERROR('#C: 0xC === 12');
+}
+
+//CHECK#D
+if (0xD !== 13) {
+ $ERROR('#D: 0xD === 13');
+}
+
+//CHECK#E
+if (0xE !== 14) {
+ $ERROR('#E: 0xE === 14');
+}
+
+//CHECK#F
+if (0xF !== 15) {
+ $ERROR('#F: 0xF === 15');
+}
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A5.1_T2.js b/js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A5.1_T2.js
new file mode 100644
index 000000000..ca55655e2
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A5.1_T2.js
@@ -0,0 +1,90 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * DecimalLiteral :: HexIntegerLiteral
+ *
+ * @path ch07/7.8/7.8.3/S7.8.3_A5.1_T2.js
+ * @description HexIntegerLiteral :: 0X Digit
+ */
+
+//CHECK#0
+if (0X0 !== 0) {
+ $ERROR('#0: 0X0 === 0');
+}
+
+//CHECK#1
+if (0X1 !== 1) {
+ $ERROR('#1: 0X1 === 1');
+}
+
+//CHECK#2
+if (0X2 !== 2) {
+ $ERROR('#2: 0X2 === 2');
+}
+
+//CHECK#3
+if (0X3 !== 3) {
+ $ERROR('#3: 0X3 === 3');
+}
+
+//CHECK#4
+if (0X4 !== 4) {
+ $ERROR('#4: 0X4 === 4');
+}
+
+//CHECK#5
+if (0X5 !== 5) {
+ $ERROR('#5: 0X5 === 5');
+}
+
+//CHECK#6
+if (0X6 !== 6) {
+ $ERROR('#6: 0X6 === 6');
+}
+
+//CHECK#7
+if (0X7 !== 7) {
+ $ERROR('#7: 0X7 === 7');
+}
+
+//CHECK#8
+if (0X8 !== 8) {
+ $ERROR('#8: 0X8 === 8');
+}
+
+//CHECK#9
+if (0X9 !== 9) {
+ $ERROR('#9: 0X9 === 9');
+}
+
+//CHECK#A
+if (0XA !== 10) {
+ $ERROR('#A: 0XA === 10');
+}
+
+//CHECK#B
+if (0XB !== 11) {
+ $ERROR('#B: 0XB === 11');
+}
+
+//CHECK#C
+if (0XC !== 12) {
+ $ERROR('#C: 0XC === 12');
+}
+
+//CHECK#D
+if (0XD !== 13) {
+ $ERROR('#D: 0XD === 13');
+}
+
+//CHECK#E
+if (0XE !== 14) {
+ $ERROR('#E: 0XE === 14');
+}
+
+//CHECK#F
+if (0XF !== 15) {
+ $ERROR('#F: 0XF === 15');
+}
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A5.1_T3.js b/js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A5.1_T3.js
new file mode 100644
index 000000000..089a84112
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A5.1_T3.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.
+
+/**
+ * DecimalLiteral :: HexIntegerLiteral
+ *
+ * @path ch07/7.8/7.8.3/S7.8.3_A5.1_T3.js
+ * @description HexIntegerLiteral :: 0x NonZeroDigit Digits
+ */
+
+//CHECK#0
+if (0x0 !== 0) {
+ $ERROR('#0: 0x0 === 0');
+}
+
+//CHECK#1
+if (0x1 !== 1) {
+ $ERROR('#1: 0x1 === 1');
+}
+
+//CHECK#2
+if (0x10 !== 16) {
+ $ERROR('#2: 0x10 === 16');
+}
+
+//CHECK3
+if (0x100 !== 256) {
+ $ERROR('3: 0x100 === 256');
+}
+
+//CHECK#4
+if (0x1000 !== 4096) {
+ $ERROR('#4: 0x1000 === 4096');
+}
+
+//CHECK#5
+if (0x10000 !== 65536) {
+ $ERROR('#5: 0x10000 === 65536');
+}
+
+//CHECK#6
+if (0x100000 !== 1048576) {
+ $ERROR('#6: 0x100000 === 1048576');
+}
+
+//CHECK#7
+if (0x1000000 !== 16777216) {
+ $ERROR('#7: 0x1000000 === 16777216');
+}
+
+//CHECK#8
+if (0x10000000 !== 268435456) {
+ $ERROR('#8: 0x10000000 === 268435456');
+}
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A5.1_T4.js b/js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A5.1_T4.js
new file mode 100644
index 000000000..5ddc484a8
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A5.1_T4.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.
+
+/**
+ * DecimalLiteral :: HexIntegerLiteral
+ *
+ * @path ch07/7.8/7.8.3/S7.8.3_A5.1_T4.js
+ * @description HexIntegerLiteral :: 0X NonZeroDigit Digits
+ */
+
+//CHECK#0
+if (0X0 !== 0) {
+ $ERROR('#0: 0X0 === 0');
+}
+
+//CHECK#1
+if (0X1 !== 1) {
+ $ERROR('#1: 0X1 === 1');
+}
+
+//CHECK#2
+if (0X10 !== 16) {
+ $ERROR('#2: 0X10 === 16');
+}
+
+//CHECK3
+if (0X100 !== 256) {
+ $ERROR('3: 0X100 === 256');
+}
+
+//CHECK#4
+if (0X1000 !== 4096) {
+ $ERROR('#4: 0X1000 === 4096');
+}
+
+//CHECK#5
+if (0X10000 !== 65536) {
+ $ERROR('#5: 0X10000 === 65536');
+}
+
+//CHECK#6
+if (0X100000 !== 1048576) {
+ $ERROR('#6: 0X100000 === 1048576');
+}
+
+//CHECK#7
+if (0X1000000 !== 16777216) {
+ $ERROR('#7: 0X1000000 === 16777216');
+}
+
+//CHECK#8
+if (0X10000000 !== 268435456) {
+ $ERROR('#8: 0X10000000 === 268435456');
+}
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A5.1_T5.js b/js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A5.1_T5.js
new file mode 100644
index 000000000..da8e61ed4
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A5.1_T5.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.
+
+/**
+ * DecimalLiteral :: HexIntegerLiteral
+ *
+ * @path ch07/7.8/7.8.3/S7.8.3_A5.1_T5.js
+ * @description HexIntegerLiteral :: 0x0 Digits
+ */
+
+//CHECK#0
+if (0x00 !== 0) {
+ $ERROR('#0: 0x00 === 0');
+}
+
+//CHECK#1
+if (0x01 !== 1) {
+ $ERROR('#1: 0x01 === 1');
+}
+
+//CHECK#2
+if (0x010 !== 16) {
+ $ERROR('#2: 0x010 === 16');
+}
+
+//CHECK3
+if (0x0100 !== 256) {
+ $ERROR('3: 0x0100 === 256');
+}
+
+//CHECK#4
+if (0x01000 !== 4096) {
+ $ERROR('#4: 0x01000 === 4096');
+}
+
+//CHECK#5
+if (0x010000 !== 65536) {
+ $ERROR('#5: 0x010000 === 65536');
+}
+
+//CHECK#6
+if (0x0100000 !== 1048576) {
+ $ERROR('#6: 0x0100000 === 1048576');
+}
+
+//CHECK#7
+if (0x01000000 !== 16777216) {
+ $ERROR('#7: 0x01000000 === 16777216');
+}
+
+//CHECK#8
+if (0x010000000 !== 268435456) {
+ $ERROR('#8: 0x010000000 === 268435456');
+}
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A5.1_T6.js b/js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A5.1_T6.js
new file mode 100644
index 000000000..659c7dfbb
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A5.1_T6.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.
+
+/**
+ * DecimalLiteral :: HexIntegerLiteral
+ *
+ * @path ch07/7.8/7.8.3/S7.8.3_A5.1_T6.js
+ * @description HexIntegerLiteral :: 0X0 Digits
+ */
+
+//CHECK#0
+if (0X00 !== 0) {
+ $ERROR('#0: 0X00 === 0');
+}
+
+//CHECK#1
+if (0X01 !== 1) {
+ $ERROR('#1: 0X01 === 1');
+}
+
+//CHECK#2
+if (0X010 !== 16) {
+ $ERROR('#2: 0X010 === 16');
+}
+
+//CHECK3
+if (0X0100 !== 256) {
+ $ERROR('3: 0X0100 === 256');
+}
+
+//CHECK#4
+if (0X01000 !== 4096) {
+ $ERROR('#4: 0X01000 === 4096');
+}
+
+//CHECK#5
+if (0X010000 !== 65536) {
+ $ERROR('#5: 0X010000 === 65536');
+}
+
+//CHECK#6
+if (0X0100000 !== 1048576) {
+ $ERROR('#6: 0X0100000 === 1048576');
+}
+
+//CHECK#7
+if (0X01000000 !== 16777216) {
+ $ERROR('#7: 0X01000000 === 16777216');
+}
+
+//CHECK#8
+if (0X010000000 !== 268435456) {
+ $ERROR('#8: 0X010000000 === 268435456');
+}
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A5.1_T7.js b/js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A5.1_T7.js
new file mode 100644
index 000000000..7bc52989c
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A5.1_T7.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.
+
+/**
+ * DecimalLiteral :: HexIntegerLiteral
+ *
+ * @path ch07/7.8/7.8.3/S7.8.3_A5.1_T7.js
+ * @description HexIntegerLiteral :: 0x one of a, b, c, d, e, f
+ */
+
+//CHECK#a
+if (0xa !== 10) {
+ $ERROR('#a: 0xa === 10');
+}
+
+//CHECK#b
+if (0xb !== 11) {
+ $ERROR('#b: 0xb === 11');
+}
+
+//CHECK#c
+if (0xc !== 12) {
+ $ERROR('#c: 0xc === 12');
+}
+
+//CHECK#d
+if (0xd !== 13) {
+ $ERROR('#d: 0xd === 13');
+}
+
+//CHECK#e
+if (0xe !== 14) {
+ $ERROR('#e: 0xe === 14');
+}
+
+//CHECK#f
+if (0xf !== 15) {
+ $ERROR('#f: 0xf === 15');
+}
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A5.1_T8.js b/js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A5.1_T8.js
new file mode 100644
index 000000000..1f95ab586
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A5.1_T8.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.
+
+/**
+ * DecimalLiteral :: HexIntegerLiteral
+ *
+ * @path ch07/7.8/7.8.3/S7.8.3_A5.1_T8.js
+ * @description HexIntegerLiteral :: 0X one of a, b, c, d, e, f
+ */
+
+//CHECK#a
+if (0Xa !== 10) {
+ $ERROR('#a: 0Xa === 10');
+}
+
+//CHECK#b
+if (0Xb !== 11) {
+ $ERROR('#b: 0Xb === 11');
+}
+
+//CHECK#c
+if (0Xc !== 12) {
+ $ERROR('#c: 0Xc === 12');
+}
+
+//CHECK#d
+if (0Xd !== 13) {
+ $ERROR('#d: 0Xd === 13');
+}
+
+//CHECK#e
+if (0Xe !== 14) {
+ $ERROR('#e: 0Xe === 14');
+}
+
+//CHECK#f
+if (0Xf !== 15) {
+ $ERROR('#f: 0Xf === 15');
+}
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A6.1_T1.js b/js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A6.1_T1.js
new file mode 100644
index 000000000..3be2b908f
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A6.1_T1.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.
+
+/**
+ * HexIntegerLiteral :: 0(x/X) is incorrect
+ *
+ * @path ch07/7.8/7.8.3/S7.8.3_A6.1_T1.js
+ * @description Checking if execution of "0x" passes
+ * @negative
+ */
+
+//CHECK#1
+0x
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A6.1_T2.js b/js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A6.1_T2.js
new file mode 100644
index 000000000..8b813b81f
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A6.1_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.
+
+/**
+ * HexIntegerLiteral :: 0(x/X) is incorrect
+ *
+ * @path ch07/7.8/7.8.3/S7.8.3_A6.1_T2.js
+ * @description Checking if execution of "0X" passes
+ * @negative
+ */
+
+//CHECK#1
+0X
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A6.2_T1.js b/js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A6.2_T1.js
new file mode 100644
index 000000000..accd26589
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A6.2_T1.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.
+
+/**
+ * 0xG is incorrect
+ *
+ * @path ch07/7.8/7.8.3/S7.8.3_A6.2_T1.js
+ * @description Checking if execution of "0xG" fails
+ * @negative
+ */
+
+//CHECK#1
+0xG
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A6.2_T2.js b/js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A6.2_T2.js
new file mode 100644
index 000000000..7a14fef29
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.3/S7.8.3_A6.2_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.
+
+/**
+ * 0xG is incorrect
+ *
+ * @path ch07/7.8/7.8.3/S7.8.3_A6.2_T2.js
+ * @description Checking if execution of "0xg" fails
+ * @negative
+ */
+
+//CHECK#1
+0xg
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.3/browser.js b/js/src/tests/test262/ch07/7.8/7.8.3/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.3/browser.js
diff --git a/js/src/tests/test262/ch07/7.8/7.8.3/shell.js b/js/src/tests/test262/ch07/7.8/7.8.3/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.3/shell.js
diff --git a/js/src/tests/test262/ch07/7.8/7.8.4/7.8.4-1-s.js b/js/src/tests/test262/ch07/7.8/7.8.4/7.8.4-1-s.js
new file mode 100644
index 000000000..f5548e4f3
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.4/7.8.4-1-s.js
@@ -0,0 +1,24 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.8/7.8.4/7.8.4-1-s.js
+ * @description A directive preceeding an 'use strict' directive may not contain an OctalEscapeSequence
+ * @onlyStrict
+ */
+
+
+function testcase()
+{
+ try
+ {
+ eval(' "asterisk: \\052" /* octal escape sequences forbidden in strict mode*/ ; "use strict";');
+ return false;
+ }
+ catch (e) {
+ return (e instanceof SyntaxError);
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch07/7.8/7.8.4/7.8.4-10-s.js b/js/src/tests/test262/ch07/7.8/7.8.4/7.8.4-10-s.js
new file mode 100644
index 000000000..c7069c0fa
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.4/7.8.4-10-s.js
@@ -0,0 +1,24 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.8/7.8.4/7.8.4-10-s.js
+ * @description An OctalEscapeSequence is not allowed in a String under Strict Mode
+ * @onlyStrict
+ */
+
+
+function testcase()
+{
+ try
+ {
+ eval('"use strict"; var x = " \\10 ";');
+ return false;
+ }
+ catch (e) {
+ return (e instanceof SyntaxError);
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch07/7.8/7.8.4/7.8.4-11-s.js b/js/src/tests/test262/ch07/7.8/7.8.4/7.8.4-11-s.js
new file mode 100644
index 000000000..02e5264b9
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.4/7.8.4-11-s.js
@@ -0,0 +1,26 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.8/7.8.4/7.8.4-11-s.js
+ * @description An OctalEscapeSequence is not allowed in a String under Strict Mode
+ * @onlyStrict
+ */
+
+
+
+
+function testcase()
+{
+ try
+ {
+ eval('"use strict"; var x = "\\16";');
+ return false;
+ }
+ catch (e) {
+ return (e instanceof SyntaxError);
+ }
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch07/7.8/7.8.4/7.8.4-12-s.js b/js/src/tests/test262/ch07/7.8/7.8.4/7.8.4-12-s.js
new file mode 100644
index 000000000..27211ab83
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.4/7.8.4-12-s.js
@@ -0,0 +1,26 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.8/7.8.4/7.8.4-12-s.js
+ * @description An OctalEscapeSequence is not allowed in a String under Strict Mode
+ * @onlyStrict
+ */
+
+
+
+
+function testcase()
+{
+ try
+ {
+ eval('"use strict"; var x = "\\17";');
+ return false;
+ }
+ catch (e) {
+ return (e instanceof SyntaxError);
+ }
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch07/7.8/7.8.4/7.8.4-13-s.js b/js/src/tests/test262/ch07/7.8/7.8.4/7.8.4-13-s.js
new file mode 100644
index 000000000..a5641d491
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.4/7.8.4-13-s.js
@@ -0,0 +1,26 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.8/7.8.4/7.8.4-13-s.js
+ * @description An OctalEscapeSequence is not allowed in a String under Strict Mode
+ * @onlyStrict
+ */
+
+
+
+
+function testcase()
+{
+ try
+ {
+ eval('"use strict"; var x = "\\30";');
+ return false;
+ }
+ catch (e) {
+ return (e instanceof SyntaxError);
+ }
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch07/7.8/7.8.4/7.8.4-14-s.js b/js/src/tests/test262/ch07/7.8/7.8.4/7.8.4-14-s.js
new file mode 100644
index 000000000..11a3ceaba
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.4/7.8.4-14-s.js
@@ -0,0 +1,26 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.8/7.8.4/7.8.4-14-s.js
+ * @description An OctalEscapeSequence is not allowed in a String under Strict Mode
+ * @onlyStrict
+ */
+
+
+
+
+function testcase()
+{
+ try
+ {
+ eval('"use strict"; var x = "\\31";');
+ return false;
+ }
+ catch (e) {
+ return (e instanceof SyntaxError);
+ }
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch07/7.8/7.8.4/7.8.4-15-s.js b/js/src/tests/test262/ch07/7.8/7.8.4/7.8.4-15-s.js
new file mode 100644
index 000000000..ddf59df33
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.4/7.8.4-15-s.js
@@ -0,0 +1,26 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.8/7.8.4/7.8.4-15-s.js
+ * @description An OctalEscapeSequence is not allowed in a String under Strict Mode
+ * @onlyStrict
+ */
+
+
+
+
+function testcase()
+{
+ try
+ {
+ eval('"use strict"; var x = "\\37";');
+ return false;
+ }
+ catch (e) {
+ return (e instanceof SyntaxError);
+ }
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch07/7.8/7.8.4/7.8.4-16-s.js b/js/src/tests/test262/ch07/7.8/7.8.4/7.8.4-16-s.js
new file mode 100644
index 000000000..add6f1b16
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.4/7.8.4-16-s.js
@@ -0,0 +1,26 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.8/7.8.4/7.8.4-16-s.js
+ * @description An OctalEscapeSequence is not allowed in a String under Strict Mode
+ * @onlyStrict
+ */
+
+
+
+
+function testcase()
+{
+ try
+ {
+ eval('"use strict"; var x = "\\400";');
+ return false;
+ }
+ catch (e) {
+ return (e instanceof SyntaxError);
+ }
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch07/7.8/7.8.4/7.8.4-17-s.js b/js/src/tests/test262/ch07/7.8/7.8.4/7.8.4-17-s.js
new file mode 100644
index 000000000..f132d927c
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.4/7.8.4-17-s.js
@@ -0,0 +1,26 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.8/7.8.4/7.8.4-17-s.js
+ * @description An OctalEscapeSequence is not allowed in a String under Strict Mode
+ * @onlyStrict
+ */
+
+
+
+
+function testcase()
+{
+ try
+ {
+ eval('"use strict"; var x = "\\411";');
+ return false;
+ }
+ catch (e) {
+ return (e instanceof SyntaxError);
+ }
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch07/7.8/7.8.4/7.8.4-18-s.js b/js/src/tests/test262/ch07/7.8/7.8.4/7.8.4-18-s.js
new file mode 100644
index 000000000..db679216f
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.4/7.8.4-18-s.js
@@ -0,0 +1,26 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.8/7.8.4/7.8.4-18-s.js
+ * @description An OctalEscapeSequence is not allowed in a String under Strict Mode
+ * @onlyStrict
+ */
+
+
+
+
+function testcase()
+{
+ try
+ {
+ eval('"use strict"; var x = "\\43a";');
+ return false;
+ }
+ catch (e) {
+ return (e instanceof SyntaxError);
+ }
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch07/7.8/7.8.4/7.8.4-19-s.js b/js/src/tests/test262/ch07/7.8/7.8.4/7.8.4-19-s.js
new file mode 100644
index 000000000..c1792cfa3
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.4/7.8.4-19-s.js
@@ -0,0 +1,26 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.8/7.8.4/7.8.4-19-s.js
+ * @description An OctalEscapeSequence is not allowed in a String under Strict Mode
+ * @onlyStrict
+ */
+
+
+
+
+function testcase()
+{
+ try
+ {
+ eval('"use strict"; var x = "\\463";');
+ return false;
+ }
+ catch (e) {
+ return (e instanceof SyntaxError);
+ }
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch07/7.8/7.8.4/7.8.4-1gs.js b/js/src/tests/test262/ch07/7.8/7.8.4/7.8.4-1gs.js
new file mode 100644
index 000000000..4974d0b5f
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.4/7.8.4-1gs.js
@@ -0,0 +1,14 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.8/7.8.4/7.8.4-1gs.js
+ * @description Strict Mode - OctalEscapeSequence(\0110) is forbidden in strict mode
+ * @onlyStrict
+ * @negative ^((?!NotEarlyError).)*$
+ */
+"use strict";
+throw NotEarlyError;
+var _7_8_4_2 = '100abc\0110def';
diff --git a/js/src/tests/test262/ch07/7.8/7.8.4/7.8.4-2-s.js b/js/src/tests/test262/ch07/7.8/7.8.4/7.8.4-2-s.js
new file mode 100644
index 000000000..5d5e02dc3
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.4/7.8.4-2-s.js
@@ -0,0 +1,24 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.8/7.8.4/7.8.4-2-s.js
+ * @description An OctalEscapeSequence is not allowed in a String under Strict Mode
+ * @onlyStrict
+ */
+
+
+function testcase()
+{
+ try
+ {
+ eval('"use strict"; var x = "\\1";');
+ return false;
+ }
+ catch (e) {
+ return (e instanceof SyntaxError);
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch07/7.8/7.8.4/7.8.4-20-s.js b/js/src/tests/test262/ch07/7.8/7.8.4/7.8.4-20-s.js
new file mode 100644
index 000000000..170cb4c5a
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.4/7.8.4-20-s.js
@@ -0,0 +1,26 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.8/7.8.4/7.8.4-20-s.js
+ * @description An OctalEscapeSequence is not allowed in a String under Strict Mode
+ * @onlyStrict
+ */
+
+
+
+
+function testcase()
+{
+ try
+ {
+ eval('"use strict"; var x = "\\474";');
+ return false;
+ }
+ catch (e) {
+ return (e instanceof SyntaxError);
+ }
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch07/7.8/7.8.4/7.8.4-21-s.js b/js/src/tests/test262/ch07/7.8/7.8.4/7.8.4-21-s.js
new file mode 100644
index 000000000..1dca614fc
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.4/7.8.4-21-s.js
@@ -0,0 +1,26 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.8/7.8.4/7.8.4-21-s.js
+ * @description An OctalEscapeSequence is not allowed in a String under Strict Mode
+ * @onlyStrict
+ */
+
+
+
+
+function testcase()
+{
+ try
+ {
+ eval('"use strict"; var x = "\\77";');
+ return false;
+ }
+ catch (e) {
+ return (e instanceof SyntaxError);
+ }
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch07/7.8/7.8.4/7.8.4-22-s.js b/js/src/tests/test262/ch07/7.8/7.8.4/7.8.4-22-s.js
new file mode 100644
index 000000000..dc7399147
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.4/7.8.4-22-s.js
@@ -0,0 +1,26 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.8/7.8.4/7.8.4-22-s.js
+ * @description An OctalEscapeSequence is not allowed in a String under Strict Mode
+ * @onlyStrict
+ */
+
+
+
+
+function testcase()
+{
+ try
+ {
+ eval('"use strict"; var x = "\\777";');
+ return false;
+ }
+ catch (e) {
+ return (e instanceof SyntaxError);
+ }
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch07/7.8/7.8.4/7.8.4-23-s.js b/js/src/tests/test262/ch07/7.8/7.8.4/7.8.4-23-s.js
new file mode 100644
index 000000000..e8d7c1204
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.4/7.8.4-23-s.js
@@ -0,0 +1,26 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.8/7.8.4/7.8.4-23-s.js
+ * @description An OctalEscapeSequence is not allowed in a String under Strict Mode
+ * @onlyStrict
+ */
+
+
+
+
+function testcase()
+{
+ try
+ {
+ eval('"use strict"; var x = "\\000";');
+ return false;
+ }
+ catch (e) {
+ return (e instanceof SyntaxError);
+ }
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch07/7.8/7.8.4/7.8.4-24-s.js b/js/src/tests/test262/ch07/7.8/7.8.4/7.8.4-24-s.js
new file mode 100644
index 000000000..e0cea8f6e
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.4/7.8.4-24-s.js
@@ -0,0 +1,26 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.8/7.8.4/7.8.4-24-s.js
+ * @description An OctalEscapeSequence is not allowed in a String under Strict Mode
+ * @onlyStrict
+ */
+
+
+
+
+function testcase()
+{
+ try
+ {
+ eval('"use strict"; var x = "\\001";');
+ return false;
+ }
+ catch (e) {
+ return (e instanceof SyntaxError);
+ }
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch07/7.8/7.8.4/7.8.4-25-s.js b/js/src/tests/test262/ch07/7.8/7.8.4/7.8.4-25-s.js
new file mode 100644
index 000000000..060d0cd07
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.4/7.8.4-25-s.js
@@ -0,0 +1,26 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.8/7.8.4/7.8.4-25-s.js
+ * @description An OctalEscapeSequence is not allowed in a String under Strict Mode
+ * @onlyStrict
+ */
+
+
+
+
+function testcase()
+{
+ try
+ {
+ eval('"use strict"; var x = "\\106";');
+ return false;
+ }
+ catch (e) {
+ return (e instanceof SyntaxError);
+ }
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch07/7.8/7.8.4/7.8.4-26-s.js b/js/src/tests/test262/ch07/7.8/7.8.4/7.8.4-26-s.js
new file mode 100644
index 000000000..d986b4de9
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.4/7.8.4-26-s.js
@@ -0,0 +1,26 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.8/7.8.4/7.8.4-26-s.js
+ * @description An OctalEscapeSequence is not allowed in a String under Strict Mode
+ * @onlyStrict
+ */
+
+
+
+
+function testcase()
+{
+ try
+ {
+ eval('"use strict"; var x = "\\207";');
+ return false;
+ }
+ catch (e) {
+ return (e instanceof SyntaxError);
+ }
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch07/7.8/7.8.4/7.8.4-27-s.js b/js/src/tests/test262/ch07/7.8/7.8.4/7.8.4-27-s.js
new file mode 100644
index 000000000..b208bdb6f
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.4/7.8.4-27-s.js
@@ -0,0 +1,26 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.8/7.8.4/7.8.4-27-s.js
+ * @description An OctalEscapeSequence is not allowed in a String under Strict Mode
+ * @onlyStrict
+ */
+
+
+
+
+function testcase()
+{
+ try
+ {
+ eval('"use strict"; var x = "\\377";');
+ return false;
+ }
+ catch (e) {
+ return (e instanceof SyntaxError);
+ }
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch07/7.8/7.8.4/7.8.4-28-s.js b/js/src/tests/test262/ch07/7.8/7.8.4/7.8.4-28-s.js
new file mode 100644
index 000000000..a0967eb8e
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.4/7.8.4-28-s.js
@@ -0,0 +1,26 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.8/7.8.4/7.8.4-28-s.js
+ * @description An OctalEscapeSequence is not allowed in a String under Strict Mode
+ * @onlyStrict
+ */
+
+
+
+
+function testcase()
+{
+ try
+ {
+ eval('"use strict"; var x = "\\376";');
+ return false;
+ }
+ catch (e) {
+ return (e instanceof SyntaxError);
+ }
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch07/7.8/7.8.4/7.8.4-29-s.js b/js/src/tests/test262/ch07/7.8/7.8.4/7.8.4-29-s.js
new file mode 100644
index 000000000..60e65af65
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.4/7.8.4-29-s.js
@@ -0,0 +1,26 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.8/7.8.4/7.8.4-29-s.js
+ * @description An OctalEscapeSequence is not allowed in a String under Strict Mode
+ * @onlyStrict
+ */
+
+
+
+
+function testcase()
+{
+ try
+ {
+ eval('"use strict"; var x = "\\3760";');
+ return false;
+ }
+ catch (e) {
+ return (e instanceof SyntaxError);
+ }
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch07/7.8/7.8.4/7.8.4-3-s.js b/js/src/tests/test262/ch07/7.8/7.8.4/7.8.4-3-s.js
new file mode 100644
index 000000000..0885c5c74
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.4/7.8.4-3-s.js
@@ -0,0 +1,24 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.8/7.8.4/7.8.4-3-s.js
+ * @description An OctalEscapeSequence is not allowed in a String under Strict Mode
+ * @onlyStrict
+ */
+
+
+function testcase()
+{
+ try
+ {
+ eval('"use strict"; var x = "a\\4";');
+ return false;
+ }
+ catch (e) {
+ return (e instanceof SyntaxError);
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch07/7.8/7.8.4/7.8.4-30-s.js b/js/src/tests/test262/ch07/7.8/7.8.4/7.8.4-30-s.js
new file mode 100644
index 000000000..73cbdfedc
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.4/7.8.4-30-s.js
@@ -0,0 +1,24 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.8/7.8.4/7.8.4-30-s.js
+ * @description An OctalEscapeSequence is not allowed in a String under Strict Mode
+ * @onlyStrict
+ */
+
+
+function testcase()
+{
+ try
+ {
+ eval('"use strict"; var x = "\\' + '1";');
+ return false;
+ }
+ catch (e) {
+ return (e instanceof SyntaxError);
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch07/7.8/7.8.4/7.8.4-31-s.js b/js/src/tests/test262/ch07/7.8/7.8.4/7.8.4-31-s.js
new file mode 100644
index 000000000..a33c8bbc6
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.4/7.8.4-31-s.js
@@ -0,0 +1,24 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.8/7.8.4/7.8.4-31-s.js
+ * @description An OctalEscapeSequence is not allowed in a String under Strict Mode
+ * @onlyStrict
+ */
+
+
+function testcase()
+{
+ try
+ {
+ eval('"use strict"; var x = "\\" + "1";');
+ return false;
+ }
+ catch (e) {
+ return (e instanceof SyntaxError);
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch07/7.8/7.8.4/7.8.4-32-s.js b/js/src/tests/test262/ch07/7.8/7.8.4/7.8.4-32-s.js
new file mode 100644
index 000000000..312e870c3
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.4/7.8.4-32-s.js
@@ -0,0 +1,24 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.8/7.8.4/7.8.4-32-s.js
+ * @description Two OctalEscapeSequences in a String are not allowed in a String under Strict Mode
+ * @onlyStrict
+ */
+
+
+function testcase()
+{
+ try
+ {
+ eval('"use strict"; var x = "\\1\\1";');
+ return false;
+ }
+ catch (e) {
+ return (e instanceof SyntaxError);
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch07/7.8/7.8.4/7.8.4-33-s.js b/js/src/tests/test262/ch07/7.8/7.8.4/7.8.4-33-s.js
new file mode 100644
index 000000000..639313c92
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.4/7.8.4-33-s.js
@@ -0,0 +1,24 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.8/7.8.4/7.8.4-33-s.js
+ * @description Three OctalEscapeSequences in a String are not allowed in a String under Strict Mode
+ * @onlyStrict
+ */
+
+
+function testcase()
+{
+ try
+ {
+ eval('"use strict"; var x = "\\1\\2\\7";');
+ return false;
+ }
+ catch (e) {
+ return (e instanceof SyntaxError);
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch07/7.8/7.8.4/7.8.4-4-s.js b/js/src/tests/test262/ch07/7.8/7.8.4/7.8.4-4-s.js
new file mode 100644
index 000000000..bd4e93fe6
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.4/7.8.4-4-s.js
@@ -0,0 +1,24 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.8/7.8.4/7.8.4-4-s.js
+ * @description An OctalEscapeSequence is not allowed in a String under Strict Mode
+ * @onlyStrict
+ */
+
+
+function testcase()
+{
+ try
+ {
+ eval('"use strict"; var x = "z\\7";');
+ return false;
+ }
+ catch (e) {
+ return (e instanceof SyntaxError);
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch07/7.8/7.8.4/7.8.4-5-s.js b/js/src/tests/test262/ch07/7.8/7.8.4/7.8.4-5-s.js
new file mode 100644
index 000000000..1108364ab
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.4/7.8.4-5-s.js
@@ -0,0 +1,24 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.8/7.8.4/7.8.4-5-s.js
+ * @description An OctalEscapeSequence is not allowed in a String under Strict Mode
+ * @onlyStrict
+ */
+
+
+function testcase()
+{
+ try
+ {
+ eval('"use strict"; var x = "\\00a";');
+ return false;
+ }
+ catch (e) {
+ return (e instanceof SyntaxError);
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch07/7.8/7.8.4/7.8.4-6-s.js b/js/src/tests/test262/ch07/7.8/7.8.4/7.8.4-6-s.js
new file mode 100644
index 000000000..119415796
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.4/7.8.4-6-s.js
@@ -0,0 +1,24 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.8/7.8.4/7.8.4-6-s.js
+ * @description An OctalEscapeSequence is not allowed in a String under Strict Mode
+ * @onlyStrict
+ */
+
+
+function testcase()
+{
+ try
+ {
+ eval('"use strict"; var x = "\\01z";');
+ return false;
+ }
+ catch (e) {
+ return (e instanceof SyntaxError);
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch07/7.8/7.8.4/7.8.4-7-s.js b/js/src/tests/test262/ch07/7.8/7.8.4/7.8.4-7-s.js
new file mode 100644
index 000000000..254d2953e
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.4/7.8.4-7-s.js
@@ -0,0 +1,24 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.8/7.8.4/7.8.4-7-s.js
+ * @description An OctalEscapeSequence is not allowed in a String under Strict Mode
+ * @onlyStrict
+ */
+
+
+function testcase()
+{
+ try
+ {
+ eval('"use strict"; var x = "a\\03z";');
+ return false;
+ }
+ catch (e) {
+ return (e instanceof SyntaxError);
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch07/7.8/7.8.4/7.8.4-8-s.js b/js/src/tests/test262/ch07/7.8/7.8.4/7.8.4-8-s.js
new file mode 100644
index 000000000..04e3eac9b
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.4/7.8.4-8-s.js
@@ -0,0 +1,24 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.8/7.8.4/7.8.4-8-s.js
+ * @description An OctalEscapeSequence is not allowed in a String under Strict Mode
+ * @onlyStrict
+ */
+
+
+function testcase()
+{
+ try
+ {
+ eval('"use strict"; var x = " \\06";');
+ return false;
+ }
+ catch (e) {
+ return (e instanceof SyntaxError);
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch07/7.8/7.8.4/7.8.4-9-s.js b/js/src/tests/test262/ch07/7.8/7.8.4/7.8.4-9-s.js
new file mode 100644
index 000000000..1efa2e57a
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.4/7.8.4-9-s.js
@@ -0,0 +1,24 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.8/7.8.4/7.8.4-9-s.js
+ * @description An OctalEscapeSequence is not allowed in a String under Strict Mode
+ * @onlyStrict
+ */
+
+
+function testcase()
+{
+ try
+ {
+ eval('"use strict"; var x = "\\07 ";');
+ return false;
+ }
+ catch (e) {
+ return (e instanceof SyntaxError);
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch07/7.8/7.8.4/S7.8.4_A1.1_T1.js b/js/src/tests/test262/ch07/7.8/7.8.4/S7.8.4_A1.1_T1.js
new file mode 100644
index 000000000..02c823418
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.4/S7.8.4_A1.1_T1.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.
+
+/**
+ * StringLiteral :: "DoubleStringCharacters_opt"
+ *
+ * @path ch07/7.8/7.8.4/S7.8.4_A1.1_T1.js
+ * @description DoubleStringCharacter :: SourceCharacter but not double-quote " or LineTerminator
+ * @negative
+ */
+
+//CHECK#1
+"""
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.4/S7.8.4_A1.1_T2.js b/js/src/tests/test262/ch07/7.8/7.8.4/S7.8.4_A1.1_T2.js
new file mode 100644
index 000000000..bedbcea86
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.4/S7.8.4_A1.1_T2.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.
+
+/**
+ * StringLiteral :: "DoubleStringCharacters_opt"
+ *
+ * @path ch07/7.8/7.8.4/S7.8.4_A1.1_T2.js
+ * @description DoubleStringCharacter :: SourceCharacter but not double-quote " or LineTerminator
+ * @negative
+ */
+
+//CHECK#1
+"
+"
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.4/S7.8.4_A1.2_T1.js b/js/src/tests/test262/ch07/7.8/7.8.4/S7.8.4_A1.2_T1.js
new file mode 100644
index 000000000..964e5be6c
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.4/S7.8.4_A1.2_T1.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.
+
+/**
+ * StringLiteral :: 'SingleStringCharacters_opt'
+ *
+ * @path ch07/7.8/7.8.4/S7.8.4_A1.2_T1.js
+ * @description SingleStringCharacter :: SourceCharacter but not single-quote ' or LineTerminator
+ * @negative
+ */
+
+//CHECK#1
+'''
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.4/S7.8.4_A1.2_T2.js b/js/src/tests/test262/ch07/7.8/7.8.4/S7.8.4_A1.2_T2.js
new file mode 100644
index 000000000..82890f5c2
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.4/S7.8.4_A1.2_T2.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.
+
+/**
+ * StringLiteral :: 'SingleStringCharacters_opt'
+ *
+ * @path ch07/7.8/7.8.4/S7.8.4_A1.2_T2.js
+ * @description SingleStringCharacter :: SourceCharacter but not single-quote ' or LineTerminator
+ * @negative
+ */
+
+//CHECK#1
+'
+'
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.4/S7.8.4_A2.1_T1.js b/js/src/tests/test262/ch07/7.8/7.8.4/S7.8.4_A2.1_T1.js
new file mode 100644
index 000000000..9a555b814
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.4/S7.8.4_A2.1_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.
+
+/**
+ * Correct interpretation of ENGLISH ALPHABET
+ *
+ * @path ch07/7.8/7.8.4/S7.8.4_A2.1_T1.js
+ * @description Check ENGLISH CAPITAL ALPHABET
+ */
+
+//CHECK#A-Z
+var unicode = ["\u0041", "\u0042", "\u0043", "\u0044", "\u0045", "\u0046", "\u0047", "\u0048", "\u0049", "\u004A", "\u004B", "\u004C", "\u004D", "\u004E", "\u004F", "\u0050", "\u0051", "\u0052", "\u0053", "\u0054", "\u0055", "\u0056", "\u0057", "\u0058", "\u0059", "\u005A"];
+var character = ["A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"];
+for (var index = 0; index <= 25; index++) {
+ if (unicode[index] !== character[index]) {
+ $ERROR('#' + character[index] + ' ');
+ }
+}
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.4/S7.8.4_A2.1_T2.js b/js/src/tests/test262/ch07/7.8/7.8.4/S7.8.4_A2.1_T2.js
new file mode 100644
index 000000000..f7e8ccfa3
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.4/S7.8.4_A2.1_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.
+
+/**
+ * Correct interpretation of ENGLISH ALPHABET
+ *
+ * @path ch07/7.8/7.8.4/S7.8.4_A2.1_T2.js
+ * @description Check ENGLISH SMALL ALPHABET
+ */
+
+//CHECK#a-z
+var hex = ["\u0061", "\u0062", "\u0063", "\u0064", "\u0065", "\u0066", "\u0067", "\u0068", "\u0069", "\u006A", "\u006B", "\u006C", "\u006D", "\u006E", "\u006F", "\u0070", "\u0071", "\u0072", "\u0073", "\u0074", "\u0075", "\u0076", "\u0077", "\u0078", "\u0079", "\u007A"];
+var character = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z"];
+for (var index = 0; index <= 25; index++) {
+ if (hex[index] !== character[index]) {
+ $ERROR('#' + character[index] + ' ');
+ }
+}
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.4/S7.8.4_A2.2_T1.js b/js/src/tests/test262/ch07/7.8/7.8.4/S7.8.4_A2.2_T1.js
new file mode 100644
index 000000000..cefe28d57
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.4/S7.8.4_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.
+
+/**
+ * Correct interpretation of RUSSIAN ALPHABET
+ *
+ * @path ch07/7.8/7.8.4/S7.8.4_A2.2_T1.js
+ * @description Check RUSSIAN CAPITAL ALPHABET
+ */
+
+//CHECK#А-Я
+var unicode = ["\u0410", "\u0411", "\u0412", "\u0413", "\u0414", "\u0415", "\u0416", "\u0417", "\u0418", "\u0419", "\u041A", "\u041B", "\u041C", "\u041D", "\u041E", "\u041F", "\u0420", "\u0421", "\u0422", "\u0423", "\u0424", "\u0425", "\u0426", "\u0427", "\u0428", "\u0429", "\u042A", "\u042B", "\u042C", "\u042D", "\u042E", "\u042F", "\u0401"];
+var character = ["А", "Б", "В", "Г", "Д", "Е", "Ж", "З", "И", "Й", "К", "Л", "М", "Н", "О", "П", "Р", "С", "Т", "У", "Ф", "Х", "Ц", "Ч", "Ш", "Щ", "Ъ", "Ы", "Ь", "Э", "Ю", "Я", "Ё"];
+for (var index = 0; index <= 32; index++) {
+ if (unicode[index] !== character[index]) {
+ $ERROR('#' + character[index] + ' ');
+ }
+}
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.4/S7.8.4_A2.2_T2.js b/js/src/tests/test262/ch07/7.8/7.8.4/S7.8.4_A2.2_T2.js
new file mode 100644
index 000000000..09fc5877b
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.4/S7.8.4_A2.2_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.
+
+/**
+ * Correct interpretation of RUSSIAN ALPHABET
+ *
+ * @path ch07/7.8/7.8.4/S7.8.4_A2.2_T2.js
+ * @description Check RUSSIAN SMALL ALPHABET
+ */
+
+//CHECK#а-я
+var unicode = ["\u0430", "\u0431", "\u0432", "\u0433", "\u0434", "\u0435", "\u0436", "\u0437", "\u0438", "\u0439", "\u043A", "\u043B", "\u043C", "\u043D", "\u043E", "\u043F", "\u0440", "\u0441", "\u0442", "\u0443", "\u0444", "\u0445", "\u0446", "\u0447", "\u0448", "\u0449", "\u044A", "\u044B", "\u044C", "\u044D", "\u044E", "\u044F", "\u0451"];
+var character = ["а", "б", "в", "г", "д", "е", "ж", "з", "и", "й", "к", "л", "м", "н", "о", "п", "р", "с", "т", "у", "ф", "х", "ц", "ч", "ш", "щ", "ъ", "ы", "ь", "э", "ю", "я", "ё"];
+for (var index = 0; index <= 32; index++) {
+ if (unicode[index] !== character[index]) {
+ $ERROR('#' + character[index] + ' ');
+ }
+}
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.4/S7.8.4_A2.3_T1.js b/js/src/tests/test262/ch07/7.8/7.8.4/S7.8.4_A2.3_T1.js
new file mode 100644
index 000000000..30e6133b7
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.4/S7.8.4_A2.3_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.
+
+/**
+ * Correct interpretation of DIGITS
+ *
+ * @path ch07/7.8/7.8.4/S7.8.4_A2.3_T1.js
+ * @description Check DIGITS
+ */
+
+//CHECK#0-9
+var unicode = ["\u0030", "\u0031", "\u0032", "\u0033", "\u0034", "\u0035", "\u0036", "\u0037", "\u0038", "\u0039"];
+var character = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"];
+for (var index = 0; index <= 9; index++) {
+ if (unicode[index] !== character[index]) {
+ $ERROR('#' + character[index] + ' ');
+ }
+}
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.4/S7.8.4_A3.1_T1.js b/js/src/tests/test262/ch07/7.8/7.8.4/S7.8.4_A3.1_T1.js
new file mode 100644
index 000000000..f25e6538d
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.4/S7.8.4_A3.1_T1.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.
+
+/**
+ * StringLiteral :: "\" or '\' is not correct
+ *
+ * @path ch07/7.8/7.8.4/S7.8.4_A3.1_T1.js
+ * @description Checking if execution of "\" fails
+ * @negative
+ */
+
+//CHECK#1
+"\"
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.4/S7.8.4_A3.1_T2.js b/js/src/tests/test262/ch07/7.8/7.8.4/S7.8.4_A3.1_T2.js
new file mode 100644
index 000000000..82cf8717b
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.4/S7.8.4_A3.1_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.
+
+/**
+ * StringLiteral :: "\" or '\' is not correct
+ *
+ * @path ch07/7.8/7.8.4/S7.8.4_A3.1_T2.js
+ * @description Checking if execution of "'\'" fails
+ * @negative
+ */
+
+//CHECK#1
+'\'
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.4/S7.8.4_A3.2_T1.js b/js/src/tests/test262/ch07/7.8/7.8.4/S7.8.4_A3.2_T1.js
new file mode 100644
index 000000000..54aaf12c6
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.4/S7.8.4_A3.2_T1.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.
+
+/**
+ * StringLiteral :: "\\\" or '\\\' is not correct
+ *
+ * @path ch07/7.8/7.8.4/S7.8.4_A3.2_T1.js
+ * @description Checking if execution of "\\\" fails
+ * @negative
+ */
+
+//CHECK#1
+"\\\"
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.4/S7.8.4_A3.2_T2.js b/js/src/tests/test262/ch07/7.8/7.8.4/S7.8.4_A3.2_T2.js
new file mode 100644
index 000000000..a26421e76
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.4/S7.8.4_A3.2_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.
+
+/**
+ * StringLiteral :: "\\\" or '\\\' is not correct
+ *
+ * @path ch07/7.8/7.8.4/S7.8.4_A3.2_T2.js
+ * @description Checking if execution of '\\\' fails
+ * @negative
+ */
+
+//CHECK#1
+'\\\'
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.4/S7.8.4_A4.1_T1.js b/js/src/tests/test262/ch07/7.8/7.8.4/S7.8.4_A4.1_T1.js
new file mode 100644
index 000000000..9cac9a2d9
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.4/S7.8.4_A4.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.
+
+/**
+ * CharacterEscapeSequnce :: SingleEscapeSequence
+ *
+ * @path ch07/7.8/7.8.4/S7.8.4_A4.1_T1.js
+ * @description SingleEscapeSequence :: one of b f n r t v
+ */
+
+//CHECK#1
+if (String.fromCharCode(0x0008) !== "\b") {
+ $ERROR('#1: String.fromCharCode(0x0008) === "\\b"');
+}
+
+//CHECK#2
+if (String.fromCharCode(0x0009) !== "\t") {
+ $ERROR('#2: String.fromCharCode(0x0009) === "\\t"');
+}
+
+//CHECK#3
+if (String.fromCharCode(0x000A) !== "\n") {
+ $ERROR('#3: String.fromCharCode(0x000A) === "\\n"');
+}
+
+//CHECK#4
+if (String.fromCharCode(0x000B) !== "\v") {
+ $ERROR('#4: String.fromCharCode(0x000B) === "\\v"');
+}
+
+//CHECK#5
+if (String.fromCharCode(0x000C) !== "\f") {
+ $ERROR('#5: String.fromCharCode(0x000C) === "\\f"');
+}
+
+//CHECK#6
+if (String.fromCharCode(0x000D) !== "\r") {
+ $ERROR('#6: String.fromCharCode(0x000D) === "\\r"');
+}
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.4/S7.8.4_A4.1_T2.js b/js/src/tests/test262/ch07/7.8/7.8.4/S7.8.4_A4.1_T2.js
new file mode 100644
index 000000000..c99f669ef
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.4/S7.8.4_A4.1_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.
+
+/**
+ * CharacterEscapeSequnce :: SingleEscapeSequence
+ *
+ * @path ch07/7.8/7.8.4/S7.8.4_A4.1_T2.js
+ * @description SingleEscapeSequence :: one of ' " \
+ */
+
+//CHECK#1
+if (String.fromCharCode(0x0027) !== "\'") {
+ $ERROR('#1: String.fromCharCode(0x0027) === "\\\'"');
+}
+
+//CHECK#2
+if (String.fromCharCode(0x0022) !== '\"') {
+ $ERROR('#2: String.fromCharCode(0x0027) === \'\\\"\'');
+}
+
+//CHECK#3
+if (String.fromCharCode(0x005C) !== "\\") {
+ $ERROR('#3: String.fromCharCode(0x005C) === "\\\"');
+}
+
+//CHECK#4
+if ("\'" !== "'") {
+ $ERROR('#4: "\'" === "\\\'"');
+}
+
+//CHECK#5
+if ('\"' !== '"') {
+ $ERROR('#5: \'\"\' === \'\\\"\'');
+}
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.4/S7.8.4_A4.2_T1.js b/js/src/tests/test262/ch07/7.8/7.8.4/S7.8.4_A4.2_T1.js
new file mode 100644
index 000000000..8abfdd031
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.4/S7.8.4_A4.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.
+
+/**
+ * CharacterEscapeSequnce :: NonEscapeSequence
+ *
+ * @path ch07/7.8/7.8.4/S7.8.4_A4.2_T1.js
+ * @description NonEscapeSequence :: ENGLISH CAPITAL ALPHABET
+ */
+
+//CHECK#A-Z
+var CharacterCode = [0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004A, 0x004B, 0x004C, 0x004D, 0x004E, 0x004F, 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005A];
+var NonEscapeCharacter = ["\A", "\B", "\C", "\D", "\E", "\F", "\G", "\H", "\I", "\J", "\K", "\L", "\M", "\N", "\O", "\P", "\Q", "\R", "\S", "\T", "\U", "\V", "\W", "\X", "\Y", "\Z"];
+for (var index = 0; index <= 25; index++) {
+ if (String.fromCharCode(CharacterCode[index]) !== NonEscapeCharacter[index]) {
+ $ERROR('#' + NonEscapeCharacter[index] + ' ');
+ }
+}
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.4/S7.8.4_A4.2_T2.js b/js/src/tests/test262/ch07/7.8/7.8.4/S7.8.4_A4.2_T2.js
new file mode 100644
index 000000000..660d2e62e
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.4/S7.8.4_A4.2_T2.js
@@ -0,0 +1,115 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * CharacterEscapeSequnce :: NonEscapeSequence
+ *
+ * @path ch07/7.8/7.8.4/S7.8.4_A4.2_T2.js
+ * @description NonEscapeSequence :: ENGLISH CAPITAL ALPHABET
+ */
+
+//CHECK#A-Z
+if ("A" !== "\A") {
+ $ERROR('#A');
+}
+
+if ("B" !== "\B") {
+ $ERROR('#B');
+}
+
+if ("C" !== "\C") {
+ $ERROR('#C');
+}
+
+if ("D" !== "\D") {
+ $ERROR('#D');
+}
+
+if ("E" !== "\E") {
+ $ERROR('#E');
+}
+
+if ("F" !== "\F") {
+ $ERROR('#F');
+}
+
+if ("G" !== "\G") {
+ $ERROR('#G');
+}
+
+if ("H" !== "\H") {
+ $ERROR('#H');
+}
+
+if ("I" !== "\I") {
+ $ERROR('#I');
+}
+
+if ("J" !== "\J") {
+ $ERROR('#J');
+}
+
+if ("K" !== "\K") {
+ $ERROR('#K');
+}
+
+if ("L" !== "\L") {
+ $ERROR('#L');
+}
+
+if ("M" !== "\M") {
+ $ERROR('#M');
+}
+
+if ("N" !== "\N") {
+ $ERROR('#N');
+}
+
+if ("O" !== "\O") {
+ $ERROR('#O');
+}
+
+if ("P" !== "\P") {
+ $ERROR('#P');
+}
+
+if ("Q" !== "\Q") {
+ $ERROR('#Q');
+}
+
+if ("R" !== "\R") {
+ $ERROR('#R');
+}
+
+if ("S" !== "\S") {
+ $ERROR('#S');
+}
+
+if ("T" !== "\T") {
+ $ERROR('#T');
+}
+
+if ("U" !== "\U") {
+ $ERROR('#U');
+}
+
+if ("V" !== "\V") {
+ $ERROR('#V');
+}
+
+if ("W" !== "\W") {
+ $ERROR('#W');
+}
+
+if ("X" !== "\X") {
+ $ERROR('#X');
+}
+
+if ("Y" !== "\Y") {
+ $ERROR('#Y');
+}
+
+if ("Z" !== "\Z") {
+ $ERROR('#Z');
+}
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.4/S7.8.4_A4.2_T3.js b/js/src/tests/test262/ch07/7.8/7.8.4/S7.8.4_A4.2_T3.js
new file mode 100644
index 000000000..39194063a
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.4/S7.8.4_A4.2_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.
+
+/**
+ * CharacterEscapeSequnce :: NonEscapeSequence
+ *
+ * @path ch07/7.8/7.8.4/S7.8.4_A4.2_T3.js
+ * @description NonEscapeSequence :: ENGLISH SMALL ALPHABET
+ */
+
+//CHECK#a-z without b, f, n, r, t, v, x, u
+var CharacterCode = [0x0061, 0x0063, 0x0064, 0x0065, 0x0067, 0x0068, 0x0069, 0x006A, 0x006B, 0x006C, 0x006D, 0x006F, 0x0070, 0x0071, 0x0073, 0x0077, 0x0079, 0x007A];
+var NonEscapeCharacter = ["\a", "\c", "\d", "\e", "\g", "\h", "\i", "\j", "\k", "\l", "\m", "\o", "\p", "\q", "\s", "\w", "\y", "\z"];
+for (var index = 0; index <= 17; index++) {
+ if (String.fromCharCode(CharacterCode[index]) !== NonEscapeCharacter[index]) {
+ $ERROR('#' + NonEscapeCharacter[index] + ' ');
+ }
+}
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.4/S7.8.4_A4.2_T4.js b/js/src/tests/test262/ch07/7.8/7.8.4/S7.8.4_A4.2_T4.js
new file mode 100644
index 000000000..19e61c5e1
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.4/S7.8.4_A4.2_T4.js
@@ -0,0 +1,86 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * CharacterEscapeSequnce :: NonEscapeSequence
+ *
+ * @path ch07/7.8/7.8.4/S7.8.4_A4.2_T4.js
+ * @description NonEscapeSequence :: ENGLISH SMALL ALPHABET
+ */
+
+//CHECK#a-z without b, f, n, r, t, v, x, u
+
+if ("a" !== "\a") {
+ $ERROR('#a');
+}
+
+if ("c" !== "\c") {
+ $ERROR('#c');
+}
+
+if ("d" !== "\d") {
+ $ERROR('#d');
+}
+
+if ("e" !== "\e") {
+ $ERROR('#e');
+}
+
+if ("g" !== "\g") {
+ $ERROR('#g');
+}
+
+if ("h" !== "\h") {
+ $ERROR('#h');
+}
+
+if ("i" !== "\i") {
+ $ERROR('#i');
+}
+
+if ("j" !== "\j") {
+ $ERROR('#j');
+}
+
+if ("k" !== "\k") {
+ $ERROR('#k');
+}
+
+if ("l" !== "\l") {
+ $ERROR('#l');
+}
+
+if ("m" !== "\m") {
+ $ERROR('#m');
+}
+
+
+if ("o" !== "\o") {
+ $ERROR('#o');
+}
+
+if ("p" !== "\p") {
+ $ERROR('#p');
+}
+
+if ("q" !== "\q") {
+ $ERROR('#q');
+}
+
+if ("s" !== "\s") {
+ $ERROR('#s');
+}
+
+if ("w" !== "\w") {
+ $ERROR('#w');
+}
+
+if ("y" !== "\y") {
+ $ERROR('#y');
+}
+
+if ("z" !== "\z") {
+ $ERROR('#z');
+}
+
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.4/S7.8.4_A4.2_T5.js b/js/src/tests/test262/ch07/7.8/7.8.4/S7.8.4_A4.2_T5.js
new file mode 100644
index 000000000..57c1b8efd
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.4/S7.8.4_A4.2_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.
+
+/**
+ * CharacterEscapeSequnce :: NonEscapeSequence
+ *
+ * @path ch07/7.8/7.8.4/S7.8.4_A4.2_T5.js
+ * @description NonEscapeSequence :: RUSSIAN CAPITAL ALPHABET
+ */
+
+//CHECK#А-Я
+var CharacterCode = [0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0416, 0x0417, 0x0418, 0x0419, 0x041A, 0x041B, 0x041C, 0x041D, 0x041E, 0x041F, 0x0420, 0x0421, 0x0422, 0x0423, 0x0424, 0x0425, 0x0426, 0x0427, 0x0428, 0x0429, 0x042A, 0x042B, 0x042C, 0x042D, 0x042E, 0x042F, 0x0401];
+var NonEscapeCharacter = ["\А", "\Б", "\В", "\Г", "\Д", "\Е", "\Ж", "\З", "\И", "\Й", "\К", "\Л", "\М", "\Н", "\О", "\П", "\Р", "\С", "\Т", "\У", "\Ф", "\Х", "\Ц", "\Ч", "\Ш", "\Щ", "\Ъ", "\Ы", "\Ь", "\Э", "\Ю", "\Я", "\Ё"];
+for (var index = 0; index <= 32; index++) {
+ if (String.fromCharCode(CharacterCode[index]) !== NonEscapeCharacter[index]) {
+ $ERROR('#' + NonEscapeCharacter[index] + ' ');
+ }
+}
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.4/S7.8.4_A4.2_T6.js b/js/src/tests/test262/ch07/7.8/7.8.4/S7.8.4_A4.2_T6.js
new file mode 100644
index 000000000..86e7ac2ca
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.4/S7.8.4_A4.2_T6.js
@@ -0,0 +1,144 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * CharacterEscapeSequnce :: NonEscapeSequence
+ *
+ * @path ch07/7.8/7.8.4/S7.8.4_A4.2_T6.js
+ * @description NonEscapeSequence :: RUSSIAN CAPITAL ALPHABET
+ */
+
+//CHECK#А-Я
+
+if ("А" !== "\А") {
+ $ERROR('#А');
+}
+
+if ("Б" !== "\Б") {
+ $ERROR('#Б');
+}
+
+if ("В" !== "\В") {
+ $ERROR('#В');
+}
+
+if ("Г" !== "\Г") {
+ $ERROR('#Г');
+}
+
+if ("Д" !== "\Д") {
+ $ERROR('#Д');
+}
+
+if ("Е" !== "\Е") {
+ $ERROR('#Е');
+}
+
+if ("Ж" !== "\Ж") {
+ $ERROR('#Ж');
+}
+
+if ("З" !== "\З") {
+ $ERROR('#З');
+}
+
+if ("И" !== "\И") {
+ $ERROR('#И');
+}
+
+if ("Й" !== "\Й") {
+ $ERROR('#Й');
+}
+
+if ("К" !== "\К") {
+ $ERROR('#К');
+}
+
+if ("Л" !== "\Л") {
+ $ERROR('#Л');
+}
+
+if ("М" !== "\М") {
+ $ERROR('#М');
+}
+
+if ("Н" !== "\Н") {
+ $ERROR('#Н');
+}
+
+if ("О" !== "\О") {
+ $ERROR('#О');
+}
+
+if ("П" !== "\П") {
+ $ERROR('#П');
+}
+
+if ("Р" !== "\Р") {
+ $ERROR('#Р');
+}
+
+if ("С" !== "\С") {
+ $ERROR('#С');
+}
+
+if ("Т" !== "\Т") {
+ $ERROR('#Т');
+}
+
+if ("У" !== "\У") {
+ $ERROR('#У');
+}
+
+if ("Ф" !== "\Ф") {
+ $ERROR('#Ф');
+}
+
+if ("Х" !== "\Х") {
+ $ERROR('#Х');
+}
+
+if ("Ц" !== "\Ц") {
+ $ERROR('#Ц');
+}
+
+if ("Ч" !== "\Ч") {
+ $ERROR('#Ч');
+}
+
+if ("Ш" !== "\Ш") {
+ $ERROR('#Ш');
+}
+
+if ("Щ" !== "\Щ") {
+ $ERROR('#Щ');
+}
+
+if ("Ъ" !== "\Ъ") {
+ $ERROR('#Ъ');
+}
+
+if ("Ы" !== "\Ы") {
+ $ERROR('#Ы');
+}
+
+if ("Ь" !== "\Ь") {
+ $ERROR('#Ь');
+}
+
+if ("Э" !== "\Э") {
+ $ERROR('#Э');
+}
+
+if ("Ю" !== "\Ю") {
+ $ERROR('#Ю');
+}
+
+if ("Я" !== "\Я") {
+ $ERROR('#Я');
+}
+
+if ("Ё" !== "\Ё") {
+ $ERROR('#Ё');
+}
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.4/S7.8.4_A4.2_T7.js b/js/src/tests/test262/ch07/7.8/7.8.4/S7.8.4_A4.2_T7.js
new file mode 100644
index 000000000..78915dce4
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.4/S7.8.4_A4.2_T7.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.
+
+/**
+ * CharacterEscapeSequnce :: NonEscapeSequence
+ *
+ * @path ch07/7.8/7.8.4/S7.8.4_A4.2_T7.js
+ * @description NonEscapeSequence :: RUSSIAN SMALL ALPHABET
+ */
+
+//CHECK#а-я
+var CharacterCode = [0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435, 0x0436, 0x0437, 0x0438, 0x0439, 0x043A, 0x043B, 0x043C, 0x043D, 0x043E, 0x043F, 0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445, 0x0446, 0x0447, 0x0448, 0x0449, 0x044A, 0x044B, 0x044C, 0x044D, 0x044E, 0x044F, 0x0451];
+var NonEscapeCharacter = ["\а", "\б", "\в", "\г", "\д", "\е", "\ж", "\з", "\и", "\й", "\к", "\л", "\м", "\н", "\о", "\п", "\р", "\с", "\т", "\у", "\ф", "\х", "\ц", "\ч", "\ш", "\щ", "\ъ", "\ы", "\ь", "\э", "\ю", "\я", "\ё"];
+for (var index = 0; index <= 32; index++) {
+ if (String.fromCharCode(CharacterCode[index]) !== NonEscapeCharacter[index]) {
+ $ERROR('#' + NonEscapeCharacter[index] + ' ');
+ }
+}
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.4/S7.8.4_A4.2_T8.js b/js/src/tests/test262/ch07/7.8/7.8.4/S7.8.4_A4.2_T8.js
new file mode 100644
index 000000000..3ef3f843e
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.4/S7.8.4_A4.2_T8.js
@@ -0,0 +1,144 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * CharacterEscapeSequnce :: NonEscapeSequence
+ *
+ * @path ch07/7.8/7.8.4/S7.8.4_A4.2_T8.js
+ * @description NonEscapeSequence :: RUSSIAN SMALL ALPHABET
+ */
+
+//CHECK#а-я
+
+if ("а" !== "\а") {
+ $ERROR('#а');
+}
+
+if ("б" !== "\б") {
+ $ERROR('#б');
+}
+
+if ("в" !== "\в") {
+ $ERROR('#в');
+}
+
+if ("г" !== "\г") {
+ $ERROR('#г');
+}
+
+if ("д" !== "\д") {
+ $ERROR('#д');
+}
+
+if ("е" !== "\е") {
+ $ERROR('#е');
+}
+
+if ("ж" !== "\ж") {
+ $ERROR('#ж');
+}
+
+if ("з" !== "\з") {
+ $ERROR('#з');
+}
+
+if ("и" !== "\и") {
+ $ERROR('#и');
+}
+
+if ("й" !== "\й") {
+ $ERROR('#й');
+}
+
+if ("к" !== "\к") {
+ $ERROR('#к');
+}
+
+if ("л" !== "\л") {
+ $ERROR('#л');
+}
+
+if ("м" !== "\м") {
+ $ERROR('#м');
+}
+
+if ("н" !== "\н") {
+ $ERROR('#н');
+}
+
+if ("о" !== "\о") {
+ $ERROR('#о');
+}
+
+if ("п" !== "\п") {
+ $ERROR('#п');
+}
+
+if ("р" !== "\р") {
+ $ERROR('#р');
+}
+
+if ("с" !== "\с") {
+ $ERROR('#с');
+}
+
+if ("т" !== "\т") {
+ $ERROR('#т');
+}
+
+if ("у" !== "\у") {
+ $ERROR('#у');
+}
+
+if ("ф" !== "\ф") {
+ $ERROR('#ф');
+}
+
+if ("х" !== "\х") {
+ $ERROR('#х');
+}
+
+if ("ц" !== "\ц") {
+ $ERROR('#ц');
+}
+
+if ("ч" !== "\ч") {
+ $ERROR('#ч');
+}
+
+if ("ш" !== "\ш") {
+ $ERROR('#ш');
+}
+
+if ("щ" !== "\щ") {
+ $ERROR('#щ');
+}
+
+if ("ъ" !== "\ъ") {
+ $ERROR('#ъ');
+}
+
+if ("ы" !== "\ы") {
+ $ERROR('#ы');
+}
+
+if ("ь" !== "\ь") {
+ $ERROR('#ь');
+}
+
+if ("э" !== "\э") {
+ $ERROR('#э');
+}
+
+if ("ю" !== "\ю") {
+ $ERROR('#ю');
+}
+
+if ("я" !== "\я") {
+ $ERROR('#я');
+}
+
+if ("ё" !== "\ё") {
+ $ERROR('#ё');
+}
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.4/S7.8.4_A4.3_T1.js b/js/src/tests/test262/ch07/7.8/7.8.4/S7.8.4_A4.3_T1.js
new file mode 100644
index 000000000..96c823ee8
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.4/S7.8.4_A4.3_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.
+
+/**
+ * NonEscapeSequence is not EscapeCharacter
+ *
+ * @path ch07/7.8/7.8.4/S7.8.4_A4.3_T1.js
+ * @description EscapeCharacter :: DecimalDigits :: 1
+ * @onlyStrict
+ * @negative
+ */
+
+"use strict";
+
+//CHECK#1
+"\1"
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.4/S7.8.4_A4.3_T2.js b/js/src/tests/test262/ch07/7.8/7.8.4/S7.8.4_A4.3_T2.js
new file mode 100644
index 000000000..b7f743e49
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.4/S7.8.4_A4.3_T2.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.
+
+/**
+ * NonEscapeSequence is not EscapeCharacter
+ *
+ * @path ch07/7.8/7.8.4/S7.8.4_A4.3_T2.js
+ * @description EscapeCharacter :: DecimalDigits :: 7
+ * @onlyStrict
+ * @negative
+ */
+
+"use strict";
+
+//CHECK#1
+"\7"
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.4/S7.8.4_A4.3_T7.js b/js/src/tests/test262/ch07/7.8/7.8.4/S7.8.4_A4.3_T7.js
new file mode 100644
index 000000000..063930342
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.4/S7.8.4_A4.3_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.
+
+/**
+ * NonEscapeSequence is not EscapeCharacter
+ *
+ * @path ch07/7.8/7.8.4/S7.8.4_A4.3_T7.js
+ * @description EscapeCharacter :: SingleEscapeCharacter :: one of b f n r t v
+ */
+
+//CHECK#bfnrtv
+if ("b" === "\b") {
+ $ERROR('#b');
+}
+
+if ("f" === "\f") {
+ $ERROR('#f');
+}
+
+if ("n" === "\n") {
+ $ERROR('#n');
+}
+
+if ("r" === "\r") {
+ $ERROR('#r');
+}
+
+if ("t" === "\t") {
+ $ERROR('#t');
+}
+
+if ("v" === "\v") {
+ $ERROR('#v');
+}
+
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.4/S7.8.4_A5.1_T1.js b/js/src/tests/test262/ch07/7.8/7.8.4/S7.8.4_A5.1_T1.js
new file mode 100644
index 000000000..aa0acecb6
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.4/S7.8.4_A5.1_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.
+
+/**
+ * EscapeSequence :: 0
+ *
+ * @path ch07/7.8/7.8.4/S7.8.4_A5.1_T1.js
+ * @description String.fromCharCode(0x0000)
+ */
+
+//CHECK#1
+if (String.fromCharCode(0x0000) !== "\0") {
+ $ERROR('#1: String.fromCharCode(0x0000) === "\\0"');
+}
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.4/S7.8.4_A5.1_T2.js b/js/src/tests/test262/ch07/7.8/7.8.4/S7.8.4_A5.1_T2.js
new file mode 100644
index 000000000..06830f080
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.4/S7.8.4_A5.1_T2.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.
+
+/**
+ * EscapeSequence :: 0
+ *
+ * @path ch07/7.8/7.8.4/S7.8.4_A5.1_T2.js
+ * @description "\u0000"
+ */
+
+//CHECK#1
+if ("\u0000" !== "\0") {
+ $ERROR('#1: "\\u0000" === "\\0"');
+}
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.4/S7.8.4_A5.1_T3.js b/js/src/tests/test262/ch07/7.8/7.8.4/S7.8.4_A5.1_T3.js
new file mode 100644
index 000000000..f7a1de6ac
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.4/S7.8.4_A5.1_T3.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.
+
+/**
+ * EscapeSequence :: 0
+ *
+ * @path ch07/7.8/7.8.4/S7.8.4_A5.1_T3.js
+ * @description "\x00"
+ */
+
+//CHECK#1
+if ("\x00" !== "\0") {
+ $ERROR('#1: "\\x00" === "\\0"');
+}
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.4/S7.8.4_A6.1_T1.js b/js/src/tests/test262/ch07/7.8/7.8.4/S7.8.4_A6.1_T1.js
new file mode 100644
index 000000000..ce8f5dae8
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.4/S7.8.4_A6.1_T1.js
@@ -0,0 +1,90 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * EscapeSequence :: HexEscapeSequence :: x HexDigit HexDigit
+ *
+ * @path ch07/7.8/7.8.4/S7.8.4_A6.1_T1.js
+ * @description HexEscapeSequence :: HexDigit
+ */
+
+//CHECK#0
+if ("\x00" !== String.fromCharCode("0")) {
+ $ERROR('#0: "\\x00" === String.fromCharCode("0")');
+}
+
+//CHECK#1
+if ("\x01" !== String.fromCharCode("1")) {
+ $ERROR('#1: "\\x01" === String.fromCharCode("1")');
+}
+
+//CHECK#2
+if ("\x02" !== String.fromCharCode("2")) {
+ $ERROR('#2: "\\x02" === String.fromCharCode("2")');
+}
+
+//CHECK#3
+if ("\x03" !== String.fromCharCode("3")) {
+ $ERROR('#3: "\\x03" === String.fromCharCode("3")');
+}
+
+//CHECK#4
+if ("\x04" !== String.fromCharCode("4")) {
+ $ERROR('#4: "\\x04" === String.fromCharCode("4")');
+}
+
+//CHECK#5
+if ("\x05" !== String.fromCharCode("5")) {
+ $ERROR('#5: "\\x05" === String.fromCharCode("5")');
+}
+
+//CHECK#6
+if ("\x06" !== String.fromCharCode("6")) {
+ $ERROR('#6: "\\x06" === String.fromCharCode("6")');
+}
+
+//CHECK#7
+if ("\x07" !== String.fromCharCode("7")) {
+ $ERROR('#7: "\\x07" === String.fromCharCode("7")');
+}
+
+//CHECK#8
+if ("\x08" !== String.fromCharCode("8")) {
+ $ERROR('#8: "\\x08" === String.fromCharCode("8")');
+}
+
+//CHECK#9
+if ("\x09" !== String.fromCharCode("9")) {
+ $ERROR('#9: "\\x09" === String.fromCharCode("9")');
+}
+
+//CHECK#A
+if ("\x0A" !== String.fromCharCode("10")) {
+ $ERROR('#A: "\\x0A" === String.fromCharCode("10")');
+}
+
+//CHECK#B
+if ("\x0B" !== String.fromCharCode("11")) {
+ $ERROR('#B: "\\x0B" === String.fromCharCode("11")');
+}
+
+//CHECK#C
+if ("\x0C" !== String.fromCharCode("12")) {
+ $ERROR('#C: "\\x0C" === String.fromCharCode("12")');
+}
+
+//CHECK#D
+if ("\x0D" !== String.fromCharCode("13")) {
+ $ERROR('#D: "\\x0D" === String.fromCharCode("13")');
+}
+
+//CHECK#E
+if ("\x0E" !== String.fromCharCode("14")) {
+ $ERROR('#E: "\\x0E" === String.fromCharCode("14")');
+}
+
+//CHECK#F
+if ("\x0F" !== String.fromCharCode("15")) {
+ $ERROR('#F: "\\x0F" === String.fromCharCode("15")');
+}
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.4/S7.8.4_A6.1_T2.js b/js/src/tests/test262/ch07/7.8/7.8.4/S7.8.4_A6.1_T2.js
new file mode 100644
index 000000000..64cdc0ebe
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.4/S7.8.4_A6.1_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.
+
+/**
+ * EscapeSequence :: HexEscapeSequence :: x HexDigit HexDigit
+ *
+ * @path ch07/7.8/7.8.4/S7.8.4_A6.1_T2.js
+ * @description HexEscapeSequence :: ENGLISH CAPITAL ALPHABET
+ */
+
+//CHECK#A-Z
+var hex = ["\x41", "\x42", "\x43", "\x44", "\x45", "\x46", "\x47", "\x48", "\x49", "\x4A", "\x4B", "\x4C", "\x4D", "\x4E", "\x4F", "\x50", "\x51", "\x52", "\x53", "\x54", "\x55", "\x56", "\x57", "\x58", "\x59", "\x5A"];
+var character = ["A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"];
+for (var index = 0; index <= 25; index++) {
+ if (hex[index] !== character[index]) {
+ $ERROR('#' + character[index] + ' ');
+ }
+}
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.4/S7.8.4_A6.1_T3.js b/js/src/tests/test262/ch07/7.8/7.8.4/S7.8.4_A6.1_T3.js
new file mode 100644
index 000000000..c3ef6e4d3
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.4/S7.8.4_A6.1_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.
+
+/**
+ * EscapeSequence :: HexEscapeSequence :: x HexDigit HexDigit
+ *
+ * @path ch07/7.8/7.8.4/S7.8.4_A6.1_T3.js
+ * @description HexEscapeSequence :: ENGLISH SMALL ALPHABET
+ */
+
+//CHECK#a-z
+var hex = ["\x61", "\x62", "\x63", "\x64", "\x65", "\x66", "\x67", "\x68", "\x69", "\x6A", "\x6B", "\x6C", "\x6D", "\x6E", "\x6F", "\x70", "\x71", "\x72", "\x73", "\x74", "\x75", "\x76", "\x77", "\x78", "\x79", "\x7A"];
+var character = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z"];
+for (var index = 0; index <= 25; index++) {
+ if (hex[index] !== character[index]) {
+ $ERROR('#' + character[index] + ' ');
+ }
+}
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.4/S7.8.4_A6.3_T1.js b/js/src/tests/test262/ch07/7.8/7.8.4/S7.8.4_A6.3_T1.js
new file mode 100644
index 000000000..4611ba25a
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.4/S7.8.4_A6.3_T1.js
@@ -0,0 +1,85 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * \x HexDigit HexDigit SingleStringCharacter
+ *
+ * @path ch07/7.8/7.8.4/S7.8.4_A6.3_T1.js
+ * @description Check similar to ('\x01F' === String.fromCharCode('1') + 'F')
+ */
+
+//CHECK#1
+if ('\x01F' !== String.fromCharCode('1') + 'F') {
+ $ERROR("#1: '\x01F' === String.fromCharCode('1') + 'F'");
+}
+
+//CHECK#2
+if ('\x02E' !== String.fromCharCode('2') + 'E') {
+ $ERROR("#2: '\x02E' === String.fromCharCode('2') + 'E'");
+}
+
+//CHECK#3
+if ('\x03D' !== String.fromCharCode('3') + 'D') {
+ $ERROR("#3: '\x03D' === String.fromCharCode('3') + 'D'");
+}
+
+//CHECK#4
+if ('\x04C' !== String.fromCharCode('4') + 'C') {
+ $ERROR("#4: '\x04C' === String.fromCharCode('4') + 'C'");
+}
+
+//CHECK#5
+if ('\x05B' !== String.fromCharCode('5') + 'B') {
+ $ERROR("#5: '\x05B' === String.fromCharCode('5') + 'B'");
+}
+
+//CHECK#6
+if ('\x06A' !== String.fromCharCode('6') + 'A') {
+ $ERROR("#6: '\x06A' === String.fromCharCode('6') + 'A'");
+}
+
+//CHECK#7
+if ('\x079' !== String.fromCharCode('7') + '9') {
+ $ERROR("#7: '\x079' === String.fromCharCode('7') + '9'");
+}
+
+//CHECK#8
+if ('\x088' !== String.fromCharCode('8') + '8') {
+ $ERROR("#8: '\x088' === String.fromCharCode('8') + '8'");
+}
+
+//CHECK#9
+if ('\x097' !== String.fromCharCode('9') + '7') {
+ $ERROR("#9: '\x097' === String.fromCharCode('9') + '7'");
+}
+
+//CHECK#A
+if ('\x0A6' !== String.fromCharCode('10') + '6') {
+ $ERROR("#A: '\x0A6' === String.fromCharCode('10') + '6'");
+}
+
+//CHECK#B
+if ('\x0B5' !== String.fromCharCode('11') + '5') {
+ $ERROR("#B: '\x0B5' === String.fromCharCode('11') + '5'");
+}
+
+//CHECK#C
+if ('\x0C4' !== String.fromCharCode('12') + '4') {
+ $ERROR("#C: '\x0C4' === String.fromCharCode('12') + '4'");
+}
+
+//CHECK#D
+if ('\x0D3' !== String.fromCharCode('13') + '3') {
+ $ERROR("#D: '\x0D3' === String.fromCharCode('13') + '3'");
+}
+
+//CHECK#E
+if ('\x0E2' !== String.fromCharCode('14') + '2') {
+ $ERROR("#E: '\x0E2' === String.fromCharCode('14') + '2'");
+}
+
+//CHECK#F
+if ('\x0F1' !== String.fromCharCode('15') + '1') {
+ $ERROR("#F: '\x0F1' === String.fromCharCode('15') + '1'");
+}
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.4/S7.8.4_A7.1_T1.js b/js/src/tests/test262/ch07/7.8/7.8.4/S7.8.4_A7.1_T1.js
new file mode 100644
index 000000000..512de11f2
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.4/S7.8.4_A7.1_T1.js
@@ -0,0 +1,90 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * EscapeSequence :: UnicodeEscapeSequence :: u HexDigit HexDigit HexDigit HexDigit
+ *
+ * @path ch07/7.8/7.8.4/S7.8.4_A7.1_T1.js
+ * @description Check similar to ("\u0000" === String.fromCharCode("0"))
+ */
+
+//CHECK#0
+if ("\u0000" !== String.fromCharCode("0")) {
+ $ERROR('#0: "\\u0000" === String.fromCharCode("0")');
+}
+
+//CHECK#1
+if ("\u0001" !== String.fromCharCode("1")) {
+ $ERROR('#1: "\\u0001" === String.fromCharCode("1")');
+}
+
+//CHECK#2
+if ("\u0002" !== String.fromCharCode("2")) {
+ $ERROR('#2: "\\u0002" === String.fromCharCode("2")');
+}
+
+//CHECK#3
+if ("\u0003" !== String.fromCharCode("3")) {
+ $ERROR('#3: "\\u0003" === String.fromCharCode("3")');
+}
+
+//CHECK#4
+if ("\u0004" !== String.fromCharCode("4")) {
+ $ERROR('#4: "\\u0004" === String.fromCharCode("4")');
+}
+
+//CHECK#5
+if ("\u0005" !== String.fromCharCode("5")) {
+ $ERROR('#5: "\\u0005" === String.fromCharCode("5")');
+}
+
+//CHECK#6
+if ("\u0006" !== String.fromCharCode("6")) {
+ $ERROR('#6: "\\u0006" === String.fromCharCode("6")');
+}
+
+//CHECK#7
+if ("\u0007" !== String.fromCharCode("7")) {
+ $ERROR('#7: "\\u0007" === String.fromCharCode("7")');
+}
+
+//CHECK#8
+if ("\u0008" !== String.fromCharCode("8")) {
+ $ERROR('#8: "\\u0008" === String.fromCharCode("8")');
+}
+
+//CHECK#9
+if ("\u0009" !== String.fromCharCode("9")) {
+ $ERROR('#9: "\\u0009" === String.fromCharCode("9")');
+}
+
+//CHECK#A
+if ("\u000A" !== String.fromCharCode("10")) {
+ $ERROR('#A: "\\u000A" === String.fromCharCode("10")');
+}
+
+//CHECK#B
+if ("\u000B" !== String.fromCharCode("11")) {
+ $ERROR('#B: "\\u000B" === String.fromCharCode("11")');
+}
+
+//CHECK#C
+if ("\u000C" !== String.fromCharCode("12")) {
+ $ERROR('#C: "\\u000C" === String.fromCharCode("12")');
+}
+
+//CHECK#D
+if ("\u000D" !== String.fromCharCode("13")) {
+ $ERROR('#D: "\\u000D" === String.fromCharCode("13")');
+}
+
+//CHECK#E
+if ("\u000E" !== String.fromCharCode("14")) {
+ $ERROR('#E: "\\u000E" === String.fromCharCode("14")');
+}
+
+//CHECK#F
+if ("\u000F" !== String.fromCharCode("15")) {
+ $ERROR('#F: "\\u000F" === String.fromCharCode("15")');
+}
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.4/S7.8.4_A7.1_T2.js b/js/src/tests/test262/ch07/7.8/7.8.4/S7.8.4_A7.1_T2.js
new file mode 100644
index 000000000..32c6c3455
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.4/S7.8.4_A7.1_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.
+
+/**
+ * EscapeSequence :: UnicodeEscapeSequence :: u HexDigit HexDigit HexDigit HexDigit
+ *
+ * @path ch07/7.8/7.8.4/S7.8.4_A7.1_T2.js
+ * @description UnicodeEscapeSequence :: ENGLISH CAPITAL ALPHABET
+ */
+
+//CHECK#A-Z
+var unicode = ["\u0041", "\u0042", "\u0043", "\u0044", "\u0045", "\u0046", "\u0047", "\u0048", "\u0049", "\u004A", "\u004B", "\u004C", "\u004D", "\u004E", "\u004F", "\u0050", "\u0051", "\u0052", "\u0053", "\u0054", "\u0055", "\u0056", "\u0057", "\u0058", "\u0059", "\u005A"];
+var character = ["A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"];
+for (var index = 0; index <= 25; index++) {
+ if (unicode[index] !== character[index]) {
+ $ERROR('#' + character[index] + ' ');
+ }
+}
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.4/S7.8.4_A7.1_T3.js b/js/src/tests/test262/ch07/7.8/7.8.4/S7.8.4_A7.1_T3.js
new file mode 100644
index 000000000..7bf3ef85c
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.4/S7.8.4_A7.1_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.
+
+/**
+ * EscapeSequence :: UnicodeEscapeSequence :: u HexDigit HexDigit HexDigit HexDigit
+ *
+ * @path ch07/7.8/7.8.4/S7.8.4_A7.1_T3.js
+ * @description UnicodeEscapeSequence :: ENGLISH SMALL ALPHABET
+ */
+
+//CHECK#a-z
+var unicode = ["\u0061", "\u0062", "\u0063", "\u0064", "\u0065", "\u0066", "\u0067", "\u0068", "\u0069", "\u006A", "\u006B", "\u006C", "\u006D", "\u006E", "\u006F", "\u0070", "\u0071", "\u0072", "\u0073", "\u0074", "\u0075", "\u0076", "\u0077", "\u0078", "\u0079", "\u007A"];
+var character = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z"];
+for (var index = 0; index <= 25; index++) {
+ if (unicode[index] !== character[index]) {
+ $ERROR('#' + character[index] + ' ');
+ }
+}
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.4/S7.8.4_A7.1_T4.js b/js/src/tests/test262/ch07/7.8/7.8.4/S7.8.4_A7.1_T4.js
new file mode 100644
index 000000000..11b4f5620
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.4/S7.8.4_A7.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.
+
+/**
+ * EscapeSequence :: UnicodeEscapeSequence :: u HexDigit HexDigit HexDigit HexDigit
+ *
+ * @path ch07/7.8/7.8.4/S7.8.4_A7.1_T4.js
+ * @description UnicodeEscapeSequence :: u000G is incorrect
+ * @negative
+ */
+
+//CHECK#
+"\u000G"
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.4/S7.8.4_A7.2_T1.js b/js/src/tests/test262/ch07/7.8/7.8.4/S7.8.4_A7.2_T1.js
new file mode 100644
index 000000000..6c3cff0dd
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.4/S7.8.4_A7.2_T1.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.
+
+/**
+ * UnicodeEscapeSequence :: u HexDigit (one, two or three time) is incorrect
+ *
+ * @path ch07/7.8/7.8.4/S7.8.4_A7.2_T1.js
+ * @description :: HexDigit :: 1
+ * @negative
+ */
+
+//CHECK#1
+"\u1"
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.4/S7.8.4_A7.2_T2.js b/js/src/tests/test262/ch07/7.8/7.8.4/S7.8.4_A7.2_T2.js
new file mode 100644
index 000000000..c1918f414
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.4/S7.8.4_A7.2_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.
+
+/**
+ * UnicodeEscapeSequence :: u HexDigit (one, two or three time) is incorrect
+ *
+ * @path ch07/7.8/7.8.4/S7.8.4_A7.2_T2.js
+ * @description :: HexDigit :: A
+ * @negative
+ */
+
+//CHECK#1
+"\uA"
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.4/S7.8.4_A7.2_T3.js b/js/src/tests/test262/ch07/7.8/7.8.4/S7.8.4_A7.2_T3.js
new file mode 100644
index 000000000..b1eee5923
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.4/S7.8.4_A7.2_T3.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.
+
+/**
+ * UnicodeEscapeSequence :: u HexDigit (one, two or three time) is incorrect
+ *
+ * @path ch07/7.8/7.8.4/S7.8.4_A7.2_T3.js
+ * @description :: HexDigit :: 1
+ * @negative
+ */
+
+//CHECK#1
+"\u11"
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.4/S7.8.4_A7.2_T4.js b/js/src/tests/test262/ch07/7.8/7.8.4/S7.8.4_A7.2_T4.js
new file mode 100644
index 000000000..6fe1c8afe
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.4/S7.8.4_A7.2_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.
+
+/**
+ * UnicodeEscapeSequence :: u HexDigit (one, two or three time) is incorrect
+ *
+ * @path ch07/7.8/7.8.4/S7.8.4_A7.2_T4.js
+ * @description :: HexDigit :: A
+ * @negative
+ */
+
+//CHECK#1
+"\uAA"
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.4/S7.8.4_A7.2_T5.js b/js/src/tests/test262/ch07/7.8/7.8.4/S7.8.4_A7.2_T5.js
new file mode 100644
index 000000000..f047e5337
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.4/S7.8.4_A7.2_T5.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.
+
+/**
+ * UnicodeEscapeSequence :: u HexDigit (one, two or three time) is incorrect
+ *
+ * @path ch07/7.8/7.8.4/S7.8.4_A7.2_T5.js
+ * @description :: HexDigit :: 1
+ * @negative
+ */
+
+//CHECK#1
+"\u111"
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.4/S7.8.4_A7.2_T6.js b/js/src/tests/test262/ch07/7.8/7.8.4/S7.8.4_A7.2_T6.js
new file mode 100644
index 000000000..5d28d4a5e
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.4/S7.8.4_A7.2_T6.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.
+
+/**
+ * UnicodeEscapeSequence :: u HexDigit (one, two or three time) is incorrect
+ *
+ * @path ch07/7.8/7.8.4/S7.8.4_A7.2_T6.js
+ * @description :: HexDigit :: A
+ * @negative
+ */
+
+//CHECK#1
+"\uAAA"
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.4/S7.8.4_A7.3_T1.js b/js/src/tests/test262/ch07/7.8/7.8.4/S7.8.4_A7.3_T1.js
new file mode 100644
index 000000000..baaeaae6f
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.4/S7.8.4_A7.3_T1.js
@@ -0,0 +1,85 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * \u HexDigit HexDigit HexDigit HexDigit DoubleStringCharacter
+ *
+ * @path ch07/7.8/7.8.4/S7.8.4_A7.3_T1.js
+ * @description Check similar to ("\u0001F" === String.fromCharCode("1") + "F")
+ */
+
+//CHECK#1
+if ("\u0001F" !== String.fromCharCode("1") + "F") {
+ $ERROR('#1: "\\u0001F" === String.fromCharCode("1") + "F"');
+}
+
+//CHECK#2
+if ("\u0002E" !== String.fromCharCode("2") + "E") {
+ $ERROR('#2: "\\u0002E" === String.fromCharCode("2") + "E"');
+}
+
+//CHECK#3
+if ("\u0003D" !== String.fromCharCode("3") + "D") {
+ $ERROR('#3: "\\u0003D" === String.fromCharCode("3") + "D"');
+}
+
+//CHECK#4
+if ("\u0004C" !== String.fromCharCode("4") + "C") {
+ $ERROR('#4: "\\u0004C" === String.fromCharCode("4") + "C"');
+}
+
+//CHECK#5
+if ("\u0005B" !== String.fromCharCode("5") + "B") {
+ $ERROR('#5: "\\u0005B" === String.fromCharCode("5") + "B"');
+}
+
+//CHECK#6
+if ("\u0006A" !== String.fromCharCode("6") + "A") {
+ $ERROR('#6: "\\u0006A" === String.fromCharCode("6") + "A"');
+}
+
+//CHECK#7
+if ("\u00079" !== String.fromCharCode("7") + "9") {
+ $ERROR('#7: "\\u00079" === String.fromCharCode("7") + "9"');
+}
+
+//CHECK#8
+if ("\u00088" !== String.fromCharCode("8") + "8") {
+ $ERROR('#8: "\\u00088" === String.fromCharCode("8") + "8"');
+}
+
+//CHECK#9
+if ("\u00097" !== String.fromCharCode("9") + "7") {
+ $ERROR('#9: "\\u00097" === String.fromCharCode("9") + "7"');
+}
+
+//CHECK#A
+if ("\u000A6" !== String.fromCharCode("10") + "6") {
+ $ERROR('#A: "\\u000A6" === String.fromCharCode("10") + "6"');
+}
+
+//CHECK#B
+if ("\u000B5" !== String.fromCharCode("11") + "5") {
+ $ERROR('#B: "\\u000B5" === String.fromCharCode("11") + "5"');
+}
+
+//CHECK#C
+if ("\u000C4" !== String.fromCharCode("12") + "4") {
+ $ERROR('#C: "\\u000C4" === String.fromCharCode("12") + "4"');
+}
+
+//CHECK#D
+if ("\u000D3" !== String.fromCharCode("13") + "3") {
+ $ERROR('#D: "\\u000D3" === String.fromCharCode("13") + "3"');
+}
+
+//CHECK#E
+if ("\u000E2" !== String.fromCharCode("14") + "2") {
+ $ERROR('#E: "\\u000E2" === String.fromCharCode("14") + "2"');
+}
+
+//CHECK#F
+if ("\u000F1" !== String.fromCharCode("15") + "1") {
+ $ERROR('#F: "\\u000F1" === String.fromCharCode("15") + "1"');
+}
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.4/browser.js b/js/src/tests/test262/ch07/7.8/7.8.4/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.4/browser.js
diff --git a/js/src/tests/test262/ch07/7.8/7.8.4/shell.js b/js/src/tests/test262/ch07/7.8/7.8.4/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.4/shell.js
diff --git a/js/src/tests/test262/ch07/7.8/7.8.5/7.8.5-1.js b/js/src/tests/test262/ch07/7.8/7.8.5/7.8.5-1.js
new file mode 100644
index 000000000..a8fe6e29f
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.5/7.8.5-1.js
@@ -0,0 +1,20 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.8/7.8.5/7.8.5-1.js
+ * @description Literal RegExp Objects - SyntaxError exception is thrown if the RegularExpressionNonTerminator position of a RegularExpressionBackslashSequence is a LineTerminator.
+ */
+
+
+function testcase() {
+ try {
+ eval("var regExp = /\\\rn/;");
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch07/7.8/7.8.5/7.8.5-1gs.js b/js/src/tests/test262/ch07/7.8/7.8.5/7.8.5-1gs.js
new file mode 100644
index 000000000..4b22a6193
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.5/7.8.5-1gs.js
@@ -0,0 +1,15 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+
+/**
+ * @path ch07/7.8/7.8.5/7.8.5-1gs.js
+ * @description Empty literal RegExp should result in a SyntaxError
+ * @negative ^((?!NotEarlyError).)*$
+ */
+
+throw NotEarlyError;
+var re = //;
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.5/7.8.5-2gs.js b/js/src/tests/test262/ch07/7.8/7.8.5/7.8.5-2gs.js
new file mode 100644
index 000000000..b67638b03
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.5/7.8.5-2gs.js
@@ -0,0 +1,13 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+
+/**
+ * @path ch07/7.8/7.8.5/7.8.5-2gs.js
+ * @description Empty dynamic RegExp should not result in a SyntaxError
+ */
+
+var re = new RegExp("");
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A1.1_T1.js b/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A1.1_T1.js
new file mode 100644
index 000000000..638177170
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A1.1_T1.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.
+
+/**
+ * RegularExpressionFirstChar :: NonTerminator but not * or \ or /,
+ * RegularExpressionChars :: [empty], RegularExpressionFlags :: [empty]
+ *
+ * @path ch07/7.8/7.8.5/S7.8.5_A1.1_T1.js
+ * @description Without eval
+ */
+
+//CHECK#1
+if (/1/.source !== "1") {
+ $ERROR('#1: /1/');
+}
+
+//CHECK#2
+if (/a/.source !== "a") {
+ $ERROR('#2: /a/');
+}
+
+//CHECK#3
+if (/;/.source !== ";") {
+ $ERROR('#3: /;/');
+}
+
+//CHECK#4
+if (/ /.source !== " ") {
+ $ERROR('#4: / /');
+}
+
+//CHECK#5
+if (/\u0041/.source !== "\\u0041") {
+ $ERROR('#5: /\\u0041/');
+}
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A1.1_T2.js b/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A1.1_T2.js
new file mode 100644
index 000000000..e46d2e24d
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A1.1_T2.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.
+
+/**
+ * RegularExpressionFirstChar :: NonTerminator but not * or \ or /,
+ * RegularExpressionChars :: [empty], RegularExpressionFlags :: [empty]
+ *
+ * @path ch07/7.8/7.8.5/S7.8.5_A1.1_T2.js
+ * @description Complex test with eval, using syntax pattern
+ */
+
+//CHECK
+var errorCount = 0;
+var count = 0;
+var hex = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F"];
+for (var i1 = 0; i1 < 16; i1++) {
+ for (var i2 = 0; i2 < 16; i2++) {
+ for (var i3 = 0; i3 < 16; i3++) {
+ for (var i4 = 0; i4 < 16; i4++) {
+ try {
+ var uu = hex[i1] + hex[i2] + hex[i3] + hex[i4];
+ var Elimination =
+ ((uu === "002A") || (uu === "002F") || (uu === "005C") || (uu === "002B") ||
+ (uu === "003F") || (uu === "0028") || (uu === "0029") ||
+ (uu === "005B") || (uu === "005D") || (uu === "007B") || (uu === "007D"));
+ /*
+ * \u002A / \u002F \ \u005C + \u002B
+ ? \u003F ( \u0028 ) \u0029
+ [ \u005B ] \u005D { \u007B } \u007D
+ */
+ var LineTerminator = ((uu === "000A") || (uu === "000D") || (uu === "2028") || (uu === "2029"));
+ if ((Elimination || LineTerminator ) === false) {
+ var xx = String.fromCharCode("0x" + uu);
+ var pattern = eval("/" + xx + "/");
+ if (pattern.source !== xx) {
+ $ERROR('#' + uu + ' ');
+ errorCount++;
+ }
+ } else {
+ count--;
+ }
+ } catch (e) {
+ $ERROR('#' + uu + ' ');
+ errorCount++;
+ }
+ count++;
+ }
+ }
+ }
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Regular Expression First Char in ' + count);
+}
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A1.2_T1.js b/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A1.2_T1.js
new file mode 100644
index 000000000..d7013d049
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A1.2_T1.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.
+
+/**
+ * RegularExpressionFirstChar :: * or \ or / or [empty] is incorrect
+ *
+ * @path ch07/7.8/7.8.5/S7.8.5_A1.2_T1.js
+ * @description *
+ * @negative
+ */
+
+//CHECK#1
+/*/
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A1.2_T2.js b/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A1.2_T2.js
new file mode 100644
index 000000000..b050d8c53
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A1.2_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.
+
+/**
+ * RegularExpressionFirstChar :: * or \ or / or [empty] is incorrect
+ *
+ * @path ch07/7.8/7.8.5/S7.8.5_A1.2_T2.js
+ * @description \
+ * @negative
+ */
+
+//CHECK#1
+/\/
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A1.2_T3.js b/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A1.2_T3.js
new file mode 100644
index 000000000..abd943bac
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A1.2_T3.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.
+
+/**
+ * RegularExpressionFirstChar :: * or \ or / or [empty] is incorrect
+ *
+ * @path ch07/7.8/7.8.5/S7.8.5_A1.2_T3.js
+ * @description /
+ * @negative
+ */
+
+//CHECK#1
+///
+.source;
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A1.2_T4.js b/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A1.2_T4.js
new file mode 100644
index 000000000..6d341f991
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A1.2_T4.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.
+
+/**
+ * RegularExpressionFirstChar :: * or \ or / or [empty] is incorrect
+ *
+ * @path ch07/7.8/7.8.5/S7.8.5_A1.2_T4.js
+ * @description [empty]
+ * @negative
+ */
+
+//CHECK#1
+//
+.source;
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A1.3_T1.js b/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A1.3_T1.js
new file mode 100644
index 000000000..4fdba3e4c
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_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.
+
+/**
+ * RegularExpressionFirstChar :: LineTerminator is incorrect
+ *
+ * @path ch07/7.8/7.8.5/S7.8.5_A1.3_T1.js
+ * @description Line Feed, without eval
+ * @negative
+ */
+
+//CHECK#1
+/
+/
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A1.3_T2.js b/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A1.3_T2.js
new file mode 100644
index 000000000..a2ac51235
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A1.3_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.
+
+/**
+ * RegularExpressionFirstChar :: LineTerminator is incorrect
+ *
+ * @path ch07/7.8/7.8.5/S7.8.5_A1.3_T2.js
+ * @description Line Feed, with eval
+ */
+
+//CHECK#1
+try {
+ eval("/\u000A/").source;
+ $ERROR('#1.1: RegularExpressionFirstChar :: Line Feed is incorrect. Actual: ' + (eval("/\u000A/").source));
+}
+catch (e) {
+ if ((e instanceof SyntaxError) !== true) {
+ $ERROR('#1.2: RegularExpressionFirstChar :: Line Feed is incorrect. Actual: ' + (e));
+ }
+}
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A1.3_T3.js b/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A1.3_T3.js
new file mode 100644
index 000000000..95d7ebcd6
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A1.3_T3.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.
+
+/**
+ * RegularExpressionFirstChar :: LineTerminator is incorrect
+ *
+ * @path ch07/7.8/7.8.5/S7.8.5_A1.3_T3.js
+ * @description Carriage Return, without eval
+ * @negative
+ */
+
+//CHECK#1
+/
+/
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A1.3_T4.js b/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A1.3_T4.js
new file mode 100644
index 000000000..638eecf69
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A1.3_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.
+
+/**
+ * RegularExpressionFirstChar :: LineTerminator is incorrect
+ *
+ * @path ch07/7.8/7.8.5/S7.8.5_A1.3_T4.js
+ * @description Carriage Return, with eval
+ */
+
+//CHECK#1
+try {
+ eval("/\u000D/").source;
+ $ERROR('#1.1: RegularExpressionFirstChar :: Carriage Return is incorrect. Actual: ' + (eval("/\u000D/").source));
+}
+catch (e) {
+ if ((e instanceof SyntaxError) !== true) {
+ $ERROR('#1.2: RegularExpressionFirstChar :: Carriage Return is incorrect. Actual: ' + (e));
+ }
+}
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A1.3_T5.js b/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A1.3_T5.js
new file mode 100644
index 000000000..c621df543
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A1.3_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.
+
+/**
+ * RegularExpressionFirstChar :: LineTerminator is incorrect
+ *
+ * @path ch07/7.8/7.8.5/S7.8.5_A1.3_T5.js
+ * @description Line separator, with eval
+ */
+
+//CHECK#1
+try {
+ eval("/\u2028/").source;
+ $ERROR('#1.1: RegularExpressionFirstChar :: Line separator is incorrect. Actual: ' + (eval("/\u2028/").source));
+}
+catch (e) {
+ if ((e instanceof SyntaxError) !== true) {
+ $ERROR('#1.2: RegularExpressionFirstChar :: Line separator is incorrect. Actual: ' + (e));
+ }
+}
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A1.3_T6.js b/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A1.3_T6.js
new file mode 100644
index 000000000..1ad88db22
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A1.3_T6.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.
+
+/**
+ * RegularExpressionFirstChar :: LineTerminator is incorrect
+ *
+ * @path ch07/7.8/7.8.5/S7.8.5_A1.3_T6.js
+ * @description Paragraph separator, with eval
+ */
+
+//CHECK#1
+try {
+ eval("/\u2029/").source;
+ $ERROR('#1.1: RegularExpressionFirstChar :: Paragraph separator is incorrect. Actual: ' + (eval("/\u2029/").source));
+}
+catch (e) {
+ if ((e instanceof SyntaxError) !== true) {
+ $ERROR('#1.2: RegularExpressionFirstChar :: Paragraph separator is incorrect. Actual: ' + (e));
+ }
+}
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A1.4_T1.js b/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A1.4_T1.js
new file mode 100644
index 000000000..0c87e0b3d
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A1.4_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.
+
+/**
+ * RegularExpressionFirstChar :: BackslashSequence :: \NonTerminator,
+ * RegularExpressionChars :: [empty], RegularExpressionFlags :: [empty]
+ *
+ * @path ch07/7.8/7.8.5/S7.8.5_A1.4_T1.js
+ * @description Check similar to (/\1/.source === "\\1")
+ */
+
+//CHECK#1
+if (/\1/.source !== "\\1") {
+ $ERROR('#1: /\\1/');
+}
+
+//CHECK#2
+if (/\a/.source !== "\\a") {
+ $ERROR('#2: /\\a/');
+}
+
+//CHECK#3
+if (/\;/.source !== "\\;") {
+ $ERROR('#3: /\\;/');
+}
+
+//CHECK#4
+if (/\ /.source !== "\\ ") {
+ $ERROR('#4: /\\ /');
+}
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A1.4_T2.js b/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A1.4_T2.js
new file mode 100644
index 000000000..f17d8332a
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A1.4_T2.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.
+
+/**
+ * RegularExpressionFirstChar :: BackslashSequence :: \NonTerminator,
+ * RegularExpressionChars :: [empty], RegularExpressionFlags :: [empty]
+ *
+ * @path ch07/7.8/7.8.5/S7.8.5_A1.4_T2.js
+ * @description Complex test with eval, using syntax pattern
+ */
+
+//CHECK
+var errorCount = 0;
+var count = 0;
+var hex = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F"];
+for (var i1 = 0; i1 < 16; i1++) {
+ for (var i2 = 0; i2 < 16; i2++) {
+ for (var i3 = 0; i3 < 16; i3++) {
+ for (var i4 = 0; i4 < 16; i4++) {
+ try {
+ var uu = hex[i1] + hex[i2] + hex[i3] + hex[i4];
+ var Elimination =
+ ((uu === "002A") || (uu === "002F") || (uu === "005C") || (uu === "002B") ||
+ (uu === "003F") || (uu === "0028") || (uu === "0029") ||
+ (uu === "005B") || (uu === "005D") || (uu === "007B") || (uu === "007D"));
+ /*
+ * \u002A / \u002F \ \u005C + \u002B
+ ? \u003F ( \u0028 ) \u0029
+ [ \u005B ] \u005D { \u007B } \u007D
+ */
+ var LineTerminator = ((uu === "000A") || (uu === "000D") || (uu === "2028") || (uu === "2029"));
+ if ((Elimination || LineTerminator ) === false) {
+ var xx = "\\" + String.fromCharCode("0x" + uu);
+ var pattern = eval("/" + xx + "/");
+ if (pattern.source !== xx) {
+ $ERROR('#' + uu + ' ');
+ errorCount++;
+ }
+ } else {
+ count--;
+ }
+ } catch (e) {
+ $ERROR('#' + uu + ' ');
+ errorCount++;
+ }
+ count++;
+ }
+ }
+ }
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Regular Expression First Char in ' + count);
+}
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A1.5_T1.js b/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A1.5_T1.js
new file mode 100644
index 000000000..94a9734d0
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A1.5_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.
+
+/**
+ * RegularExpressionFirstChar :: BackslashSequence :: \LineTerminator is incorrect
+ *
+ * @path ch07/7.8/7.8.5/S7.8.5_A1.5_T1.js
+ * @description Line Feed, without eval
+ * @negative
+ */
+
+//CHECK#1
+/\
+/
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A1.5_T2.js b/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A1.5_T2.js
new file mode 100644
index 000000000..923e3f737
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A1.5_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.
+
+/**
+ * RegularExpressionFirstChar :: BackslashSequence :: \LineTerminator is incorrect
+ *
+ * @path ch07/7.8/7.8.5/S7.8.5_A1.5_T2.js
+ * @description Line Feed, with eval
+ */
+
+//CHECK#1
+try {
+ eval("/\\\u000A/").source;
+ $ERROR('#1.1: RegularExpressionFirstChar :: BackslashSequence :: \\Line Feed is incorrect. Actual: ' + (eval("/\\\u000A/").source));
+}
+catch (e) {
+ if ((e instanceof SyntaxError) !== true) {
+ $ERROR('#1.2: RegularExpressionFirstChar :: BackslashSequence :: \\Line Feed is incorrect. Actual: ' + (e));
+ }
+}
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A1.5_T3.js b/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A1.5_T3.js
new file mode 100644
index 000000000..3c349c10b
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A1.5_T3.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.
+
+/**
+ * RegularExpressionFirstChar :: BackslashSequence :: \LineTerminator is incorrect
+ *
+ * @path ch07/7.8/7.8.5/S7.8.5_A1.5_T3.js
+ * @description Carriage Return, without eval
+ * @negative
+ */
+
+//CHECK#1
+/\
+/
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A1.5_T4.js b/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A1.5_T4.js
new file mode 100644
index 000000000..e5b89920a
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A1.5_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.
+
+/**
+ * RegularExpressionFirstChar :: BackslashSequence :: \LineTerminator is incorrect
+ *
+ * @path ch07/7.8/7.8.5/S7.8.5_A1.5_T4.js
+ * @description Carriage Return, with eval
+ */
+
+//CHECK#1
+try {
+ eval("/\\\u000D/").source;
+ $ERROR('#1.1: RegularExpressionFirstChar :: BackslashSequence :: \\Carriage Return is incorrect. Actual: ' + (eval("/\\\u000D/").source));
+}
+catch (e) {
+ if ((e instanceof SyntaxError) !== true) {
+ $ERROR('#1.2: RegularExpressionFirstChar :: BackslashSequence :: \\Carriage Return is incorrect. Actual: ' + (e));
+ }
+}
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A1.5_T5.js b/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A1.5_T5.js
new file mode 100644
index 000000000..a9b6d9696
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A1.5_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.
+
+/**
+ * RegularExpressionFirstChar :: BackslashSequence :: \LineTerminator is incorrect
+ *
+ * @path ch07/7.8/7.8.5/S7.8.5_A1.5_T5.js
+ * @description Line separator, with eval
+ */
+
+//CHECK#1
+try {
+ eval("/\\\u2028/").source;
+ $ERROR('#1.1: RegularExpressionFirstChar :: BackslashSequence :: \\Line separator is incorrect. Actual: ' + (eval("/\\\u2028/").source));
+}
+catch (e) {
+ if ((e instanceof SyntaxError) !== true) {
+ $ERROR('#1.2: RegularExpressionFirstChar :: BackslashSequence :: \\Line separator is incorrect. Actual: ' + (e));
+ }
+}
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A1.5_T6.js b/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A1.5_T6.js
new file mode 100644
index 000000000..73345ed41
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A1.5_T6.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.
+
+/**
+ * RegularExpressionFirstChar :: BackslashSequence :: \LineTerminator is incorrect
+ *
+ * @path ch07/7.8/7.8.5/S7.8.5_A1.5_T6.js
+ * @description Paragraph separator, with eval
+ */
+
+//CHECK#1
+try {
+ eval("/\\\u2029/").source;
+ $ERROR('#1.1: RegularExpressionFirstChar :: BackslashSequence :: \\Paragraph separator is incorrect. Actual: ' + (eval("/\\\u2029/").source));
+}
+catch (e) {
+ if ((e instanceof SyntaxError) !== true) {
+ $ERROR('#1.2: RegularExpressionFirstChar :: BackslashSequence :: \\Paragraph separator is incorrect. Actual: ' + (e));
+ }
+}
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A2.1_T1.js b/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A2.1_T1.js
new file mode 100644
index 000000000..5b69da20d
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A2.1_T1.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.
+
+/**
+ * RegularExpressionChar :: NonTerminator but not \ or /,
+ * RegularExpressionFlags :: [empty]
+ *
+ * @path ch07/7.8/7.8.5/S7.8.5_A2.1_T1.js
+ * @description Without eval
+ */
+
+//CHECK#1
+if (/1a/.source !== "1a") {
+ $ERROR('#1: /1a/');
+}
+
+//CHECK#2
+if (/aa/.source !== "aa") {
+ $ERROR('#2: /aa/');
+}
+
+//CHECK#3
+if (/,;/.source !== ",;") {
+ $ERROR('#3: /,;/');
+}
+
+//CHECK#4
+if (/ /.source !== " ") {
+ $ERROR('#4: / /');
+}
+
+//CHECK#5
+if (/a\u0041/.source !== "a\\u0041") {
+ $ERROR('#5: /a\\u0041/');
+}
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A2.1_T2.js b/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A2.1_T2.js
new file mode 100644
index 000000000..b8e66b23e
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A2.1_T2.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.
+
+/**
+ * RegularExpressionChar :: NonTerminator but not \ or /,
+ * RegularExpressionFlags :: [empty]
+ *
+ * @path ch07/7.8/7.8.5/S7.8.5_A2.1_T2.js
+ * @description Complex test with eval, using syntax pattern
+ */
+
+//CHECK
+var errorCount = 0;
+var count = 0;
+var hex = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F"];
+for (var i1 = 0; i1 < 16; i1++) {
+ for (var i2 = 0; i2 < 16; i2++) {
+ for (var i3 = 0; i3 < 16; i3++) {
+ for (var i4 = 0; i4 < 16; i4++) {
+ try {
+ var uu = hex[i1] + hex[i2] + hex[i3] + hex[i4];
+ var Elimination =
+ ((uu === "002A") || (uu === "002F") || (uu === "005C") || (uu === "002B") ||
+ (uu === "003F") || (uu === "0028") || (uu === "0029") ||
+ (uu === "005B") || (uu === "005D") || (uu === "007B") || (uu === "007D"));
+ /*
+ * \u002A / \u002F \ \u005C + \u002B
+ ? \u003F ( \u0028 ) \u0029
+ [ \u005B ] \u005D { \u007B } \u007D
+ */
+ var LineTerminator = ((uu === "000A") || (uu === "000D") || (uu === "2028") || (uu === "2029"));
+ if ((Elimination || LineTerminator ) === false) {
+ var xx = "nnnn" + String.fromCharCode("0x" + uu);
+ var pattern = eval("/" + xx + "/");
+ if (pattern.source !== xx) {
+ $ERROR('#' + uu + ' ');
+ errorCount++;
+ }
+
+ } else {
+ count--;
+ }
+ } catch (e) {
+ $ERROR('#' + uu + ' ');
+ errorCount++;
+ }
+ count++;
+ }
+ }
+ }
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Regular Expression First Char in ' + count);
+}
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A2.2_T1.js b/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A2.2_T1.js
new file mode 100644
index 000000000..8231c0407
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A2.2_T1.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.
+
+/**
+ * RegularExpressionChar :: \ or / is incorrect
+ *
+ * @path ch07/7.8/7.8.5/S7.8.5_A2.2_T1.js
+ * @description \
+ * @negative
+ */
+
+//CHECK#1
+/a\/
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A2.2_T2.js b/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A2.2_T2.js
new file mode 100644
index 000000000..b80f21691
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A2.2_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.
+
+/**
+ * RegularExpressionChar :: \ or / is incorrect
+ *
+ * @path ch07/7.8/7.8.5/S7.8.5_A2.2_T2.js
+ * @description /
+ * @negative
+ */
+
+//CHECK#1
+/a//.source;
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A2.3_T1.js b/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A2.3_T1.js
new file mode 100644
index 000000000..fd42341e0
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A2.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.
+
+/**
+ * RegularExpressionChar :: LineTerminator is incorrect
+ *
+ * @path ch07/7.8/7.8.5/S7.8.5_A2.3_T1.js
+ * @description Line Feed, without eval
+ * @negative
+ */
+
+//CHECK#1
+/a
+/
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A2.3_T2.js b/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A2.3_T2.js
new file mode 100644
index 000000000..8f3523088
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A2.3_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.
+
+/**
+ * RegularExpressionChar :: LineTerminator is incorrect
+ *
+ * @path ch07/7.8/7.8.5/S7.8.5_A2.3_T2.js
+ * @description Line Feed, with eval
+ */
+
+//CHECK#1
+try {
+ eval("/a\u000A/").source;
+ $ERROR('#1.1: RegularExpressionChar :: Line Feedis incorrect. Actual: ' + (eval("/a\u000A/").source));
+}
+catch (e) {
+ if ((e instanceof SyntaxError) !== true) {
+ $ERROR('#1.2: RegularExpressionChar :: Line Feed is incorrect. Actual: ' + (e));
+ }
+}
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A2.3_T3.js b/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A2.3_T3.js
new file mode 100644
index 000000000..c9debb5c5
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A2.3_T3.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.
+
+/**
+ * RegularExpressionChar :: LineTerminator is incorrect
+ *
+ * @path ch07/7.8/7.8.5/S7.8.5_A2.3_T3.js
+ * @description Carriage Return, without eval
+ * @negative
+ */
+
+//CHECK#1
+/a
+/
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A2.3_T4.js b/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A2.3_T4.js
new file mode 100644
index 000000000..4c2dda384
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A2.3_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.
+
+/**
+ * RegularExpressionChar :: LineTerminator is incorrect
+ *
+ * @path ch07/7.8/7.8.5/S7.8.5_A2.3_T4.js
+ * @description Carriage Return, with eval
+ */
+
+//CHECK#1
+try {
+ eval("/a\u000D/").source;
+ $ERROR('#1.1: RegularExpressionChar :: Carriage Retur is incorrect. Actual: ' + (eval("/a\u000D/").source));
+}
+catch (e) {
+ if ((e instanceof SyntaxError) !== true) {
+ $ERROR('#1.2: RegularExpressionChar :: Carriage Retur is incorrect. Actual: ' + (e));
+ }
+}
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A2.3_T5.js b/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A2.3_T5.js
new file mode 100644
index 000000000..85d43801f
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A2.3_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.
+
+/**
+ * RegularExpressionChar :: LineTerminator is incorrect
+ *
+ * @path ch07/7.8/7.8.5/S7.8.5_A2.3_T5.js
+ * @description Line separator, with eval
+ */
+
+//CHECK#1
+try {
+ eval("/a\u2028/").source;
+ $ERROR('#1.1: RegularExpressionChar :: Line separator is incorrect. Actual: ' + (eval("/a\u2028/").source));
+}
+catch (e) {
+ if ((e instanceof SyntaxError) !== true) {
+ $ERROR('#1.2: RegularExpressionChar :: Line separator is incorrect. Actual: ' + (e));
+ }
+}
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A2.3_T6.js b/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A2.3_T6.js
new file mode 100644
index 000000000..abf9833c5
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A2.3_T6.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.
+
+/**
+ * RegularExpressionChar :: LineTerminator is incorrect
+ *
+ * @path ch07/7.8/7.8.5/S7.8.5_A2.3_T6.js
+ * @description Paragraph separator, with eval
+ */
+
+//CHECK#1
+try {
+ eval("/s\u2029/").source;
+ $ERROR('#1.1: RegularExpressionChar :: Paragraph separator is incorrect. Actual: ' + (eval("/s\u2029/").source));
+}
+catch (e) {
+ if ((e instanceof SyntaxError) !== true) {
+ $ERROR('#1.2: RegularExpressionChar :: Paragraph separator is incorrect. Actual: ' + (e));
+ }
+}
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A2.4_T1.js b/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A2.4_T1.js
new file mode 100644
index 000000000..8a67dc42a
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A2.4_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.
+
+/**
+ * RegularExpressionChar :: BackslashSequence :: \NonTerminator,
+ * RegularExpressionFlags :: [empty]
+ *
+ * @path ch07/7.8/7.8.5/S7.8.5_A2.4_T1.js
+ * @description Check similar to (/a\1/.source === "a\\1")
+ */
+
+//CHECK#1
+if (/a\1/.source !== "a\\1") {
+ $ERROR('#1: /a\\1/');
+}
+
+//CHECK#2
+if (/a\a/.source !== "a\\a") {
+ $ERROR('#2: /a\\a/');
+}
+
+//CHECK#3
+if (/,\;/.source !== ",\\;") {
+ $ERROR('#3: /,\\;/');
+}
+
+//CHECK#4
+if (/ \ /.source !== " \\ ") {
+ $ERROR('#4: / \\ /');
+}
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A2.4_T2.js b/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A2.4_T2.js
new file mode 100644
index 000000000..fa26a976b
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A2.4_T2.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.
+
+/**
+ * RegularExpressionChar :: BackslashSequence :: \NonTerminator,
+ * RegularExpressionFlags :: [empty]
+ *
+ * @path ch07/7.8/7.8.5/S7.8.5_A2.4_T2.js
+ * @description Complex test with eval, using syntax pattern
+ */
+
+//CHECK
+var errorCount = 0;
+var count = 0;
+var hex = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F"];
+for (var i1 = 0; i1 < 16; i1++) {
+ for (var i2 = 0; i2 < 16; i2++) {
+ for (var i3 = 0; i3 < 16; i3++) {
+ for (var i4 = 0; i4 < 16; i4++) {
+ try {
+ var uu = hex[i1] + hex[i2] + hex[i3] + hex[i4];
+ var Elimination =
+ ((uu === "002A") || (uu === "002F") || (uu === "005C") || (uu === "002B") ||
+ (uu === "003F") || (uu === "0028") || (uu === "0029") ||
+ (uu === "005B") || (uu === "005D") || (uu === "007B") || (uu === "007D"));
+ /*
+ * \u002A / \u002F \ \u005C + \u002B
+ ? \u003F ( \u0028 ) \u0029
+ [ \u005B ] \u005D { \u007B } \u007D
+ */
+ var LineTerminator = ((uu === "000A") || (uu === "000D") || (uu === "2028") || (uu === "2029"));
+ if ((Elimination || LineTerminator ) === false) {
+ var xx = "a\\" + String.fromCharCode("0x" + uu);
+ var pattern = eval("/" + xx + "/");
+ if (pattern.source !== xx) {
+ $ERROR('#' + uu + ' ');
+ errorCount++;
+ }
+ } else {
+ count--;
+ }
+ } catch (e) {
+ $ERROR('#' + uu + ' ');
+ errorCount++;
+ }
+ count++;
+ }
+ }
+ }
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Regular Expression First Char in ' + count);
+}
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A2.5_T1.js b/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A2.5_T1.js
new file mode 100644
index 000000000..a3d5e5b4e
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A2.5_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.
+
+/**
+ * RegularExpressionChar :: BackslashSequence :: \LineTerminator is incorrect
+ *
+ * @path ch07/7.8/7.8.5/S7.8.5_A2.5_T1.js
+ * @description Line Feed, without eval
+ * @negative
+ */
+
+//CHECK#1
+/a\
+/
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A2.5_T2.js b/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A2.5_T2.js
new file mode 100644
index 000000000..685ada093
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A2.5_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.
+
+/**
+ * RegularExpressionChar :: BackslashSequence :: \LineTerminator is incorrect
+ *
+ * @path ch07/7.8/7.8.5/S7.8.5_A2.5_T2.js
+ * @description Line Feed, with eval
+ */
+
+//CHECK#1
+try {
+ eval("/a\\\u000A/").source;
+ $ERROR('#1.1: RegularExpressionChar :: BackslashSequence :: \\Line Feed is incorrect. Actual: ' + (eval("/a\\\u000A/").source));
+}
+catch (e) {
+ if ((e instanceof SyntaxError) !== true) {
+ $ERROR('#1.2: RegularExpressionChar :: BackslashSequence :: \\Line Feed is incorrect. Actual: ' + (e));
+ }
+}
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A2.5_T3.js b/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A2.5_T3.js
new file mode 100644
index 000000000..e85821870
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A2.5_T3.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.
+
+/**
+ * RegularExpressionChar :: BackslashSequence :: \LineTerminator is incorrect
+ *
+ * @path ch07/7.8/7.8.5/S7.8.5_A2.5_T3.js
+ * @description Carriage Return, without eval
+ * @negative
+ */
+
+//CHECK#1
+/a\
+/
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A2.5_T4.js b/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A2.5_T4.js
new file mode 100644
index 000000000..5cdea0817
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A2.5_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.
+
+/**
+ * RegularExpressionChar :: BackslashSequence :: \LineTerminator is incorrect
+ *
+ * @path ch07/7.8/7.8.5/S7.8.5_A2.5_T4.js
+ * @description Carriage Return, with eval
+ */
+
+//CHECK#1
+try {
+ eval("/a\\\u000D/").source;
+ $ERROR('#1.1: RegularExpressionChar :: BackslashSequence :: \\Carriage Return is incorrect. Actual: ' + (eval("/a\\\u000D/").source));
+}
+catch (e) {
+ if ((e instanceof SyntaxError) !== true) {
+ $ERROR('#1.2: RegularExpressionChar :: BackslashSequence :: \\Carriage Return is incorrect. Actual: ' + (e));
+ }
+}
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A2.5_T5.js b/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A2.5_T5.js
new file mode 100644
index 000000000..acc1f3080
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A2.5_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.
+
+/**
+ * RegularExpressionChar :: BackslashSequence :: \LineTerminator is incorrect
+ *
+ * @path ch07/7.8/7.8.5/S7.8.5_A2.5_T5.js
+ * @description Line separator, with eval
+ */
+
+//CHECK#1
+try {
+ eval("/a\\\u2028/").source;
+ $ERROR('#1.1: RegularExpressionChar :: BackslashSequence :: \\Line separator is incorrect. Actual: ' + (eval("/a\\\u2028/").source));
+}
+catch (e) {
+ if ((e instanceof SyntaxError) !== true) {
+ $ERROR('#1.2: RegularExpressionChar :: BackslashSequence :: \\Line separator is incorrect. Actual: ' + (e));
+ }
+}
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A2.5_T6.js b/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A2.5_T6.js
new file mode 100644
index 000000000..d33041021
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A2.5_T6.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.
+
+/**
+ * RegularExpressionChar :: BackslashSequence :: \LineTerminator is incorrect
+ *
+ * @path ch07/7.8/7.8.5/S7.8.5_A2.5_T6.js
+ * @description Paragraph separator, with eval
+ */
+
+//CHECK#1
+try {
+ eval("/a\\\u2029/").source;
+ $ERROR('#1.1: RegularExpressionChar :: BackslashSequence :: \\Paragraph separator is incorrect. Actual: ' + (eval("/a\\\u2029/").source));
+}
+catch (e) {
+ if ((e instanceof SyntaxError) !== true) {
+ $ERROR('#1.2: RegularExpressionChar :: BackslashSequence :: \\Paragraph separator is incorrect. Actual: ' + (e));
+ }
+}
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A3.1_T1.js b/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A3.1_T1.js
new file mode 100644
index 000000000..14ea4d7ea
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A3.1_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.
+
+/**
+ * RegularExpressionFlags :: IdentifierPart
+ *
+ * @path ch07/7.8/7.8.5/S7.8.5_A3.1_T1.js
+ * @description IdentifierPart :: g
+ */
+
+//CHECK#1
+var regexp = /(?:)/g;
+if (regexp.global !== true) {
+ $ERROR('#1: var regexp = /(?:)/g; regexp.global === true. Actual: ' + (regexp.global));
+}
+
+//CHECK#2
+if (regexp.ignoreCase !== false) {
+ $ERROR('#2: var regexp = /(?:)/g; regexp.ignoreCase === false. Actual: ' + (regexp.ignoreCase));
+}
+
+//CHECK#3
+if (regexp.multiline !== false) {
+ $ERROR('#3: var regexp = /(?:)/g; regexp.multiline === false. Actual: ' + (regexp.multiline));
+}
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A3.1_T2.js b/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A3.1_T2.js
new file mode 100644
index 000000000..f247140d2
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A3.1_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.
+
+/**
+ * RegularExpressionFlags :: IdentifierPart
+ *
+ * @path ch07/7.8/7.8.5/S7.8.5_A3.1_T2.js
+ * @description IdentifierPart :: i
+ */
+
+//CHECK#1
+var regexp = /(?:)/i;
+if (regexp.global !== false) {
+ $ERROR('#1: var regexp = /(?:)/g; regexp.global === false. Actual: ' + (regexp.global));
+}
+
+//CHECK#2
+if (regexp.ignoreCase !== true) {
+ $ERROR('#2: var regexp = /(?:)/g; regexp.ignoreCase === true. Actual: ' + (regexp.ignoreCase));
+}
+
+//CHECK#3
+if (regexp.multiline !== false) {
+ $ERROR('#3: var regexp = /(?:)/g; regexp.multiline === false. Actual: ' + (regexp.multiline));
+}
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A3.1_T3.js b/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A3.1_T3.js
new file mode 100644
index 000000000..4f0e6f14d
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A3.1_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.
+
+/**
+ * RegularExpressionFlags :: IdentifierPart
+ *
+ * @path ch07/7.8/7.8.5/S7.8.5_A3.1_T3.js
+ * @description IdentifierPart :: m
+ */
+
+//CHECK#1
+var regexp = /(?:)/m;
+if (regexp.global !== false) {
+ $ERROR('#1: var regexp = /(?:)/g; regexp.global === false. Actual: ' + (regexp.global));
+}
+
+//CHECK#2
+if (regexp.ignoreCase !== false) {
+ $ERROR('#2: var regexp = /(?:)/g; regexp.ignoreCase === false. Actual: ' + (regexp.ignoreCase));
+}
+
+//CHECK#3
+if (regexp.multiline !== true) {
+ $ERROR('#3: var regexp = /(?:)/g; regexp.multiline === true. Actual: ' + (regexp.multiline));
+}
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A3.1_T4.js b/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A3.1_T4.js
new file mode 100644
index 000000000..fd56ca01c
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A3.1_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.
+
+/**
+ * RegularExpressionFlags :: IdentifierPart
+ *
+ * @path ch07/7.8/7.8.5/S7.8.5_A3.1_T4.js
+ * @description IdentifierPart :: gi
+ */
+
+//CHECK#1
+var regexp = /(?:)/gi;
+if (regexp.global !== true) {
+ $ERROR('#1: var regexp = /(?:)/g; regexp.global === true. Actual: ' + (regexp.global));
+}
+
+//CHECK#2
+if (regexp.ignoreCase !== true) {
+ $ERROR('#2: var regexp = /(?:)/g; regexp.ignoreCase === true. Actual: ' + (regexp.ignoreCase));
+}
+
+//CHECK#3
+if (regexp.multiline !== false) {
+ $ERROR('#3: var regexp = /(?:)/g; regexp.multiline === false. Actual: ' + (regexp.multiline));
+}
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A3.1_T5.js b/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A3.1_T5.js
new file mode 100644
index 000000000..3b45a94ca
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A3.1_T5.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.
+
+/**
+ * RegularExpressionFlags :: IdentifierPart
+ *
+ * @path ch07/7.8/7.8.5/S7.8.5_A3.1_T5.js
+ * @description IdentifierPart :: mg
+ */
+
+//CHECK#1
+var regexp = /(?:)/mg;
+if (regexp.global !== true) {
+ $ERROR('#1: var regexp = /(?:)/g; regexp.global === true. Actual: ' + (regexp.global));
+}
+
+//CHECK#2
+if (regexp.ignoreCase !== false) {
+ $ERROR('#2: var regexp = /(?:)/g; regexp.ignoreCase === false. Actual: ' + (regexp.ignoreCase));
+}
+
+//CHECK#3
+if (regexp.multiline !== true) {
+ $ERROR('#3: var regexp = /(?:)/g; regexp.multiline === true. Actual: ' + (regexp.multiline));
+}
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A3.1_T6.js b/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A3.1_T6.js
new file mode 100644
index 000000000..fb188ed6c
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A3.1_T6.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.
+
+/**
+ * RegularExpressionFlags :: IdentifierPart
+ *
+ * @path ch07/7.8/7.8.5/S7.8.5_A3.1_T6.js
+ * @description IdentifierPart :: mig
+ */
+
+//CHECK#1
+var regexp = /(?:)/mig;
+if (regexp.global !== true) {
+ $ERROR('#1: var regexp = /(?:)/g; regexp.global === true. Actual: ' + (regexp.global));
+}
+
+//CHECK#2
+if (regexp.ignoreCase !== true) {
+ $ERROR('#2: var regexp = /(?:)/g; regexp.ignoreCase === true. Actual: ' + (regexp.ignoreCase));
+}
+
+//CHECK#3
+if (regexp.multiline !== true) {
+ $ERROR('#3: var regexp = /(?:)/g; regexp.multiline === true. Actual: ' + (regexp.multiline));
+}
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A3.1_T7.js b/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A3.1_T7.js
new file mode 100644
index 000000000..299241d4c
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A3.1_T7.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.
+
+/**
+ * RegularExpressionFlags :: IdentifierPart
+ *
+ * @path ch07/7.8/7.8.5/S7.8.5_A3.1_T7.js
+ * @description IdentifierPart :: \u0067 (g)
+ */
+
+//CHECK#1
+var regexp;
+eval("regexp = /(?:)/\u0067");
+if (regexp.global !== true) {
+ $ERROR('#1: var regexp = /(?:)/\\u0067; regexp.global === true. Actual: ' + (regexp.global));
+}
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A3.1_T8.js b/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A3.1_T8.js
new file mode 100644
index 000000000..de78b6f23
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A3.1_T8.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.
+
+/**
+ * RegularExpressionFlags :: IdentifierPart
+ *
+ * @path ch07/7.8/7.8.5/S7.8.5_A3.1_T8.js
+ * @description IdentifierPart :: \u0069 (i)
+ */
+
+//CHECK#1
+var regexp;
+eval("regexp = /(?:)/\u0069");
+if (regexp.ignoreCase !== true) {
+ $ERROR('#1: var regexp = /(?:)/\\u0069; regexp.ignoreCase === true. Actual: ' + (regexp.ignoreCase));
+}
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A3.1_T9.js b/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A3.1_T9.js
new file mode 100644
index 000000000..132586af4
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A3.1_T9.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.
+
+/**
+ * RegularExpressionFlags :: IdentifierPart
+ *
+ * @path ch07/7.8/7.8.5/S7.8.5_A3.1_T9.js
+ * @description IdentifierPart :: \u006D (m)
+ */
+
+//CHECK#1
+var regexp;
+eval("regexp = /(?:)/\u006D");
+if (regexp.multiline !== true) {
+ $ERROR('#1: var regexp = /(?:)/\\u006D; regexp.multiline === true. Actual: ' + (regexp.multiline));
+}
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A4.1.js b/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A4.1.js
new file mode 100644
index 000000000..d8f33d67d
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A4.1.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.
+
+/**
+ * A regular expression literal is an input element that is converted to
+ * a RegExp object when it is scanned
+ *
+ * @path ch07/7.8/7.8.5/S7.8.5_A4.1.js
+ * @description Check ((/(?:)/ instanceof RegExp) === true)
+ */
+
+//CHECK#1
+if ((/(?:)/ instanceof RegExp) !== true) {
+ $ERROR('#1: (/(?:)/ instanceof RegExp) === true. Actual: ' + ((/(?:)/ instanceof RegExp)));
+}
+
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A4.2.js b/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A4.2.js
new file mode 100644
index 000000000..569e4cbd2
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A4.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.
+
+/**
+ * Two regular expression literals in a program evaluate to
+ * regular expression objects that never compare as === to each other even
+ * if the two literals' contents are identical
+ *
+ * @path ch07/7.8/7.8.5/S7.8.5_A4.2.js
+ * @description Check equality two regular expression literals
+ */
+
+//CHECK#1
+var regexp1 = /(?:)/;
+var regexp2 = /(?:)/;
+if (regexp1 === regexp2) {
+ $ERROR('#1: var regexp1 = /(?:)/; var regexp2 = /(?:)/; regexp1 !== regexp2');
+}
+
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.5/browser.js b/js/src/tests/test262/ch07/7.8/7.8.5/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.5/browser.js
diff --git a/js/src/tests/test262/ch07/7.8/7.8.5/shell.js b/js/src/tests/test262/ch07/7.8/7.8.5/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.5/shell.js
diff --git a/js/src/tests/test262/ch07/7.8/browser.js b/js/src/tests/test262/ch07/7.8/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/browser.js
diff --git a/js/src/tests/test262/ch07/7.8/shell.js b/js/src/tests/test262/ch07/7.8/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/shell.js
diff --git a/js/src/tests/test262/ch07/7.9/7.9.2/S7.9.2_A1_T1.js b/js/src/tests/test262/ch07/7.9/7.9.2/S7.9.2_A1_T1.js
new file mode 100644
index 000000000..566fbbf47
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.9/7.9.2/S7.9.2_A1_T1.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.
+
+/**
+ * Check examples for automatic semicolon insertion from the Standart
+ *
+ * @path ch07/7.9/7.9.2/S7.9.2_A1_T1.js
+ * @description { 1 2 } 3 is not a valid sentence in the ECMAScript grammar
+ * @negative
+ */
+
+//CHECK#1
+{ 1 2 } 3
+
diff --git a/js/src/tests/test262/ch07/7.9/7.9.2/S7.9.2_A1_T2.js b/js/src/tests/test262/ch07/7.9/7.9.2/S7.9.2_A1_T2.js
new file mode 100644
index 000000000..565d860a2
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.9/7.9.2/S7.9.2_A1_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.
+
+/**
+ * Check examples for automatic semicolon insertion from the Standart
+ *
+ * @path ch07/7.9/7.9.2/S7.9.2_A1_T2.js
+ * @description { 1 \n 2 } 3 is a valid sentence in the ECMAScript grammar with automatic semicolon insertion
+ */
+
+//CHECK#1
+{ 1
+2 } 3
+
diff --git a/js/src/tests/test262/ch07/7.9/7.9.2/S7.9.2_A1_T3.js b/js/src/tests/test262/ch07/7.9/7.9.2/S7.9.2_A1_T3.js
new file mode 100644
index 000000000..ab0d03265
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.9/7.9.2/S7.9.2_A1_T3.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.
+
+/**
+ * Check examples for automatic semicolon insertion from the Standart
+ *
+ * @path ch07/7.9/7.9.2/S7.9.2_A1_T3.js
+ * @description for( a ; b \n ) is not a valid sentence in the ECMAScript grammar
+ * @negative
+ */
+
+//CHECK#1
+for( a ; b
+)
+
diff --git a/js/src/tests/test262/ch07/7.9/7.9.2/S7.9.2_A1_T4.js b/js/src/tests/test262/ch07/7.9/7.9.2/S7.9.2_A1_T4.js
new file mode 100644
index 000000000..e4c39798a
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.9/7.9.2/S7.9.2_A1_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.
+
+/**
+ * Check examples for automatic semicolon insertion from the Standart
+ *
+ * @path ch07/7.9/7.9.2/S7.9.2_A1_T4.js
+ * @description return \n a+b is a valid sentence in the ECMAScript grammar
+ * with automatic semicolon insertion, but returned undefined
+ */
+
+//CHECK#1
+var a=1,b=2;
+function test(){
+ return
+ a+b
+}
+var x=test();
+if (x!==undefined) $ERROR('#1: Automatic semicolon insertion not work with return');
+
diff --git a/js/src/tests/test262/ch07/7.9/7.9.2/S7.9.2_A1_T5.js b/js/src/tests/test262/ch07/7.9/7.9.2/S7.9.2_A1_T5.js
new file mode 100644
index 000000000..3ca074a17
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.9/7.9.2/S7.9.2_A1_T5.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.
+
+/**
+ * Check examples for automatic semicolon insertion from the Standart
+ *
+ * @path ch07/7.9/7.9.2/S7.9.2_A1_T5.js
+ * @description a=b \n ++c is a valid sentence in the ECMAScript grammar
+ * with automatic semicolon insertion, but a!==b++c
+ */
+
+//CHECK#1
+var a=1,b=2,c=3;
+a=b
+++c
+
+if (a!==b) $ERROR('#1: Automatic semicolon insertion not work with ++');
+
diff --git a/js/src/tests/test262/ch07/7.9/7.9.2/S7.9.2_A1_T6.js b/js/src/tests/test262/ch07/7.9/7.9.2/S7.9.2_A1_T6.js
new file mode 100644
index 000000000..8284f932a
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.9/7.9.2/S7.9.2_A1_T6.js
@@ -0,0 +1,16 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * Check examples for automatic semicolon insertion from the Standart
+ *
+ * @path ch07/7.9/7.9.2/S7.9.2_A1_T6.js
+ * @description if(a>b) \n else c=d is not a valid sentence in the ECMAScript grammar
+ * @negative
+ */
+
+//CHECK#1
+var a=1,b=2,c=3,d;
+if(a>b)
+else c=d
+
diff --git a/js/src/tests/test262/ch07/7.9/7.9.2/S7.9.2_A1_T7.js b/js/src/tests/test262/ch07/7.9/7.9.2/S7.9.2_A1_T7.js
new file mode 100644
index 000000000..b2e1697bb
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.9/7.9.2/S7.9.2_A1_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.
+
+/**
+ * Check examples for automatic semicolon insertion from the Standart
+ *
+ * @path ch07/7.9/7.9.2/S7.9.2_A1_T7.js
+ * @description a=b+c \n (d+e).print() is a valid sentence in the ECMAScript grammar,
+ * and automatic semicolon insertion not run
+ */
+
+//CHECK#1
+function c (a){
+ return 2*a;
+}
+
+var a=1,b=2,d=4,e=5;
+
+a=b+c
+(d+e)
+
+if (a !== 20) $ERROR('#1: Automatic semicolon insertion work wrong');
+
diff --git a/js/src/tests/test262/ch07/7.9/7.9.2/browser.js b/js/src/tests/test262/ch07/7.9/7.9.2/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.9/7.9.2/browser.js
diff --git a/js/src/tests/test262/ch07/7.9/7.9.2/shell.js b/js/src/tests/test262/ch07/7.9/7.9.2/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.9/7.9.2/shell.js
diff --git a/js/src/tests/test262/ch07/7.9/S7.9_A1.js b/js/src/tests/test262/ch07/7.9/S7.9_A1.js
new file mode 100644
index 000000000..47b1453b5
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.9/S7.9_A1.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.
+
+/**
+ * Check Continue Statement for automatic semicolon insertion
+ *
+ * @path ch07/7.9/S7.9_A1.js
+ * @description Try use continue \n Label construction
+ */
+
+//CHECK#1
+label1: for (var i = 0; i <= 0; i++) {
+ for (var j = 0; j <= 1; j++) {
+ if (j === 0) {
+ continue label1;
+ } else {
+ $ERROR('#1: Check continue statement for automatic semicolon insertion');
+ }
+ }
+}
+
+//CHECK#2
+var result = false;
+label2: for (var i = 0; i <= 1; i++) {
+ for (var j = 0; j <= 1; j++) {
+ if (j === 0) {
+ continue
+ label2;
+ } else {
+ result = true;
+ }
+ }
+}
+
+if (result !== true) {
+ $ERROR('#2: Check continue statement for automatic semicolon insertion');
+}
+
diff --git a/js/src/tests/test262/ch07/7.9/S7.9_A10_T1.js b/js/src/tests/test262/ch07/7.9/S7.9_A10_T1.js
new file mode 100644
index 000000000..6b884101e
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.9/S7.9_A10_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.
+
+/**
+ * Check {} for automatic semicolon insertion
+ *
+ * @path ch07/7.9/S7.9_A10_T1.js
+ * @description Checking if execution of "1 * {}" passes
+ */
+
+//CHECK#1
+1 * {}
+
diff --git a/js/src/tests/test262/ch07/7.9/S7.9_A10_T10.js b/js/src/tests/test262/ch07/7.9/S7.9_A10_T10.js
new file mode 100644
index 000000000..b1fff1247
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.9/S7.9_A10_T10.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.
+
+/**
+ * Check {} for automatic semicolon insertion
+ *
+ * @path ch07/7.9/S7.9_A10_T10.js
+ * @description Checking if execution of "{a:1 \n} 3" passes
+ */
+
+//CHECK#1
+{a:1
+} 3
+
diff --git a/js/src/tests/test262/ch07/7.9/S7.9_A10_T11.js b/js/src/tests/test262/ch07/7.9/S7.9_A10_T11.js
new file mode 100644
index 000000000..0b28b5e11
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.9/S7.9_A10_T11.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.
+
+/**
+ * Check {} for automatic semicolon insertion
+ *
+ * @path ch07/7.9/S7.9_A10_T11.js
+ * @description Checking if execution of "{a:1 \n} \n 3" passes
+ */
+
+//CHECK#1
+{a:1
+}
+3
+
diff --git a/js/src/tests/test262/ch07/7.9/S7.9_A10_T12.js b/js/src/tests/test262/ch07/7.9/S7.9_A10_T12.js
new file mode 100644
index 000000000..600aaa5ac
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.9/S7.9_A10_T12.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.
+
+/**
+ * Check {} for automatic semicolon insertion
+ *
+ * @path ch07/7.9/S7.9_A10_T12.js
+ * @description Checking if execution of "{ \n a: \n 1 \n } \n 3" passes
+ */
+
+//CHECK#1
+{
+a:
+1
+}
+3
+
diff --git a/js/src/tests/test262/ch07/7.9/S7.9_A10_T2.js b/js/src/tests/test262/ch07/7.9/S7.9_A10_T2.js
new file mode 100644
index 000000000..762a4a910
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.9/S7.9_A10_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.
+
+/**
+ * Check {} for automatic semicolon insertion
+ *
+ * @path ch07/7.9/S7.9_A10_T2.js
+ * @description Checking if execution of "{}*1" fails
+ * @negative
+ */
+
+//CHECK#1
+{} * 1
+
diff --git a/js/src/tests/test262/ch07/7.9/S7.9_A10_T3.js b/js/src/tests/test262/ch07/7.9/S7.9_A10_T3.js
new file mode 100644
index 000000000..902631481
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.9/S7.9_A10_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.
+
+/**
+ * Check {} for automatic semicolon insertion
+ *
+ * @path ch07/7.9/S7.9_A10_T3.js
+ * @description Checking if execution of "({}) * 1" passes
+ */
+
+//CHECK#1
+({}) * 1
+
diff --git a/js/src/tests/test262/ch07/7.9/S7.9_A10_T4.js b/js/src/tests/test262/ch07/7.9/S7.9_A10_T4.js
new file mode 100644
index 000000000..fcd18b665
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.9/S7.9_A10_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.
+
+/**
+ * Check {} for automatic semicolon insertion
+ *
+ * @path ch07/7.9/S7.9_A10_T4.js
+ * @description Checking if execution of "({};)*1" fails
+ * @negative
+ */
+
+//CHECK#1
+({};) * 1
+
diff --git a/js/src/tests/test262/ch07/7.9/S7.9_A10_T5.js b/js/src/tests/test262/ch07/7.9/S7.9_A10_T5.js
new file mode 100644
index 000000000..47b59d8c0
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.9/S7.9_A10_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.
+
+/**
+ * Check {} for automatic semicolon insertion
+ *
+ * @path ch07/7.9/S7.9_A10_T5.js
+ * @description Checking if execution of "( \n {} \n ) * 1" passes
+ */
+
+//CHECK#1
+(
+ {}
+) * 1
+
diff --git a/js/src/tests/test262/ch07/7.9/S7.9_A10_T6.js b/js/src/tests/test262/ch07/7.9/S7.9_A10_T6.js
new file mode 100644
index 000000000..e900fc8c5
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.9/S7.9_A10_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.
+
+/**
+ * Check {} for automatic semicolon insertion
+ *
+ * @path ch07/7.9/S7.9_A10_T6.js
+ * @description Checking if execution of "{} \n * 1" fails
+ * @negative
+ */
+
+//CHECK#1
+{}
+ * 1
+
diff --git a/js/src/tests/test262/ch07/7.9/S7.9_A10_T7.js b/js/src/tests/test262/ch07/7.9/S7.9_A10_T7.js
new file mode 100644
index 000000000..7cc00a70e
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.9/S7.9_A10_T7.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.
+
+/**
+ * Check {} for automatic semicolon insertion
+ *
+ * @path ch07/7.9/S7.9_A10_T7.js
+ * @description Checking if execution of "{1} 2" passes
+ */
+
+//CHECK#1
+{1} 2
+
diff --git a/js/src/tests/test262/ch07/7.9/S7.9_A10_T8.js b/js/src/tests/test262/ch07/7.9/S7.9_A10_T8.js
new file mode 100644
index 000000000..08b3fe564
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.9/S7.9_A10_T8.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.
+
+/**
+ * Check {} for automatic semicolon insertion
+ *
+ * @path ch07/7.9/S7.9_A10_T8.js
+ * @description Checking if execution of "{1 2} 3" fails
+ * @negative
+ */
+
+//CHECK#1
+{1 2} 3
+
diff --git a/js/src/tests/test262/ch07/7.9/S7.9_A10_T9.js b/js/src/tests/test262/ch07/7.9/S7.9_A10_T9.js
new file mode 100644
index 000000000..03daf8d9d
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.9/S7.9_A10_T9.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.
+
+/**
+ * Check {} for automatic semicolon insertion
+ *
+ * @path ch07/7.9/S7.9_A10_T9.js
+ * @description Checking if execution of "{1 \n 2} 3" passes
+ */
+
+//CHECK#1
+{1
+2} 3
+
diff --git a/js/src/tests/test262/ch07/7.9/S7.9_A11_T1.js b/js/src/tests/test262/ch07/7.9/S7.9_A11_T1.js
new file mode 100644
index 000000000..7acebb81e
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.9/S7.9_A11_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.
+
+/**
+ * Check If Statement for automatic semicolon insertion
+ *
+ * @path ch07/7.9/S7.9_A11_T1.js
+ * @description Use if (false) x = 1 (without semicolon) and check x
+ */
+
+//CHECK#1
+var x = 0;
+if (false) x = 1
+if (x !== 0) {
+ $ERROR('#1: Check If Statement for automatic semicolon insertion');
+}
+
diff --git a/js/src/tests/test262/ch07/7.9/S7.9_A11_T10.js b/js/src/tests/test262/ch07/7.9/S7.9_A11_T10.js
new file mode 100644
index 000000000..d7304465b
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.9/S7.9_A11_T10.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.
+
+/**
+ * Check If Statement for automatic semicolon insertion
+ *
+ * @path ch07/7.9/S7.9_A11_T10.js
+ * @description Use if (false) {x = 1} else {x=-1} and check x
+ */
+
+//CHECK#1
+var x = 0;
+if (false) {x = 1} else {x = -1}
+if (x !== -1) {
+ $ERROR('#1: Check If Statement for automatic semicolon insertion');
+}
+
diff --git a/js/src/tests/test262/ch07/7.9/S7.9_A11_T11.js b/js/src/tests/test262/ch07/7.9/S7.9_A11_T11.js
new file mode 100644
index 000000000..008a365bb
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.9/S7.9_A11_T11.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.
+
+/**
+ * Check If Statement for automatic semicolon insertion
+ *
+ * @path ch07/7.9/S7.9_A11_T11.js
+ * @description Use if (false) {{x = 1};} \n else x=-1 and check x
+ */
+
+//CHECK#1
+var x = 0;
+if (false) {{x = 1};}
+else x = -1
+if (x !== -1) {
+ $ERROR('#1: Check If Statement for automatic semicolon insertion');
+}
+
diff --git a/js/src/tests/test262/ch07/7.9/S7.9_A11_T2.js b/js/src/tests/test262/ch07/7.9/S7.9_A11_T2.js
new file mode 100644
index 000000000..bcb0ccd65
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.9/S7.9_A11_T2.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.
+
+/**
+ * Check If Statement for automatic semicolon insertion
+ *
+ * @path ch07/7.9/S7.9_A11_T2.js
+ * @description Use if (false) \n x = 1 and check x
+ */
+
+//CHECK#1
+var x = 0;
+if (false)
+x = 1
+if (x !== 0) {
+ $ERROR('#1: Check If Statement for automatic semicolon insertion');
+}
+
diff --git a/js/src/tests/test262/ch07/7.9/S7.9_A11_T3.js b/js/src/tests/test262/ch07/7.9/S7.9_A11_T3.js
new file mode 100644
index 000000000..12df0b4a9
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.9/S7.9_A11_T3.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.
+
+/**
+ * Check If Statement for automatic semicolon insertion
+ *
+ * @path ch07/7.9/S7.9_A11_T3.js
+ * @description Use if (false);\n x = 1 and check x
+ */
+
+//CHECK#1
+var x = 0;
+if (false);
+x = 1
+if (x !== 1) {
+ $ERROR('#1: Check If Statement for automatic semicolon insertion');
+}
+
diff --git a/js/src/tests/test262/ch07/7.9/S7.9_A11_T4.js b/js/src/tests/test262/ch07/7.9/S7.9_A11_T4.js
new file mode 100644
index 000000000..d5ab788db
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.9/S7.9_A11_T4.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.
+
+/**
+ * Check If Statement for automatic semicolon insertion
+ *
+ * @path ch07/7.9/S7.9_A11_T4.js
+ * @description Checking if execution of "if (false) x = 1 else x = -1" fails
+ * @negative
+ */
+
+//CHECK#1
+var x = 0;
+if (false) x = 1 else x = -1
+
diff --git a/js/src/tests/test262/ch07/7.9/S7.9_A11_T5.js b/js/src/tests/test262/ch07/7.9/S7.9_A11_T5.js
new file mode 100644
index 000000000..22cfac9cf
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.9/S7.9_A11_T5.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.
+
+/**
+ * Check If Statement for automatic semicolon insertion
+ *
+ * @path ch07/7.9/S7.9_A11_T5.js
+ * @description Use if (false) x = 1; else x=-1 and check x
+ */
+
+//CHECK#1
+var x = 0;
+if (false) x = 1; else x = -1
+if (x !== -1) {
+ $ERROR('#1: Check If Statement for automatic semicolon insertion');
+}
+
diff --git a/js/src/tests/test262/ch07/7.9/S7.9_A11_T6.js b/js/src/tests/test262/ch07/7.9/S7.9_A11_T6.js
new file mode 100644
index 000000000..b5555429c
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.9/S7.9_A11_T6.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.
+
+/**
+ * Check If Statement for automatic semicolon insertion
+ *
+ * @path ch07/7.9/S7.9_A11_T6.js
+ * @description Use if (false) x = 1 \n else x=-1 and check x
+ */
+
+//CHECK#1
+var x = 0;
+if (false) x = 1
+else x = -1
+if (x !== -1) {
+ $ERROR('#1: Check If Statement for automatic semicolon insertion');
+}
+
diff --git a/js/src/tests/test262/ch07/7.9/S7.9_A11_T7.js b/js/src/tests/test262/ch07/7.9/S7.9_A11_T7.js
new file mode 100644
index 000000000..98fc0aea9
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.9/S7.9_A11_T7.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.
+
+/**
+ * Check If Statement for automatic semicolon insertion
+ *
+ * @path ch07/7.9/S7.9_A11_T7.js
+ * @description Use if (false) x = 1; \n else x=-1 and check x
+ */
+
+//CHECK#1
+var x = 0;
+if (false) x = 1;
+else x = -1
+if (x !== -1) {
+ $ERROR('#1: Check If Statement for automatic semicolon insertion');
+}
+
diff --git a/js/src/tests/test262/ch07/7.9/S7.9_A11_T8.js b/js/src/tests/test262/ch07/7.9/S7.9_A11_T8.js
new file mode 100644
index 000000000..24d588152
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.9/S7.9_A11_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.
+
+/**
+ * Check If Statement for automatic semicolon insertion
+ *
+ * @path ch07/7.9/S7.9_A11_T8.js
+ * @description Use if (false) {x = 1}; \n else x=-1 and check x
+ * @negative
+ */
+
+//CHECK#1
+var x = 0;
+if (false) {x = 1};
+else x = -1
+if (x !== -1) {
+ $ERROR('#1: Check If Statement for automatic semicolon insertion');
+}
+
diff --git a/js/src/tests/test262/ch07/7.9/S7.9_A11_T9.js b/js/src/tests/test262/ch07/7.9/S7.9_A11_T9.js
new file mode 100644
index 000000000..f0d6878fd
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.9/S7.9_A11_T9.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.
+
+/**
+ * Check If Statement for automatic semicolon insertion
+ *
+ * @path ch07/7.9/S7.9_A11_T9.js
+ * @description Use if (false) {x = 1} \n else x=-1 and check x
+ */
+
+//CHECK#1
+var x = 0;
+if (false) {x = 1}
+else x = -1
+if (x !== -1) {
+ $ERROR('#1: Check If Statement for automatic semicolon insertion');
+}
+
diff --git a/js/src/tests/test262/ch07/7.9/S7.9_A2.js b/js/src/tests/test262/ch07/7.9/S7.9_A2.js
new file mode 100644
index 000000000..fdc2189f9
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.9/S7.9_A2.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.
+
+/**
+ * Check Break Statement for automatic semicolon insertion
+ *
+ * @path ch07/7.9/S7.9_A2.js
+ * @description Try use break \n Label construction
+ */
+
+//CHECK#1
+label1: for (var i = 0; i <= 0; i++) {
+ for (var j = 0; j <= 0; j++) {
+ break label1;
+ }
+ $ERROR('#1: Check break statement for automatic semicolon insertion');
+}
+
+//CHECK#2
+var result = false;
+label2: for (var i = 0; i <= 0; i++) {
+ for (var j = 0; j <= 0; j++) {
+ break
+ label2;
+ }
+ result = true;
+}
+
+if (result !== true) {
+ $ERROR('#2: Check break statement for automatic semicolon insertion');
+}
+
diff --git a/js/src/tests/test262/ch07/7.9/S7.9_A3.js b/js/src/tests/test262/ch07/7.9/S7.9_A3.js
new file mode 100644
index 000000000..e52b88760
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.9/S7.9_A3.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.
+
+/**
+ * Check Return Statement for automatic semicolon insertion
+ *
+ * @path ch07/7.9/S7.9_A3.js
+ * @description Try use return \n Expression construction
+ */
+
+//CHECK#1
+function f1()
+{
+ return 1;
+}
+if (f1() !== 1) {
+ $ERROR('#1: Check return statement for automatic semicolon insertion');
+}
+
+//CHECK#2
+function f2()
+{
+ return
+ 1;
+}
+if (f2() !== undefined) {
+ $ERROR('#2: Check return statement for automatic semicolon insertion');
+}
+
diff --git a/js/src/tests/test262/ch07/7.9/S7.9_A4.js b/js/src/tests/test262/ch07/7.9/S7.9_A4.js
new file mode 100644
index 000000000..d8a5ac607
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.9/S7.9_A4.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.
+
+/**
+ * Check Throw Statement for automatic semicolon insertion
+ *
+ * @path ch07/7.9/S7.9_A4.js
+ * @description Try use Throw \n Expression construction
+ * @negative
+ */
+
+//CHECK#1
+try {
+ throw
+ 1;
+} catch(e) {
+}
+$ERROR('#1: Check throw statement for automatic semicolon insertion');
+
diff --git a/js/src/tests/test262/ch07/7.9/S7.9_A5.1_T1.js b/js/src/tests/test262/ch07/7.9/S7.9_A5.1_T1.js
new file mode 100644
index 000000000..b0c69d298
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.9/S7.9_A5.1_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.
+
+/**
+ * Check Postfix Increment Operator for automatic semicolon insertion
+ *
+ * @path ch07/7.9/S7.9_A5.1_T1.js
+ * @description Try use Variable \n ++ construction
+ * @negative
+ */
+
+//CHECK#1
+var x = 0;
+x
+++;
+$ERROR('#1: Check Postfix Increment Operator for automatic semicolon insertion');
+
diff --git a/js/src/tests/test262/ch07/7.9/S7.9_A5.2_T1.js b/js/src/tests/test262/ch07/7.9/S7.9_A5.2_T1.js
new file mode 100644
index 000000000..24fcf4e7c
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.9/S7.9_A5.2_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.
+
+/**
+ * Check Prefix Increment Operator for automatic semicolon insertion
+ *
+ * @path ch07/7.9/S7.9_A5.2_T1.js
+ * @description Try use Variable1 \n ++Variable2 construction
+ */
+
+//CHECK#1
+var x = 0;
+var y = 0;
+x
+++y
+if (x !== 0) {
+ $ERROR('#1: Check Prefix Increment Operator for automatic semicolon insertion');
+} else {
+ if (y !== 1) {
+ $ERROR('#2: Check Prefix Increment Operator for automatic semicolon insertion');
+ }
+}
+
+
diff --git a/js/src/tests/test262/ch07/7.9/S7.9_A5.3_T1.js b/js/src/tests/test262/ch07/7.9/S7.9_A5.3_T1.js
new file mode 100644
index 000000000..283e73879
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.9/S7.9_A5.3_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.
+
+/**
+ * Check Postfix Decrement Operator for automatic semicolon insertion
+ *
+ * @path ch07/7.9/S7.9_A5.3_T1.js
+ * @description Try use Variable \n -- construction
+ * @negative
+ */
+
+//CHECK#1
+var x = 1;
+x
+--;
+$ERROR('#1: Check Postfix Decrement Operator for automatic semicolon insertion');
+
diff --git a/js/src/tests/test262/ch07/7.9/S7.9_A5.4_T1.js b/js/src/tests/test262/ch07/7.9/S7.9_A5.4_T1.js
new file mode 100644
index 000000000..6d58c1f69
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.9/S7.9_A5.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.
+
+/**
+ * Check Prefix Decrement Operator for automatic semicolon insertion
+ *
+ * @path ch07/7.9/S7.9_A5.4_T1.js
+ * @description Try use Variable1 \n --Variable2 construction
+ */
+
+//CHECK#1
+var x = 1;
+var y = 1;
+x
+--y
+if (x !== 1) {
+ $ERROR('#1: Check Prefix Decrement Operator for automatic semicolon insertion');
+} else {
+ if (y !== 0) {
+ $ERROR('#1: Check Prefix Decrement Operator for automatic semicolon insertion');
+ }
+}
+
diff --git a/js/src/tests/test262/ch07/7.9/S7.9_A5.5_T1.js b/js/src/tests/test262/ch07/7.9/S7.9_A5.5_T1.js
new file mode 100644
index 000000000..872803b60
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.9/S7.9_A5.5_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.
+
+/**
+ * Check Function Expression for automatic semicolon insertion
+ *
+ * @path ch07/7.9/S7.9_A5.5_T1.js
+ * @description Try use 1 + function_name\n(2 + 3) construction
+ */
+
+//CHECK#1
+function f(t) {
+ return t;
+}
+var x = 1 + f
+(2 + 3)
+if (x !== 6) {
+ $ERROR('#1: Check Function Expression for automatic semicolon insertion');
+}
+
diff --git a/js/src/tests/test262/ch07/7.9/S7.9_A5.5_T2.js b/js/src/tests/test262/ch07/7.9/S7.9_A5.5_T2.js
new file mode 100644
index 000000000..be29e1dca
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.9/S7.9_A5.5_T2.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.
+
+/**
+ * Check Function Expression for automatic semicolon insertion
+ *
+ * @path ch07/7.9/S7.9_A5.5_T2.js
+ * @description Try use function f(o) {o.x = 1; return o;}; \n (new Object()).x; construction
+ */
+
+//CHECK#1
+var result = function f(o) {o.x = 1; return o;};
+(new Object()).x;
+if (typeof result !== "function") {
+ $ERROR('#1: Check Function Expression for automatic semicolon insertion');
+}
+
diff --git a/js/src/tests/test262/ch07/7.9/S7.9_A5.5_T3.js b/js/src/tests/test262/ch07/7.9/S7.9_A5.5_T3.js
new file mode 100644
index 000000000..e3dc89b38
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.9/S7.9_A5.5_T3.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.
+
+/**
+ * Check Function Expression for automatic semicolon insertion
+ *
+ * @path ch07/7.9/S7.9_A5.5_T3.js
+ * @description Try use function f(o) {o.x = 1; return o;} \n (new Object()).x; construction
+ */
+
+//CHECK#1
+var result = function f(o) {o.x = 1; return o;}
+(new Object()).x;
+if (result !== 1) {
+ $ERROR('#1: Check Function Expression for automatic semicolon insertion');
+}
+
diff --git a/js/src/tests/test262/ch07/7.9/S7.9_A5.5_T4.js b/js/src/tests/test262/ch07/7.9/S7.9_A5.5_T4.js
new file mode 100644
index 000000000..a005f1109
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.9/S7.9_A5.5_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.
+
+/**
+ * Check Function Expression for automatic semicolon insertion
+ *
+ * @path ch07/7.9/S7.9_A5.5_T4.js
+ * @description Insert some LineTerminators into function body
+ */
+
+//CHECK#1
+var x =
+1 + (function (t){return {a:t
+}
+})
+(2 + 3).
+a
+
+if (x !== 6) {
+ $ERROR('#1: Check Function Expression for automatic semicolon insertion');
+}
+
diff --git a/js/src/tests/test262/ch07/7.9/S7.9_A5.5_T5.js b/js/src/tests/test262/ch07/7.9/S7.9_A5.5_T5.js
new file mode 100644
index 000000000..1c1942d73
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.9/S7.9_A5.5_T5.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.
+
+/**
+ * Check Function Expression for automatic semicolon insertion
+ *
+ * @path ch07/7.9/S7.9_A5.5_T5.js
+ * @description Insert some LineTerminators into rerutn expression;
+ */
+
+//CHECK#1
+var x =
+1 + (function f
+(t){
+return {
+a:
+function(){
+return t + 1
+}
+}
+}
+)
+(2 + 3).
+a
+()
+
+if (x !== 7) {
+ $ERROR('#1: Check Function Expression for automatic semicolon insertion');
+}
+
diff --git a/js/src/tests/test262/ch07/7.9/S7.9_A5.6_T1.js b/js/src/tests/test262/ch07/7.9/S7.9_A5.6_T1.js
new file mode 100644
index 000000000..3381c5187
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.9/S7.9_A5.6_T1.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.
+
+/**
+ * Since LineTerminator between Postfix Increment/Decrement Operator(I/DO) and operand is not allowed but
+ * between Prefix I/DO and operand admitted, Postfix I/DO in combination with prefix I/DO after automatic semicolon insertion gives valid result
+ *
+ * @path ch07/7.9/S7.9_A5.6_T1.js
+ * @description Try use Variable1 \n ++ \n Variable2 construction
+ */
+
+var x=0, y=0;
+
+x
+++
+y
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if ((x!==0)&(y!==1)) {
+ $ERROR('#1: Check Postfix Increment Operator for automatic semicolon insertion');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+x
+++y
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if ((x!==0)&(y!==2)) {
+ $ERROR('#2: Check Postfix Increment Operator for automatic semicolon insertion');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch07/7.9/S7.9_A5.6_T2.js b/js/src/tests/test262/ch07/7.9/S7.9_A5.6_T2.js
new file mode 100644
index 000000000..6861e96e5
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.9/S7.9_A5.6_T2.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.
+
+/**
+ * Since LineTerminator between Postfix Increment/Decrement Operator(I/DO) and operand is not allowed but
+ * between Prefix I/DO and operand admitted, Postfix I/DO in combination with prefix I/DO after automatic semicolon insertion gives valid result
+ *
+ * @path ch07/7.9/S7.9_A5.6_T2.js
+ * @description Try use Variable1 \n -- \n Variable2 construction
+ */
+
+var x=0, y=2;
+
+x
+--
+y
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if ((x!==0)&(y!==1)) {
+ $ERROR('#1: Check Postfix Increment Operator for automatic semicolon insertion');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+x
+--y
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if ((x!==0)&(y!==0)) {
+ $ERROR('#2: Check Postfix Increment Operator for automatic semicolon insertion');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+
diff --git a/js/src/tests/test262/ch07/7.9/S7.9_A5.7_T1.js b/js/src/tests/test262/ch07/7.9/S7.9_A5.7_T1.js
new file mode 100644
index 000000000..696ba3c32
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.9/S7.9_A5.7_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.
+
+/**
+ * Since LineTerminator(LT) between Postfix Increment/Decrement Operator(I/DO) and operand is not allowed, two IO(just as two DO and their combination)
+ * between two references separated by [LT] after automatic semicolon insertion lead to syntax error
+ *
+ * @path ch07/7.9/S7.9_A5.7_T1.js
+ * @description Try use Variable1 \n ++ \n ++ \n Variable2 construction
+ * @negative
+ */
+
+var x=0, y=0;
+var z=
+x
+++
+++
+y
+
diff --git a/js/src/tests/test262/ch07/7.9/S7.9_A5.8_T1.js b/js/src/tests/test262/ch07/7.9/S7.9_A5.8_T1.js
new file mode 100644
index 000000000..9f3b7a75d
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.9/S7.9_A5.8_T1.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.
+
+/**
+ * Since LineTerminator(LT) between Postfix Increment/Decrement Operator(I/DO) and operand is admitted,
+ * Additive/Substract Operator(A/SO) in combination with I/DO separated by LT or white spaces after automatic semicolon insertion gives valid result
+ *
+ * @path ch07/7.9/S7.9_A5.8_T1.js
+ * @description Try use Variable1 \n + \n ++ \n Variable2 construction
+ */
+
+var x=0, y=0;
+var z=
+x
++
+++
+y
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if ((z!==1)&&(y!==1)&&(x!==0)) {
+ $ERROR('#1: ');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+z=
+x
++ ++
+y
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if ((z!==2)&&(y!==2)&&(x!==0)) {
+ $ERROR('');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+z=
+x
++ ++
+y
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if ((z!==3)&&(y!==3)&&(x!==0)) {
+ $ERROR('');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch07/7.9/S7.9_A5.9_T1.js b/js/src/tests/test262/ch07/7.9/S7.9_A5.9_T1.js
new file mode 100644
index 000000000..98f47ab9a
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.9/S7.9_A5.9_T1.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.
+
+/**
+ * Additive/Substract Operator(A/SO) in combination with itself separated by LT or white spaces
+ * after automatic semicolon insertion gives valid result
+ *
+ * @path ch07/7.9/S7.9_A5.9_T1.js
+ * @description Try use Variable1 (different combinations of three +) Variable2 construction
+ */
+
+var x=1, y=1;
+var z=
+x
++
++
++
+y
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if ((z!==2)&&(y!==1)&&(x!==1)) {
+ $ERROR('#1: ');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+z=
+x + + + y
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if ((z!==2)&&(y!==1)&&(x!==1)) {
+ $ERROR('');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+z=
+x
++ +
++ +
+y
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if ((z!==2)&&(y!==1)&&(x!==1)) {
+ $ERROR('');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch07/7.9/S7.9_A6.1_T1.js b/js/src/tests/test262/ch07/7.9/S7.9_A6.1_T1.js
new file mode 100644
index 000000000..65bc94985
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.9/S7.9_A6.1_T1.js
@@ -0,0 +1,16 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * Check For Statement for automatic semicolon insertion
+ *
+ * @path ch07/7.9/S7.9_A6.1_T1.js
+ * @description for( Empty two semicolons and \n)
+ */
+
+//CHECK#1
+for(;;
+) {
+ break;
+}
+
diff --git a/js/src/tests/test262/ch07/7.9/S7.9_A6.1_T10.js b/js/src/tests/test262/ch07/7.9/S7.9_A6.1_T10.js
new file mode 100644
index 000000000..973ac4fe9
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.9/S7.9_A6.1_T10.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.
+
+/**
+ * Check For Statement for automatic semicolon insertion
+ *
+ * @path ch07/7.9/S7.9_A6.1_T10.js
+ * @description for (false \n two semicolons false \n)
+ */
+
+//CHECK#1
+for(false
+ ;;false
+) {
+ break;
+}
+
diff --git a/js/src/tests/test262/ch07/7.9/S7.9_A6.1_T11.js b/js/src/tests/test262/ch07/7.9/S7.9_A6.1_T11.js
new file mode 100644
index 000000000..27da10fff
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.9/S7.9_A6.1_T11.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.
+
+/**
+ * Check For Statement for automatic semicolon insertion
+ *
+ * @path ch07/7.9/S7.9_A6.1_T11.js
+ * @description for (false \n semicolon \n semicolon \n)
+ */
+
+//CHECK#1
+for(false
+ ;
+ ;
+) {
+ break;
+}
+
diff --git a/js/src/tests/test262/ch07/7.9/S7.9_A6.1_T12.js b/js/src/tests/test262/ch07/7.9/S7.9_A6.1_T12.js
new file mode 100644
index 000000000..b78791194
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.9/S7.9_A6.1_T12.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.
+
+/**
+ * Check For Statement for automatic semicolon insertion
+ *
+ * @path ch07/7.9/S7.9_A6.1_T12.js
+ * @description for (false \n semicolon false \n semicolon \n)
+ */
+
+//CHECK#1
+for(false
+ ;false
+ ;
+) {
+ break;
+}
+
diff --git a/js/src/tests/test262/ch07/7.9/S7.9_A6.1_T13.js b/js/src/tests/test262/ch07/7.9/S7.9_A6.1_T13.js
new file mode 100644
index 000000000..1762f3182
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.9/S7.9_A6.1_T13.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.
+
+/**
+ * Check For Statement for automatic semicolon insertion
+ *
+ * @path ch07/7.9/S7.9_A6.1_T13.js
+ * @description for (false \n semicolon false \n semicolon false \n)
+ */
+
+//CHECK#1
+for(false
+ ;false
+ ;false
+) {
+ break;
+}
+
diff --git a/js/src/tests/test262/ch07/7.9/S7.9_A6.1_T2.js b/js/src/tests/test262/ch07/7.9/S7.9_A6.1_T2.js
new file mode 100644
index 000000000..ef2ac4e46
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.9/S7.9_A6.1_T2.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.
+
+/**
+ * Check For Statement for automatic semicolon insertion
+ *
+ * @path ch07/7.9/S7.9_A6.1_T2.js
+ * @description for (semicolon \n semicolon \n)
+ */
+
+//CHECK#1
+for(;
+ ;
+) {
+ break;
+}
+
diff --git a/js/src/tests/test262/ch07/7.9/S7.9_A6.1_T3.js b/js/src/tests/test262/ch07/7.9/S7.9_A6.1_T3.js
new file mode 100644
index 000000000..71ee0b4d5
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.9/S7.9_A6.1_T3.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.
+
+/**
+ * Check For Statement for automatic semicolon insertion
+ *
+ * @path ch07/7.9/S7.9_A6.1_T3.js
+ * @description for (\n two semicolons \n)
+ */
+
+//CHECK#1
+for(
+ ;;
+) {
+ break;
+}
+
diff --git a/js/src/tests/test262/ch07/7.9/S7.9_A6.1_T4.js b/js/src/tests/test262/ch07/7.9/S7.9_A6.1_T4.js
new file mode 100644
index 000000000..8055a790a
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.9/S7.9_A6.1_T4.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.
+
+/**
+ * Check For Statement for automatic semicolon insertion
+ *
+ * @path ch07/7.9/S7.9_A6.1_T4.js
+ * @description for( \n semicolon \n semicolon \n)
+ */
+
+//CHECK#1
+for(
+ ;
+ ;
+) {
+ break;
+}
+
diff --git a/js/src/tests/test262/ch07/7.9/S7.9_A6.1_T5.js b/js/src/tests/test262/ch07/7.9/S7.9_A6.1_T5.js
new file mode 100644
index 000000000..ce5e585dc
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.9/S7.9_A6.1_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.
+
+/**
+ * Check For Statement for automatic semicolon insertion
+ *
+ * @path ch07/7.9/S7.9_A6.1_T5.js
+ * @description for ( \n semicolon \n\n semicolon \n)
+ */
+
+//CHECK#1
+for(
+ ;
+
+ ;
+) {
+ break;
+}
+
diff --git a/js/src/tests/test262/ch07/7.9/S7.9_A6.1_T6.js b/js/src/tests/test262/ch07/7.9/S7.9_A6.1_T6.js
new file mode 100644
index 000000000..578b88fbe
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.9/S7.9_A6.1_T6.js
@@ -0,0 +1,16 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * Check For Statement for automatic semicolon insertion
+ *
+ * @path ch07/7.9/S7.9_A6.1_T6.js
+ * @description for(false semicolon false semicolon false \n)
+ */
+
+//CHECK#1
+for(false;false;false
+) {
+ break;
+}
+
diff --git a/js/src/tests/test262/ch07/7.9/S7.9_A6.1_T7.js b/js/src/tests/test262/ch07/7.9/S7.9_A6.1_T7.js
new file mode 100644
index 000000000..ce53a6f9e
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.9/S7.9_A6.1_T7.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.
+
+/**
+ * Check For Statement for automatic semicolon insertion
+ *
+ * @path ch07/7.9/S7.9_A6.1_T7.js
+ * @description for (false semicolon false \n semicolon \n)
+ */
+
+//CHECK#1
+for(false;false
+ ;
+) {
+ break;
+}
+
diff --git a/js/src/tests/test262/ch07/7.9/S7.9_A6.1_T8.js b/js/src/tests/test262/ch07/7.9/S7.9_A6.1_T8.js
new file mode 100644
index 000000000..fca8ddc80
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.9/S7.9_A6.1_T8.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.
+
+/**
+ * Check For Statement for automatic semicolon insertion
+ *
+ * @path ch07/7.9/S7.9_A6.1_T8.js
+ * @description for (false semicolon false \n semicolon false \n)
+ */
+
+//CHECK#1
+for(false;false
+ ;false
+) {
+ break;
+}
+
diff --git a/js/src/tests/test262/ch07/7.9/S7.9_A6.1_T9.js b/js/src/tests/test262/ch07/7.9/S7.9_A6.1_T9.js
new file mode 100644
index 000000000..977b90b9e
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.9/S7.9_A6.1_T9.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.
+
+/**
+ * Check For Statement for automatic semicolon insertion
+ *
+ * @path ch07/7.9/S7.9_A6.1_T9.js
+ * @description for (false \n two semicolons \n)
+ */
+
+//CHECK#1
+for(false
+ ;;
+) {
+ break;
+}
+
diff --git a/js/src/tests/test262/ch07/7.9/S7.9_A6.2_T1.js b/js/src/tests/test262/ch07/7.9/S7.9_A6.2_T1.js
new file mode 100644
index 000000000..e3461b907
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.9/S7.9_A6.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.
+
+/**
+ * Check For Statement for automatic semicolon insertion.
+ * If automatic insertion semicolon would become one of the two semicolons in the header of a For Statement.
+ * Use one semicolon
+ *
+ * @path ch07/7.9/S7.9_A6.2_T1.js
+ * @description For header is (semicolon \n)
+ * @negative
+ */
+
+//CHECK#1
+for(;
+) {
+ break;
+}
+
diff --git a/js/src/tests/test262/ch07/7.9/S7.9_A6.2_T10.js b/js/src/tests/test262/ch07/7.9/S7.9_A6.2_T10.js
new file mode 100644
index 000000000..1e65032ca
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.9/S7.9_A6.2_T10.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.
+
+/**
+ * Check For Statement for automatic semicolon insertion.
+ * If automatic insertion semicolon would become one of the two semicolons in the header of a For Statement.
+ * Use one semicolon
+ *
+ * @path ch07/7.9/S7.9_A6.2_T10.js
+ * @description For header is (\n false \n semicolon)
+ * @negative
+ */
+
+//CHECK#1
+for(
+ false
+;) {
+ break;
+}
+
diff --git a/js/src/tests/test262/ch07/7.9/S7.9_A6.2_T2.js b/js/src/tests/test262/ch07/7.9/S7.9_A6.2_T2.js
new file mode 100644
index 000000000..bbe5fb83c
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.9/S7.9_A6.2_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.
+
+/**
+ * Check For Statement for automatic semicolon insertion.
+ * If automatic insertion semicolon would become one of the two semicolons in the header of a For Statement.
+ * Use one semicolon
+ *
+ * @path ch07/7.9/S7.9_A6.2_T2.js
+ * @description For header is (\n semicolon \n)
+ * @negative
+ */
+
+//CHECK#1
+for(
+ ;
+) {
+ break;
+}
+
diff --git a/js/src/tests/test262/ch07/7.9/S7.9_A6.2_T3.js b/js/src/tests/test262/ch07/7.9/S7.9_A6.2_T3.js
new file mode 100644
index 000000000..0dfd55125
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.9/S7.9_A6.2_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.
+
+/**
+ * Check For Statement for automatic semicolon insertion.
+ * If automatic insertion semicolon would become one of the two semicolons in the header of a For Statement.
+ * Use one semicolon
+ *
+ * @path ch07/7.9/S7.9_A6.2_T3.js
+ * @description For header is (\n semicolon)
+ * @negative
+ */
+
+//CHECK#1
+for(
+;) {
+ break;
+}
+
diff --git a/js/src/tests/test262/ch07/7.9/S7.9_A6.2_T4.js b/js/src/tests/test262/ch07/7.9/S7.9_A6.2_T4.js
new file mode 100644
index 000000000..d64278972
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.9/S7.9_A6.2_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.
+
+/**
+ * Check For Statement for automatic semicolon insertion.
+ * If automatic insertion semicolon would become one of the two semicolons in the header of a For Statement.
+ * Use one semicolon
+ *
+ * @path ch07/7.9/S7.9_A6.2_T4.js
+ * @description For header is (\n \n semicolon)
+ * @negative
+ */
+
+//CHECK#1
+for(
+
+;) {
+ break;
+}
+
diff --git a/js/src/tests/test262/ch07/7.9/S7.9_A6.2_T5.js b/js/src/tests/test262/ch07/7.9/S7.9_A6.2_T5.js
new file mode 100644
index 000000000..de9ed973b
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.9/S7.9_A6.2_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.
+
+/**
+ * Check For Statement for automatic semicolon insertion.
+ * If automatic insertion semicolon would become one of the two semicolons in the header of a For Statement.
+ * Use one semicolon
+ *
+ * @path ch07/7.9/S7.9_A6.2_T5.js
+ * @description For header is (false semicolon false\n)
+ * @negative
+ */
+
+//CHECK#1
+for(false;false
+) {
+ break;
+}
+
diff --git a/js/src/tests/test262/ch07/7.9/S7.9_A6.2_T6.js b/js/src/tests/test262/ch07/7.9/S7.9_A6.2_T6.js
new file mode 100644
index 000000000..1efe468d2
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.9/S7.9_A6.2_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.
+
+/**
+ * Check For Statement for automatic semicolon insertion.
+ * If automatic insertion semicolon would become one of the two semicolons in the header of a For Statement.
+ * Use one semicolon
+ *
+ * @path ch07/7.9/S7.9_A6.2_T6.js
+ * @description For header is (false semicolon \n false)
+ * @negative
+ */
+
+//CHECK#1
+for(false;
+false
+) {
+ break;
+}
+
diff --git a/js/src/tests/test262/ch07/7.9/S7.9_A6.2_T7.js b/js/src/tests/test262/ch07/7.9/S7.9_A6.2_T7.js
new file mode 100644
index 000000000..5050697ac
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.9/S7.9_A6.2_T7.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.
+
+/**
+ * Check For Statement for automatic semicolon insertion.
+ * If automatic insertion semicolon would become one of the two semicolons in the header of a For Statement.
+ * Use one semicolon
+ *
+ * @path ch07/7.9/S7.9_A6.2_T7.js
+ * @description For header is (false \n semicolon \n)
+ * @negative
+ */
+
+//CHECK#1
+for(false
+ ;
+) {
+ break;
+}
+
diff --git a/js/src/tests/test262/ch07/7.9/S7.9_A6.2_T8.js b/js/src/tests/test262/ch07/7.9/S7.9_A6.2_T8.js
new file mode 100644
index 000000000..526809c86
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.9/S7.9_A6.2_T8.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.
+
+/**
+ * Check For Statement for automatic semicolon insertion.
+ * If automatic insertion semicolon would become one of the two semicolons in the header of a For Statement.
+ * Use one semicolon
+ *
+ * @path ch07/7.9/S7.9_A6.2_T8.js
+ * @description For header is (false \n semicolon false \n)
+ * @negative
+ */
+
+//CHECK#1
+for(false
+ ;false
+) {
+ break;
+}
+
diff --git a/js/src/tests/test262/ch07/7.9/S7.9_A6.2_T9.js b/js/src/tests/test262/ch07/7.9/S7.9_A6.2_T9.js
new file mode 100644
index 000000000..21e635ad0
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.9/S7.9_A6.2_T9.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.
+
+/**
+ * Check For Statement for automatic semicolon insertion.
+ * If automatic insertion semicolon would become one of the two semicolons in the header of a For Statement.
+ * Use one semicolon
+ *
+ * @path ch07/7.9/S7.9_A6.2_T9.js
+ * @description For header is (\n semicolon false)
+ * @negative
+ */
+
+//CHECK#1
+for(
+;false) {
+ break;
+}
+
diff --git a/js/src/tests/test262/ch07/7.9/S7.9_A6.3_T1.js b/js/src/tests/test262/ch07/7.9/S7.9_A6.3_T1.js
new file mode 100644
index 000000000..4089c29ef
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.9/S7.9_A6.3_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.
+
+/**
+ * Check For Statement for automatic semicolon insertion.
+ * If automatic insertion semicolon would become one of the two semicolons in the header of a For Statement.
+ * Don`t use semicolons
+ *
+ * @path ch07/7.9/S7.9_A6.3_T1.js
+ * @description For header is (\n)
+ * @negative
+ */
+
+//CHECK#1
+for(
+) {
+ break;
+}
+
diff --git a/js/src/tests/test262/ch07/7.9/S7.9_A6.3_T2.js b/js/src/tests/test262/ch07/7.9/S7.9_A6.3_T2.js
new file mode 100644
index 000000000..6b54313e2
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.9/S7.9_A6.3_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.
+
+/**
+ * Check For Statement for automatic semicolon insertion.
+ * If automatic insertion semicolon would become one of the two semicolons in the header of a For Statement.
+ * Don`t use semicolons
+ *
+ * @path ch07/7.9/S7.9_A6.3_T2.js
+ * @description For header is (\n \n)
+ * @negative
+ */
+
+//CHECK#1
+for(
+
+) {
+ break;
+}
+
diff --git a/js/src/tests/test262/ch07/7.9/S7.9_A6.3_T3.js b/js/src/tests/test262/ch07/7.9/S7.9_A6.3_T3.js
new file mode 100644
index 000000000..ee52d6181
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.9/S7.9_A6.3_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.
+
+/**
+ * Check For Statement for automatic semicolon insertion.
+ * If automatic insertion semicolon would become one of the two semicolons in the header of a For Statement.
+ * Don`t use semicolons
+ *
+ * @path ch07/7.9/S7.9_A6.3_T3.js
+ * @description For header is (\n \n \n)
+ * @negative
+ */
+
+//CHECK#1
+for(
+
+
+) {
+ break;
+}
+
diff --git a/js/src/tests/test262/ch07/7.9/S7.9_A6.3_T4.js b/js/src/tests/test262/ch07/7.9/S7.9_A6.3_T4.js
new file mode 100644
index 000000000..41b80740a
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.9/S7.9_A6.3_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.
+
+/**
+ * Check For Statement for automatic semicolon insertion.
+ * If automatic insertion semicolon would become one of the two semicolons in the header of a For Statement.
+ * Don`t use semicolons
+ *
+ * @path ch07/7.9/S7.9_A6.3_T4.js
+ * @description For header is (\n false \n)
+ * @negative
+ */
+
+//CHECK#1
+for(
+ false
+) {
+ break;
+}
+
diff --git a/js/src/tests/test262/ch07/7.9/S7.9_A6.3_T5.js b/js/src/tests/test262/ch07/7.9/S7.9_A6.3_T5.js
new file mode 100644
index 000000000..2377faaa5
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.9/S7.9_A6.3_T5.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.
+
+/**
+ * Check For Statement for automatic semicolon insertion.
+ * If automatic insertion semicolon would become one of the two semicolons in the header of a For Statement.
+ * Don`t use semicolons
+ *
+ * @path ch07/7.9/S7.9_A6.3_T5.js
+ * @description For header is (false \n false \n)
+ * @negative
+ */
+
+//CHECK#1
+for(false
+ false
+) {
+ break;
+}
+
diff --git a/js/src/tests/test262/ch07/7.9/S7.9_A6.3_T6.js b/js/src/tests/test262/ch07/7.9/S7.9_A6.3_T6.js
new file mode 100644
index 000000000..b400c9de3
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.9/S7.9_A6.3_T6.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.
+
+/**
+ * Check For Statement for automatic semicolon insertion.
+ * If automatic insertion semicolon would become one of the two semicolons in the header of a For Statement.
+ * Don`t use semicolons
+ *
+ * @path ch07/7.9/S7.9_A6.3_T6.js
+ * @description For header is (\n false \n false \n)
+ * @negative
+ */
+
+//CHECK#1
+for(
+ false
+ false
+) {
+ break;
+}
+
diff --git a/js/src/tests/test262/ch07/7.9/S7.9_A6.3_T7.js b/js/src/tests/test262/ch07/7.9/S7.9_A6.3_T7.js
new file mode 100644
index 000000000..ec63c02bc
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.9/S7.9_A6.3_T7.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.
+
+/**
+ * Check For Statement for automatic semicolon insertion.
+ * If automatic insertion semicolon would become one of the two semicolons in the header of a For Statement.
+ * Don`t use semicolons
+ *
+ * @path ch07/7.9/S7.9_A6.3_T7.js
+ * @description For header is (\n false \n false \n false \n)
+ * @negative
+ */
+
+//CHECK#1
+for(
+ false
+ false
+ false
+) {
+ break;
+}
+
diff --git a/js/src/tests/test262/ch07/7.9/S7.9_A6.4_T1.js b/js/src/tests/test262/ch07/7.9/S7.9_A6.4_T1.js
new file mode 100644
index 000000000..44169a23f
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.9/S7.9_A6.4_T1.js
@@ -0,0 +1,16 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * Check For Statement for automatic semicolon insertion
+ *
+ * @path ch07/7.9/S7.9_A6.4_T1.js
+ * @description Three semicolons. For header is (false semicolon false semicolon false semicolon)
+ * @negative
+ */
+
+//CHECK#1
+for(false;false;false;) {
+ break;
+}
+
diff --git a/js/src/tests/test262/ch07/7.9/S7.9_A6.4_T2.js b/js/src/tests/test262/ch07/7.9/S7.9_A6.4_T2.js
new file mode 100644
index 000000000..f930cf830
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.9/S7.9_A6.4_T2.js
@@ -0,0 +1,16 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * Check For Statement for automatic semicolon insertion
+ *
+ * @path ch07/7.9/S7.9_A6.4_T2.js
+ * @description Three semicolons. For header is (false semicolon false two semicolons false)
+ * @negative
+ */
+
+//CHECK#1
+for(false;false;;false) {
+ break;
+}
+
diff --git a/js/src/tests/test262/ch07/7.9/S7.9_A7_T1.js b/js/src/tests/test262/ch07/7.9/S7.9_A7_T1.js
new file mode 100644
index 000000000..ac730d59f
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.9/S7.9_A7_T1.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.
+
+/**
+ * Check Var Statement for automatic semicolon insertion
+ *
+ * @path ch07/7.9/S7.9_A7_T1.js
+ * @description Checking if execution of "var x \n = 1" passes
+ */
+
+//CHECK#1
+var x
+= 1
+
diff --git a/js/src/tests/test262/ch07/7.9/S7.9_A7_T2.js b/js/src/tests/test262/ch07/7.9/S7.9_A7_T2.js
new file mode 100644
index 000000000..91900bb1f
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.9/S7.9_A7_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.
+
+/**
+ * Check Var Statement for automatic semicolon insertion
+ *
+ * @path ch07/7.9/S7.9_A7_T2.js
+ * @description Checking if execution of "var x = \n 1" passes
+ */
+
+//CHECK#1
+var x =
+1
+
diff --git a/js/src/tests/test262/ch07/7.9/S7.9_A7_T3.js b/js/src/tests/test262/ch07/7.9/S7.9_A7_T3.js
new file mode 100644
index 000000000..bddc5e4d1
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.9/S7.9_A7_T3.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.
+
+/**
+ * Check Var Statement for automatic semicolon insertion
+ *
+ * @path ch07/7.9/S7.9_A7_T3.js
+ * @description Checking if execution of "var x \n x = 1" passes
+ */
+
+//CHECK#1
+var x
+x = 1
+
+
diff --git a/js/src/tests/test262/ch07/7.9/S7.9_A7_T4.js b/js/src/tests/test262/ch07/7.9/S7.9_A7_T4.js
new file mode 100644
index 000000000..46f17a477
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.9/S7.9_A7_T4.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.
+
+/**
+ * Check Var Statement for automatic semicolon insertion
+ *
+ * @path ch07/7.9/S7.9_A7_T4.js
+ * @description Checking if execution of "var \n x" passes
+ */
+
+//CHECK#1
+var
+x
+
+
diff --git a/js/src/tests/test262/ch07/7.9/S7.9_A7_T5.js b/js/src/tests/test262/ch07/7.9/S7.9_A7_T5.js
new file mode 100644
index 000000000..d1e1be650
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.9/S7.9_A7_T5.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.
+
+/**
+ * Check Var Statement for automatic semicolon insertion
+ *
+ * @path ch07/7.9/S7.9_A7_T5.js
+ * @description Checking if execution of "var \n x \n = \n 1" passes
+ */
+
+//CHECK#1
+var
+x
+=
+1
+
+
diff --git a/js/src/tests/test262/ch07/7.9/S7.9_A7_T6.js b/js/src/tests/test262/ch07/7.9/S7.9_A7_T6.js
new file mode 100644
index 000000000..df7911717
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.9/S7.9_A7_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.
+
+/**
+ * Check Var Statement for automatic semicolon insertion
+ *
+ * @path ch07/7.9/S7.9_A7_T6.js
+ * @description Checking if execution of "var x, \n y" passes
+ */
+
+//CHECK#1
+var x,
+y
+
+
diff --git a/js/src/tests/test262/ch07/7.9/S7.9_A7_T7.js b/js/src/tests/test262/ch07/7.9/S7.9_A7_T7.js
new file mode 100644
index 000000000..9beb8822c
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.9/S7.9_A7_T7.js
@@ -0,0 +1,16 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * Check Var Statement for automatic semicolon insertion
+ *
+ * @path ch07/7.9/S7.9_A7_T7.js
+ * @description Checking if execution of "var x \n y" passes
+ * @negative
+ */
+
+//CHECK#1
+var x
+y
+
+
diff --git a/js/src/tests/test262/ch07/7.9/S7.9_A7_T8.js b/js/src/tests/test262/ch07/7.9/S7.9_A7_T8.js
new file mode 100644
index 000000000..9b9057ad9
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.9/S7.9_A7_T8.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.
+
+/**
+ * Check Var Statement for automatic semicolon insertion
+ *
+ * @path ch07/7.9/S7.9_A7_T8.js
+ * @description Checking if execution of "var x \n ,y" passes
+ */
+
+//CHECK#1
+var x
+,y
+
+
diff --git a/js/src/tests/test262/ch07/7.9/S7.9_A7_T9.js b/js/src/tests/test262/ch07/7.9/S7.9_A7_T9.js
new file mode 100644
index 000000000..826ce4651
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.9/S7.9_A7_T9.js
@@ -0,0 +1,16 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * Check Var Statement for automatic semicolon insertion
+ *
+ * @path ch07/7.9/S7.9_A7_T9.js
+ * @description Checking if execution of "var x \n ,y = 1" passes
+ */
+
+//CHECK#1
+var
+x
+,y = 1
+
+
diff --git a/js/src/tests/test262/ch07/7.9/S7.9_A8_T1.js b/js/src/tests/test262/ch07/7.9/S7.9_A8_T1.js
new file mode 100644
index 000000000..d708cb3f6
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.9/S7.9_A8_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.
+
+/**
+ * Check Empty Statement for automatic semicolon insertion
+ *
+ * @path ch07/7.9/S7.9_A8_T1.js
+ * @description Checking if execution of one semicolon passes
+ */
+
+//CHECK#1
+;
+
diff --git a/js/src/tests/test262/ch07/7.9/S7.9_A8_T2.js b/js/src/tests/test262/ch07/7.9/S7.9_A8_T2.js
new file mode 100644
index 000000000..8cf2691f8
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.9/S7.9_A8_T2.js
@@ -0,0 +1,16 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * Check Empty Statement for automatic semicolon insertion
+ *
+ * @path ch07/7.9/S7.9_A8_T2.js
+ * @description Checking if execution of some semicolons with LineTerminators pases
+ */
+
+//CHECK#1
+;
+;
+;
+;
+
diff --git a/js/src/tests/test262/ch07/7.9/S7.9_A8_T3.js b/js/src/tests/test262/ch07/7.9/S7.9_A8_T3.js
new file mode 100644
index 000000000..4a91d79f2
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.9/S7.9_A8_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.
+
+/**
+ * Check Empty Statement for automatic semicolon insertion
+ *
+ * @path ch07/7.9/S7.9_A8_T3.js
+ * @description Checking if execution of some semicolons without LineTerminators passes
+ */
+
+//CHECK#1
+;;;;
+
diff --git a/js/src/tests/test262/ch07/7.9/S7.9_A8_T4.js b/js/src/tests/test262/ch07/7.9/S7.9_A8_T4.js
new file mode 100644
index 000000000..6017d8221
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.9/S7.9_A8_T4.js
@@ -0,0 +1,16 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * Check Empty Statement for automatic semicolon insertion
+ *
+ * @path ch07/7.9/S7.9_A8_T4.js
+ * @description Checking if execution of some semicolons with LineTerminators and numbers passes
+ */
+
+//CHECK#1
+;1;
+;1
+;1;
+;1
+
diff --git a/js/src/tests/test262/ch07/7.9/S7.9_A8_T5.js b/js/src/tests/test262/ch07/7.9/S7.9_A8_T5.js
new file mode 100644
index 000000000..339d7e24d
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.9/S7.9_A8_T5.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.
+
+/**
+ * Check Empty Statement for automatic semicolon insertion
+ *
+ * @path ch07/7.9/S7.9_A8_T5.js
+ * @description Checking if execution of some semicolons without LineTerminators but with numbers passes
+ */
+
+//CHECK#1
+;;1;;1;;1
+
diff --git a/js/src/tests/test262/ch07/7.9/S7.9_A9_T1.js b/js/src/tests/test262/ch07/7.9/S7.9_A9_T1.js
new file mode 100644
index 000000000..0ee175bc3
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.9/S7.9_A9_T1.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.
+
+/**
+ * Check Do-While Statement for automatic semicolon insertion
+ *
+ * @path ch07/7.9/S7.9_A9_T1.js
+ * @description Execute do { \n }while(false)
+ */
+
+//CHECK#1
+do {
+} while (false)
+
diff --git a/js/src/tests/test262/ch07/7.9/S7.9_A9_T2.js b/js/src/tests/test262/ch07/7.9/S7.9_A9_T2.js
new file mode 100644
index 000000000..3417ff15d
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.9/S7.9_A9_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.
+
+/**
+ * Check Do-While Statement for automatic semicolon insertion
+ *
+ * @path ch07/7.9/S7.9_A9_T2.js
+ * @description Execute do; while(false) \n true
+ */
+
+//CHECK#1
+do ; while (false)
+true
+
diff --git a/js/src/tests/test262/ch07/7.9/S7.9_A9_T5.js b/js/src/tests/test262/ch07/7.9/S7.9_A9_T5.js
new file mode 100644
index 000000000..0e0be2ee9
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.9/S7.9_A9_T5.js
@@ -0,0 +1,16 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * Check Do-While Statement for automatic semicolon insertion
+ *
+ * @path ch07/7.9/S7.9_A9_T5.js
+ * @description Execute do { \n ; \n }while((false) \n )
+ */
+
+//CHECK#1
+do {
+ ;
+} while ((false)
+)
+
diff --git a/js/src/tests/test262/ch07/7.9/S7.9_A9_T6.js b/js/src/tests/test262/ch07/7.9/S7.9_A9_T6.js
new file mode 100644
index 000000000..dfff034d7
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.9/S7.9_A9_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.
+
+/**
+ * Check Do-While Statement for automatic semicolon insertion
+ *
+ * @path ch07/7.9/S7.9_A9_T6.js
+ * @description Execute do \n while(false)
+ * @negative
+ */
+
+//CHECK#1
+do
+while (false)
+
diff --git a/js/src/tests/test262/ch07/7.9/S7.9_A9_T7.js b/js/src/tests/test262/ch07/7.9/S7.9_A9_T7.js
new file mode 100644
index 000000000..853144bc2
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.9/S7.9_A9_T7.js
@@ -0,0 +1,16 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * Check Do-While Statement for automatic semicolon insertion
+ *
+ * @path ch07/7.9/S7.9_A9_T7.js
+ * @description Execute do \n\n while(false)
+ * @negative
+ */
+
+//CHECK#1
+do
+
+while (false)
+
diff --git a/js/src/tests/test262/ch07/7.9/S7.9_A9_T8.js b/js/src/tests/test262/ch07/7.9/S7.9_A9_T8.js
new file mode 100644
index 000000000..398a75efc
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.9/S7.9_A9_T8.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.
+
+/**
+ * Check Do-While Statement for automatic semicolon insertion
+ *
+ * @path ch07/7.9/S7.9_A9_T8.js
+ * @description Execute do {}; \n while(false)
+ * @negative
+ */
+
+//CHECK#1
+do {};
+while (false)
+
diff --git a/js/src/tests/test262/ch07/7.9/S7.9_A9_T9.js b/js/src/tests/test262/ch07/7.9/S7.9_A9_T9.js
new file mode 100644
index 000000000..cc5948759
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.9/S7.9_A9_T9.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.
+
+/**
+ * Check Do-While Statement for automatic semicolon insertion
+ *
+ * @path ch07/7.9/S7.9_A9_T9.js
+ * @description Execute do {} \n while(false)
+ */
+
+//CHECK#1
+do {}
+while (false)
+
diff --git a/js/src/tests/test262/ch07/7.9/browser.js b/js/src/tests/test262/ch07/7.9/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.9/browser.js
diff --git a/js/src/tests/test262/ch07/7.9/shell.js b/js/src/tests/test262/ch07/7.9/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.9/shell.js
diff --git a/js/src/tests/test262/ch07/browser.js b/js/src/tests/test262/ch07/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch07/browser.js
diff --git a/js/src/tests/test262/ch07/shell.js b/js/src/tests/test262/ch07/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch07/shell.js
diff --git a/js/src/tests/test262/ch08/8.1/S8.1_A1_T1.js b/js/src/tests/test262/ch08/8.1/S8.1_A1_T1.js
new file mode 100644
index 000000000..cadea188d
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.1/S8.1_A1_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.
+
+/**
+ * The Undefined type has one value, called undefined
+ *
+ * @path ch08/8.1/S8.1_A1_T1.js
+ * @description Checking if execution of "var x = undefined" passes
+ */
+
+// CHECK#1
+var x = undefined;
+
diff --git a/js/src/tests/test262/ch08/8.1/S8.1_A1_T2.js b/js/src/tests/test262/ch08/8.1/S8.1_A1_T2.js
new file mode 100644
index 000000000..eeea0b7da
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.1/S8.1_A1_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.
+
+/**
+ * The Undefined type has one value, called undefined
+ *
+ * @path ch08/8.1/S8.1_A1_T2.js
+ * @description Check typeof(undefined) and typeof(void 0)
+ */
+
+// 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)));
+}
+
+// CHECK#3
+if (!(undefined === void 0)) {
+ ERROR('#3: undefined === void 0');
+}
+
diff --git a/js/src/tests/test262/ch08/8.1/S8.1_A2_T1.js b/js/src/tests/test262/ch08/8.1/S8.1_A2_T1.js
new file mode 100644
index 000000000..5fd35b2dc
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.1/S8.1_A2_T1.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.
+
+/**
+ * Any variable that has not been assigned a value has the value undefined
+ *
+ * @path ch08/8.1/S8.1_A2_T1.js
+ * @description Check that var x have value and type undefined
+ */
+
+var x;
+
+///////////////////////////////////////////////////////////////////
+// CHECK#1
+if (!(x === undefined)) {
+ $ERROR('#1: var x; x === undefined. Actual: ' + (x));
+}
+//
+///////////////////////////////////////////////////////////////////
+
+///////////////////////////////////////////////////////////////////
+// CHECK#2
+if (!(typeof(x) === "undefined")) {
+ $ERROR('#2: var x; typeof(x) === "undefined". Actual: ' + (typeof(x)));
+}
+//
+///////////////////////////////////////////////////////////////////
+
+///////////////////////////////////////////////////////////////////
+// CHECK#3
+if (!(x === void 0)) {
+ $ERROR('#3: var x; x === void 0. Actual: ' + (x));
+}
+//
+///////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch08/8.1/S8.1_A2_T2.js b/js/src/tests/test262/ch08/8.1/S8.1_A2_T2.js
new file mode 100644
index 000000000..1c03d668f
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.1/S8.1_A2_T2.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.
+
+/**
+ * Any variable that has not been assigned a value has the value undefined
+ *
+ * @path ch08/8.1/S8.1_A2_T2.js
+ * @description Function return undefined
+ */
+
+// CHECK#1
+function test1(x) {
+ return x;
+}
+
+if (!(test1() === void 0)) {
+ $ERROR('#1: function test1(x){return x} test1() === void 0. Actual: ' + (test1()));
+}
+
+// CHECK#2
+function test2() {
+}
+
+if (!(test2() === void 0)) {
+ $ERROR('#2: function test2(){} test2() === void 0. Actual: ' + (test2()));
+}
+
diff --git a/js/src/tests/test262/ch08/8.1/S8.1_A3.js b/js/src/tests/test262/ch08/8.1/S8.1_A3.js
new file mode 100644
index 000000000..056a136a9
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.1/S8.1_A3.js
@@ -0,0 +1,16 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * undefined is not a keyword
+ *
+ * @path ch08/8.1/S8.1_A3.js
+ * @description Create variable named undefined
+ */
+
+//////////////////////////////////////////////////////////
+// CHECK1#
+var undefined = 1;
+//
+//////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch08/8.1/S8.1_A4.js b/js/src/tests/test262/ch08/8.1/S8.1_A4.js
new file mode 100644
index 000000000..9d8a256d0
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.1/S8.1_A4.js
@@ -0,0 +1,16 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * If property of object not exist, return undefined
+ *
+ * @path ch08/8.1/S8.1_A4.js
+ * @description Check value of not existed property
+ */
+
+// CHECK#1
+if ((new Object()).newProperty !== undefined) {
+ $ERROR('#1: (new Object()).newProperty === undefined. Actual: ' + ((new Object()).newProperty));
+}
+
+
diff --git a/js/src/tests/test262/ch08/8.1/S8.1_A5.js b/js/src/tests/test262/ch08/8.1/S8.1_A5.js
new file mode 100644
index 000000000..89539ea89
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.1/S8.1_A5.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.
+
+/**
+ * Function argument that isn't provided has a value of undefined
+ *
+ * @path ch08/8.1/S8.1_A5.js
+ * @description Call function without provided argument
+ */
+
+///////////////////////////////////////
+//
+function test(arg) {
+// Check and make sure that arg is not undefined
+ if (typeof(arg) !== "undefined") {
+ $ERROR('#1: Function argument that isn\'t provided has a value of undefined. Actual: ' + (typeof(arg)));
+ }
+}
+
+test();
+//
+////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch08/8.1/browser.js b/js/src/tests/test262/ch08/8.1/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.1/browser.js
diff --git a/js/src/tests/test262/ch08/8.1/shell.js b/js/src/tests/test262/ch08/8.1/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.1/shell.js
diff --git a/js/src/tests/test262/ch08/8.12/8.12.1/8.12.1-1_1.js b/js/src/tests/test262/ch08/8.12/8.12.1/8.12.1-1_1.js
new file mode 100644
index 000000000..fc417c8d8
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.12/8.12.1/8.12.1-1_1.js
@@ -0,0 +1,17 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch08/8.12/8.12.1/8.12.1-1_1.js
+ * @description Properties - [[HasOwnProperty]] (property does not exist)
+ */
+
+function testcase() {
+
+ var o = {};
+ return o.hasOwnProperty("foo")===false;
+
+}
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch08/8.12/8.12.1/8.12.1-1_10.js b/js/src/tests/test262/ch08/8.12/8.12.1/8.12.1-1_10.js
new file mode 100644
index 000000000..88dd4d998
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.12/8.12.1/8.12.1-1_10.js
@@ -0,0 +1,18 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch08/8.12/8.12.1/8.12.1-1_10.js
+ * @description Properties - [[HasOwnProperty]] (writable, configurable, non-enumerable own value property)
+ */
+
+function testcase() {
+
+ var o = {};
+ Object.defineProperty(o, "foo", {value: 42, writable:true, configurable:true});
+ return o.hasOwnProperty("foo");
+
+}
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch08/8.12/8.12.1/8.12.1-1_11.js b/js/src/tests/test262/ch08/8.12/8.12.1/8.12.1-1_11.js
new file mode 100644
index 000000000..c000d0861
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.12/8.12.1/8.12.1-1_11.js
@@ -0,0 +1,18 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch08/8.12/8.12.1/8.12.1-1_11.js
+ * @description Properties - [[HasOwnProperty]] (writable, configurable, enumerable own value property)
+ */
+
+function testcase() {
+
+ var o = {};
+ Object.defineProperty(o, "foo", {value: 42, writable:true, enumerable:true, configurable:true});
+ return o.hasOwnProperty("foo");
+
+}
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch08/8.12/8.12.1/8.12.1-1_12.js b/js/src/tests/test262/ch08/8.12/8.12.1/8.12.1-1_12.js
new file mode 100644
index 000000000..41bc3b61b
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.12/8.12.1/8.12.1-1_12.js
@@ -0,0 +1,19 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch08/8.12/8.12.1/8.12.1-1_12.js
+ * @description Properties - [[HasOwnProperty]] (non-writable, non-configurable, non-enumerable inherited value property)
+ */
+
+function testcase() {
+
+ var base = {};
+ Object.defineProperty(base, "foo", {value: 42});
+ var o = Object.create(base);
+ return o.hasOwnProperty("foo")===false;
+
+}
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch08/8.12/8.12.1/8.12.1-1_13.js b/js/src/tests/test262/ch08/8.12/8.12.1/8.12.1-1_13.js
new file mode 100644
index 000000000..a07ec849f
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.12/8.12.1/8.12.1-1_13.js
@@ -0,0 +1,19 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch08/8.12/8.12.1/8.12.1-1_13.js
+ * @description Properties - [[HasOwnProperty]] (non-writable, non-configurable, enumerable inherited value property)
+ */
+
+function testcase() {
+
+ var base = {};
+ Object.defineProperty(base, "foo", {value: 42, enumerable:true});
+ var o = Object.create(base);
+ return o.hasOwnProperty("foo")===false;
+
+}
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch08/8.12/8.12.1/8.12.1-1_14.js b/js/src/tests/test262/ch08/8.12/8.12.1/8.12.1-1_14.js
new file mode 100644
index 000000000..923e64cb2
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.12/8.12.1/8.12.1-1_14.js
@@ -0,0 +1,19 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch08/8.12/8.12.1/8.12.1-1_14.js
+ * @description Properties - [[HasOwnProperty]] (non-writable, configurable, non-enumerable inherited value property)
+ */
+
+function testcase() {
+
+ var base = {};
+ Object.defineProperty(base, "foo", {value: 42, configurable:true});
+ var o = Object.create(base);
+ return o.hasOwnProperty("foo")===false;
+
+}
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch08/8.12/8.12.1/8.12.1-1_15.js b/js/src/tests/test262/ch08/8.12/8.12.1/8.12.1-1_15.js
new file mode 100644
index 000000000..9cfa1640b
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.12/8.12.1/8.12.1-1_15.js
@@ -0,0 +1,19 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch08/8.12/8.12.1/8.12.1-1_15.js
+ * @description Properties - [[HasOwnProperty]] (writable, non-configurable, non-enumerable inherited value property)
+ */
+
+function testcase() {
+
+ var base = {};
+ Object.defineProperty(base, "foo", {value: 42, writable:true});
+ var o = Object.create(base);
+ return o.hasOwnProperty("foo")===false;
+
+}
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch08/8.12/8.12.1/8.12.1-1_16.js b/js/src/tests/test262/ch08/8.12/8.12.1/8.12.1-1_16.js
new file mode 100644
index 000000000..1115e6ee5
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.12/8.12.1/8.12.1-1_16.js
@@ -0,0 +1,19 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch08/8.12/8.12.1/8.12.1-1_16.js
+ * @description Properties - [[HasOwnProperty]] (non-writable, configurable, enumerable inherited value property)
+ */
+
+function testcase() {
+
+ var base = {};
+ Object.defineProperty(base, "foo", {value: 42, configurable:true, enumerable:true});
+ var o = Object.create(base);
+ return o.hasOwnProperty("foo")===false;
+
+}
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch08/8.12/8.12.1/8.12.1-1_17.js b/js/src/tests/test262/ch08/8.12/8.12.1/8.12.1-1_17.js
new file mode 100644
index 000000000..09bf0f6df
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.12/8.12.1/8.12.1-1_17.js
@@ -0,0 +1,19 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch08/8.12/8.12.1/8.12.1-1_17.js
+ * @description Properties - [[HasOwnProperty]] (writable, non-configurable, enumerable inherited value property)
+ */
+
+function testcase() {
+
+ var base = {};
+ Object.defineProperty(base, "foo", {value: 42, writable:true, enumerable:true});
+ var o = Object.create(base);
+ return o.hasOwnProperty("foo")===false;
+
+}
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch08/8.12/8.12.1/8.12.1-1_18.js b/js/src/tests/test262/ch08/8.12/8.12.1/8.12.1-1_18.js
new file mode 100644
index 000000000..14c1f8c65
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.12/8.12.1/8.12.1-1_18.js
@@ -0,0 +1,19 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch08/8.12/8.12.1/8.12.1-1_18.js
+ * @description Properties - [[HasOwnProperty]] (writable, configurable, non-enumerable inherited value property)
+ */
+
+function testcase() {
+
+ var base = {};
+ Object.defineProperty(base, "foo", {value: 42, writable:true, configurable:true});
+ var o = Object.create(base);
+ return o.hasOwnProperty("foo")===false;
+
+}
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch08/8.12/8.12.1/8.12.1-1_19.js b/js/src/tests/test262/ch08/8.12/8.12.1/8.12.1-1_19.js
new file mode 100644
index 000000000..ef0a55559
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.12/8.12.1/8.12.1-1_19.js
@@ -0,0 +1,19 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch08/8.12/8.12.1/8.12.1-1_19.js
+ * @description Properties - [[HasOwnProperty]] (writable, configurable, enumerable inherited value property)
+ */
+
+function testcase() {
+
+ var base = {};
+ Object.defineProperty(base, "foo", {value: 42, writable:true, enumerable:true, configurable:true});
+ var o = Object.create(base);
+ return o.hasOwnProperty("foo")===false;
+
+}
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch08/8.12/8.12.1/8.12.1-1_2.js b/js/src/tests/test262/ch08/8.12/8.12.1/8.12.1-1_2.js
new file mode 100644
index 000000000..0314123aa
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.12/8.12.1/8.12.1-1_2.js
@@ -0,0 +1,17 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch08/8.12/8.12.1/8.12.1-1_2.js
+ * @description Properties - [[HasOwnProperty]] (old style own property)
+ */
+
+function testcase() {
+
+ var o = {foo: 42};
+ return o.hasOwnProperty("foo");
+
+}
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch08/8.12/8.12.1/8.12.1-1_20.js b/js/src/tests/test262/ch08/8.12/8.12.1/8.12.1-1_20.js
new file mode 100644
index 000000000..a4cb6f5f2
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.12/8.12.1/8.12.1-1_20.js
@@ -0,0 +1,17 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch08/8.12/8.12.1/8.12.1-1_20.js
+ * @description Properties - [[HasOwnProperty]] (literal own getter property)
+ */
+
+function testcase() {
+
+ var o = { get foo() { return 42;} };
+ return o.hasOwnProperty("foo");
+
+}
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch08/8.12/8.12.1/8.12.1-1_21.js b/js/src/tests/test262/ch08/8.12/8.12.1/8.12.1-1_21.js
new file mode 100644
index 000000000..e52f6e691
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.12/8.12.1/8.12.1-1_21.js
@@ -0,0 +1,17 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch08/8.12/8.12.1/8.12.1-1_21.js
+ * @description Properties - [[HasOwnProperty]] (literal own setter property)
+ */
+
+function testcase() {
+
+ var o = { set foo(x) {;} };
+ return o.hasOwnProperty("foo");
+
+}
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch08/8.12/8.12.1/8.12.1-1_22.js b/js/src/tests/test262/ch08/8.12/8.12.1/8.12.1-1_22.js
new file mode 100644
index 000000000..c5a836d52
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.12/8.12.1/8.12.1-1_22.js
@@ -0,0 +1,17 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch08/8.12/8.12.1/8.12.1-1_22.js
+ * @description Properties - [[HasOwnProperty]] (literal own getter/setter property)
+ */
+
+function testcase() {
+
+ var o = { get foo() { return 42;}, set foo(x) {;} };
+ return o.hasOwnProperty("foo");
+
+}
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch08/8.12/8.12.1/8.12.1-1_23.js b/js/src/tests/test262/ch08/8.12/8.12.1/8.12.1-1_23.js
new file mode 100644
index 000000000..9e2bc5cf1
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.12/8.12.1/8.12.1-1_23.js
@@ -0,0 +1,18 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch08/8.12/8.12.1/8.12.1-1_23.js
+ * @description Properties - [[HasOwnProperty]] (literal inherited getter property)
+ */
+
+function testcase() {
+
+ var base = { get foo() { return 42;} };
+ var o = Object.create(base);
+ return o.hasOwnProperty("foo")===false;
+
+}
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch08/8.12/8.12.1/8.12.1-1_24.js b/js/src/tests/test262/ch08/8.12/8.12.1/8.12.1-1_24.js
new file mode 100644
index 000000000..2bc8e3264
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.12/8.12.1/8.12.1-1_24.js
@@ -0,0 +1,18 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch08/8.12/8.12.1/8.12.1-1_24.js
+ * @description Properties - [[HasOwnProperty]] (literal inherited setter property)
+ */
+
+function testcase() {
+
+ var base = { set foo(x) {;} };
+ var o = Object.create(base);
+ return o.hasOwnProperty("foo")===false;
+
+}
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch08/8.12/8.12.1/8.12.1-1_25.js b/js/src/tests/test262/ch08/8.12/8.12.1/8.12.1-1_25.js
new file mode 100644
index 000000000..b735c28d0
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.12/8.12.1/8.12.1-1_25.js
@@ -0,0 +1,18 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch08/8.12/8.12.1/8.12.1-1_25.js
+ * @description Properties - [[HasOwnProperty]] (literal inherited getter/setter property)
+ */
+
+function testcase() {
+
+ var base = { get foo() { return 42;}, set foo(x) {;} };
+ var o = Object.create(base);
+ return o.hasOwnProperty("foo")===false;
+
+}
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch08/8.12/8.12.1/8.12.1-1_26.js b/js/src/tests/test262/ch08/8.12/8.12.1/8.12.1-1_26.js
new file mode 100644
index 000000000..fb3555966
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.12/8.12.1/8.12.1-1_26.js
@@ -0,0 +1,18 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch08/8.12/8.12.1/8.12.1-1_26.js
+ * @description Properties - [[HasOwnProperty]] (non-configurable, non-enumerable own getter property)
+ */
+
+function testcase() {
+
+ var o = {};
+ Object.defineProperty(o, "foo", {get: function() {return 42;}});
+ return o.hasOwnProperty("foo");
+
+}
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch08/8.12/8.12.1/8.12.1-1_27.js b/js/src/tests/test262/ch08/8.12/8.12.1/8.12.1-1_27.js
new file mode 100644
index 000000000..ff95ff414
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.12/8.12.1/8.12.1-1_27.js
@@ -0,0 +1,18 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch08/8.12/8.12.1/8.12.1-1_27.js
+ * @description Properties - [[HasOwnProperty]] (non-configurable, enumerable own getter property)
+ */
+
+function testcase() {
+
+ var o = {};
+ Object.defineProperty(o, "foo", {get: function() {return 42;}, enumerable:true});
+ return o.hasOwnProperty("foo");
+
+}
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch08/8.12/8.12.1/8.12.1-1_28.js b/js/src/tests/test262/ch08/8.12/8.12.1/8.12.1-1_28.js
new file mode 100644
index 000000000..5b177ded6
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.12/8.12.1/8.12.1-1_28.js
@@ -0,0 +1,18 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch08/8.12/8.12.1/8.12.1-1_28.js
+ * @description Properties - [[HasOwnProperty]] (configurable, non-enumerable own getter property)
+ */
+
+function testcase() {
+
+ var o = {};
+ Object.defineProperty(o, "foo", {get: function() {return 42;}, configurable:true});
+ return o.hasOwnProperty("foo");
+
+}
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch08/8.12/8.12.1/8.12.1-1_29.js b/js/src/tests/test262/ch08/8.12/8.12.1/8.12.1-1_29.js
new file mode 100644
index 000000000..b9b2bd5ea
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.12/8.12.1/8.12.1-1_29.js
@@ -0,0 +1,18 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch08/8.12/8.12.1/8.12.1-1_29.js
+ * @description Properties - [[HasOwnProperty]] (configurable, enumerable own getter property)
+ */
+
+function testcase() {
+
+ var o = {};
+ Object.defineProperty(o, "foo", {get: function() {return 42;}, enumerable:true, configurable:true});
+ return o.hasOwnProperty("foo");
+
+}
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch08/8.12/8.12.1/8.12.1-1_3.js b/js/src/tests/test262/ch08/8.12/8.12.1/8.12.1-1_3.js
new file mode 100644
index 000000000..742077a2b
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.12/8.12.1/8.12.1-1_3.js
@@ -0,0 +1,18 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch08/8.12/8.12.1/8.12.1-1_3.js
+ * @description Properties - [[HasOwnProperty]] (old style inherited property)
+ */
+
+function testcase() {
+
+ var base = {foo:42};
+ var o = Object.create(base);
+ return o.hasOwnProperty("foo")===false;
+
+}
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch08/8.12/8.12.1/8.12.1-1_30.js b/js/src/tests/test262/ch08/8.12/8.12.1/8.12.1-1_30.js
new file mode 100644
index 000000000..db063f6f6
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.12/8.12.1/8.12.1-1_30.js
@@ -0,0 +1,18 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch08/8.12/8.12.1/8.12.1-1_30.js
+ * @description Properties - [[HasOwnProperty]] (non-configurable, non-enumerable own setter property)
+ */
+
+function testcase() {
+
+ var o = {};
+ Object.defineProperty(o, "foo", {set: function() {;}});
+ return o.hasOwnProperty("foo");
+
+}
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch08/8.12/8.12.1/8.12.1-1_31.js b/js/src/tests/test262/ch08/8.12/8.12.1/8.12.1-1_31.js
new file mode 100644
index 000000000..4555da40e
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.12/8.12.1/8.12.1-1_31.js
@@ -0,0 +1,18 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch08/8.12/8.12.1/8.12.1-1_31.js
+ * @description Properties - [[HasOwnProperty]] (non-configurable, enumerable own setter property)
+ */
+
+function testcase() {
+
+ var o = {};
+ Object.defineProperty(o, "foo", {set: function() {;}, enumerable:true});
+ return o.hasOwnProperty("foo");
+
+}
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch08/8.12/8.12.1/8.12.1-1_32.js b/js/src/tests/test262/ch08/8.12/8.12.1/8.12.1-1_32.js
new file mode 100644
index 000000000..7fcff86a2
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.12/8.12.1/8.12.1-1_32.js
@@ -0,0 +1,18 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch08/8.12/8.12.1/8.12.1-1_32.js
+ * @description Properties - [[HasOwnProperty]] (configurable, non-enumerable own setter property)
+ */
+
+function testcase() {
+
+ var o = {};
+ Object.defineProperty(o, "foo", {set: function() {;}, configurable:true});
+ return o.hasOwnProperty("foo");
+
+}
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch08/8.12/8.12.1/8.12.1-1_33.js b/js/src/tests/test262/ch08/8.12/8.12.1/8.12.1-1_33.js
new file mode 100644
index 000000000..fb0294127
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.12/8.12.1/8.12.1-1_33.js
@@ -0,0 +1,18 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch08/8.12/8.12.1/8.12.1-1_33.js
+ * @description Properties - [[HasOwnProperty]] (configurable, enumerable own setter property)
+ */
+
+function testcase() {
+
+ var o = {};
+ Object.defineProperty(o, "foo", {set: function() {;}, enumerable:true, configurable:true});
+ return o.hasOwnProperty("foo");
+
+}
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch08/8.12/8.12.1/8.12.1-1_34.js b/js/src/tests/test262/ch08/8.12/8.12.1/8.12.1-1_34.js
new file mode 100644
index 000000000..e72c99496
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.12/8.12.1/8.12.1-1_34.js
@@ -0,0 +1,18 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch08/8.12/8.12.1/8.12.1-1_34.js
+ * @description Properties - [[HasOwnProperty]] (non-configurable, non-enumerable own getter/setter property)
+ */
+
+function testcase() {
+
+ var o = {};
+ Object.defineProperty(o, "foo", {get: function() {return 42;}, set: function() {;}});
+ return o.hasOwnProperty("foo");
+
+}
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch08/8.12/8.12.1/8.12.1-1_35.js b/js/src/tests/test262/ch08/8.12/8.12.1/8.12.1-1_35.js
new file mode 100644
index 000000000..7f56d79ae
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.12/8.12.1/8.12.1-1_35.js
@@ -0,0 +1,18 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch08/8.12/8.12.1/8.12.1-1_35.js
+ * @description Properties - [[HasOwnProperty]] (non-configurable, enumerable own getter/setter property)
+ */
+
+function testcase() {
+
+ var o = {};
+ Object.defineProperty(o, "foo", {get: function() {return 42;}, set: function() {;}, enumerable:true});
+ return o.hasOwnProperty("foo");
+
+}
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch08/8.12/8.12.1/8.12.1-1_36.js b/js/src/tests/test262/ch08/8.12/8.12.1/8.12.1-1_36.js
new file mode 100644
index 000000000..5d6a1162b
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.12/8.12.1/8.12.1-1_36.js
@@ -0,0 +1,18 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch08/8.12/8.12.1/8.12.1-1_36.js
+ * @description Properties - [[HasOwnProperty]] (configurable, non-enumerable own getter/setter property)
+ */
+
+function testcase() {
+
+ var o = {};
+ Object.defineProperty(o, "foo", {get: function() {return 42;}, set: function() {;}, configurable:true});
+ return o.hasOwnProperty("foo");
+
+}
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch08/8.12/8.12.1/8.12.1-1_37.js b/js/src/tests/test262/ch08/8.12/8.12.1/8.12.1-1_37.js
new file mode 100644
index 000000000..c58438ef7
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.12/8.12.1/8.12.1-1_37.js
@@ -0,0 +1,18 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch08/8.12/8.12.1/8.12.1-1_37.js
+ * @description Properties - [[HasOwnProperty]] (configurable, enumerable own getter/setter property)
+ */
+
+function testcase() {
+
+ var o = {};
+ Object.defineProperty(o, "foo", {get: function() {return 42;}, set: function() {;}, enumerable:true, configurable:true});
+ return o.hasOwnProperty("foo");
+
+}
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch08/8.12/8.12.1/8.12.1-1_38.js b/js/src/tests/test262/ch08/8.12/8.12.1/8.12.1-1_38.js
new file mode 100644
index 000000000..986059292
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.12/8.12.1/8.12.1-1_38.js
@@ -0,0 +1,19 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch08/8.12/8.12.1/8.12.1-1_38.js
+ * @description Properties - [[HasOwnProperty]] (non-configurable, non-enumerable inherited getter property)
+ */
+
+function testcase() {
+
+ var base = {};
+ Object.defineProperty(base, "foo", {get: function() {return 42;}});
+ var o = Object.create(base);
+ return o.hasOwnProperty("foo")===false;
+
+}
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch08/8.12/8.12.1/8.12.1-1_39.js b/js/src/tests/test262/ch08/8.12/8.12.1/8.12.1-1_39.js
new file mode 100644
index 000000000..2ec9acd72
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.12/8.12.1/8.12.1-1_39.js
@@ -0,0 +1,19 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch08/8.12/8.12.1/8.12.1-1_39.js
+ * @description Properties - [[HasOwnProperty]] (non-configurable, enumerable inherited getter property)
+ */
+
+function testcase() {
+
+ var base = {};
+ Object.defineProperty(base, "foo", {get: function() {return 42;}, enumerable:true});
+ var o = Object.create(base);
+ return o.hasOwnProperty("foo")===false;
+
+}
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch08/8.12/8.12.1/8.12.1-1_4.js b/js/src/tests/test262/ch08/8.12/8.12.1/8.12.1-1_4.js
new file mode 100644
index 000000000..cb67d3f39
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.12/8.12.1/8.12.1-1_4.js
@@ -0,0 +1,18 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch08/8.12/8.12.1/8.12.1-1_4.js
+ * @description Properties - [[HasOwnProperty]] (non-writable, non-configurable, non-enumerable own value property)
+ */
+
+function testcase() {
+
+ var o = {};
+ Object.defineProperty(o, "foo", {value: 42});
+ return o.hasOwnProperty("foo");
+
+}
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch08/8.12/8.12.1/8.12.1-1_40.js b/js/src/tests/test262/ch08/8.12/8.12.1/8.12.1-1_40.js
new file mode 100644
index 000000000..f0aad260e
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.12/8.12.1/8.12.1-1_40.js
@@ -0,0 +1,19 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch08/8.12/8.12.1/8.12.1-1_40.js
+ * @description Properties - [[HasOwnProperty]] (configurable, non-enumerable inherited getter property)
+ */
+
+function testcase() {
+
+ var base = {};
+ Object.defineProperty(base, "foo", {get: function() {return 42;}, configurable:true});
+ var o = Object.create(base);
+ return o.hasOwnProperty("foo")===false;
+
+}
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch08/8.12/8.12.1/8.12.1-1_41.js b/js/src/tests/test262/ch08/8.12/8.12.1/8.12.1-1_41.js
new file mode 100644
index 000000000..b3e3ecdff
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.12/8.12.1/8.12.1-1_41.js
@@ -0,0 +1,19 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch08/8.12/8.12.1/8.12.1-1_41.js
+ * @description Properties - [[HasOwnProperty]] (configurable, enumerable inherited getter property)
+ */
+
+function testcase() {
+
+ var base = {};
+ Object.defineProperty(base, "foo", {get: function() {return 42;}, enumerable:true, configurable:true});
+ var o = Object.create(base);
+ return o.hasOwnProperty("foo")===false;
+
+}
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch08/8.12/8.12.1/8.12.1-1_42.js b/js/src/tests/test262/ch08/8.12/8.12.1/8.12.1-1_42.js
new file mode 100644
index 000000000..5f4679697
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.12/8.12.1/8.12.1-1_42.js
@@ -0,0 +1,19 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch08/8.12/8.12.1/8.12.1-1_42.js
+ * @description Properties - [[HasOwnProperty]] (non-configurable, non-enumerable inherited setter property)
+ */
+
+function testcase() {
+
+ var base = {};
+ Object.defineProperty(base, "foo", {set: function() {;}});
+ var o = Object.create(base);
+ return o.hasOwnProperty("foo")===false;
+
+}
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch08/8.12/8.12.1/8.12.1-1_43.js b/js/src/tests/test262/ch08/8.12/8.12.1/8.12.1-1_43.js
new file mode 100644
index 000000000..52632881f
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.12/8.12.1/8.12.1-1_43.js
@@ -0,0 +1,19 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch08/8.12/8.12.1/8.12.1-1_43.js
+ * @description Properties - [[HasOwnProperty]] (non-configurable, enumerable inherited setter property)
+ */
+
+function testcase() {
+
+ var base = {};
+ Object.defineProperty(base, "foo", {set: function() {;}, enumerable:true});
+ var o = Object.create(base);
+ return o.hasOwnProperty("foo")===false;
+
+}
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch08/8.12/8.12.1/8.12.1-1_44.js b/js/src/tests/test262/ch08/8.12/8.12.1/8.12.1-1_44.js
new file mode 100644
index 000000000..e76b7ffa2
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.12/8.12.1/8.12.1-1_44.js
@@ -0,0 +1,19 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch08/8.12/8.12.1/8.12.1-1_44.js
+ * @description Properties - [[HasOwnProperty]] (configurable, non-enumerable inherited setter property)
+ */
+
+function testcase() {
+
+ var base = {};
+ Object.defineProperty(base, "foo", {set: function() {;}, configurable:true});
+ var o = Object.create(base);
+ return o.hasOwnProperty("foo")===false;
+
+}
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch08/8.12/8.12.1/8.12.1-1_45.js b/js/src/tests/test262/ch08/8.12/8.12.1/8.12.1-1_45.js
new file mode 100644
index 000000000..c1dda50f5
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.12/8.12.1/8.12.1-1_45.js
@@ -0,0 +1,19 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch08/8.12/8.12.1/8.12.1-1_45.js
+ * @description Properties - [[HasOwnProperty]] (configurable, enumerable inherited setter property)
+ */
+
+function testcase() {
+
+ var base = {};
+ Object.defineProperty(base, "foo", {set: function() {;}, enumerable:true, configurable:true});
+ var o = Object.create(base);
+ return o.hasOwnProperty("foo")===false;
+
+}
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch08/8.12/8.12.1/8.12.1-1_46.js b/js/src/tests/test262/ch08/8.12/8.12.1/8.12.1-1_46.js
new file mode 100644
index 000000000..2f2cb4a6d
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.12/8.12.1/8.12.1-1_46.js
@@ -0,0 +1,19 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch08/8.12/8.12.1/8.12.1-1_46.js
+ * @description Properties - [[HasOwnProperty]] (non-configurable, non-enumerable inherited getter/setter property)
+ */
+
+function testcase() {
+
+ var base = {};
+ Object.defineProperty(base, "foo", {get: function() {return 42;}, set: function() {;}});
+ var o = Object.create(base);
+ return o.hasOwnProperty("foo")===false;
+
+}
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch08/8.12/8.12.1/8.12.1-1_47.js b/js/src/tests/test262/ch08/8.12/8.12.1/8.12.1-1_47.js
new file mode 100644
index 000000000..032dcff5b
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.12/8.12.1/8.12.1-1_47.js
@@ -0,0 +1,19 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch08/8.12/8.12.1/8.12.1-1_47.js
+ * @description Properties - [[HasOwnProperty]] (non-configurable, enumerable inherited getter/setter property)
+ */
+
+function testcase() {
+
+ var base = {};
+ Object.defineProperty(base, "foo", {get: function() {return 42;}, set: function() {;}, enumerable:true});
+ var o = Object.create(base);
+ return o.hasOwnProperty("foo")===false;
+
+}
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch08/8.12/8.12.1/8.12.1-1_48.js b/js/src/tests/test262/ch08/8.12/8.12.1/8.12.1-1_48.js
new file mode 100644
index 000000000..f7901fbca
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.12/8.12.1/8.12.1-1_48.js
@@ -0,0 +1,19 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch08/8.12/8.12.1/8.12.1-1_48.js
+ * @description Properties - [[HasOwnProperty]] (configurable, non-enumerable inherited getter/setter property)
+ */
+
+function testcase() {
+
+ var base = {};
+ Object.defineProperty(base, "foo", {get: function() {return 42;}, set: function() {;}, configurable:true});
+ var o = Object.create(base);
+ return o.hasOwnProperty("foo")===false;
+
+}
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch08/8.12/8.12.1/8.12.1-1_49.js b/js/src/tests/test262/ch08/8.12/8.12.1/8.12.1-1_49.js
new file mode 100644
index 000000000..c43be6a73
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.12/8.12.1/8.12.1-1_49.js
@@ -0,0 +1,19 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch08/8.12/8.12.1/8.12.1-1_49.js
+ * @description Properties - [[HasOwnProperty]] (configurable, enumerable inherited getter/setter property)
+ */
+
+function testcase() {
+
+ var base = {};
+ Object.defineProperty(base, "foo", {get: function() {return 42;}, set: function() {;}, enumerable:true, configurable:true});
+ var o = Object.create(base);
+ return o.hasOwnProperty("foo")===false;
+
+}
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch08/8.12/8.12.1/8.12.1-1_5.js b/js/src/tests/test262/ch08/8.12/8.12.1/8.12.1-1_5.js
new file mode 100644
index 000000000..2c6ff4643
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.12/8.12.1/8.12.1-1_5.js
@@ -0,0 +1,18 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch08/8.12/8.12.1/8.12.1-1_5.js
+ * @description Properties - [[HasOwnProperty]] (non-writable, non-configurable, enumerable own value property)
+ */
+
+function testcase() {
+
+ var o = {};
+ Object.defineProperty(o, "foo", {value: 42, enumerable:true});
+ return o.hasOwnProperty("foo");
+
+}
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch08/8.12/8.12.1/8.12.1-1_6.js b/js/src/tests/test262/ch08/8.12/8.12.1/8.12.1-1_6.js
new file mode 100644
index 000000000..02b14b206
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.12/8.12.1/8.12.1-1_6.js
@@ -0,0 +1,18 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch08/8.12/8.12.1/8.12.1-1_6.js
+ * @description Properties - [[HasOwnProperty]] (non-writable, configurable, non-enumerable own value property)
+ */
+
+function testcase() {
+
+ var o = {};
+ Object.defineProperty(o, "foo", {value: 42, configurable:true});
+ return o.hasOwnProperty("foo");
+
+}
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch08/8.12/8.12.1/8.12.1-1_7.js b/js/src/tests/test262/ch08/8.12/8.12.1/8.12.1-1_7.js
new file mode 100644
index 000000000..4b7845365
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.12/8.12.1/8.12.1-1_7.js
@@ -0,0 +1,18 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch08/8.12/8.12.1/8.12.1-1_7.js
+ * @description Properties - [[HasOwnProperty]] (writable, non-configurable, non-enumerable own value property)
+ */
+
+function testcase() {
+
+ var o = {};
+ Object.defineProperty(o, "foo", {value: 42, writable:true});
+ return o.hasOwnProperty("foo");
+
+}
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch08/8.12/8.12.1/8.12.1-1_8.js b/js/src/tests/test262/ch08/8.12/8.12.1/8.12.1-1_8.js
new file mode 100644
index 000000000..d462883fa
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.12/8.12.1/8.12.1-1_8.js
@@ -0,0 +1,18 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch08/8.12/8.12.1/8.12.1-1_8.js
+ * @description Properties - [[HasOwnProperty]] (non-writable, configurable, enumerable own value property)
+ */
+
+function testcase() {
+
+ var o = {};
+ Object.defineProperty(o, "foo", {value: 42, configurable:true, enumerable:true});
+ return o.hasOwnProperty("foo");
+
+}
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch08/8.12/8.12.1/8.12.1-1_9.js b/js/src/tests/test262/ch08/8.12/8.12.1/8.12.1-1_9.js
new file mode 100644
index 000000000..5fe54362c
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.12/8.12.1/8.12.1-1_9.js
@@ -0,0 +1,18 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch08/8.12/8.12.1/8.12.1-1_9.js
+ * @description Properties - [[HasOwnProperty]] (writable, non-configurable, enumerable own value property)
+ */
+
+function testcase() {
+
+ var o = {};
+ Object.defineProperty(o, "foo", {value: 42, writable:true, enumerable:true});
+ return o.hasOwnProperty("foo");
+
+}
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch08/8.12/8.12.1/browser.js b/js/src/tests/test262/ch08/8.12/8.12.1/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.12/8.12.1/browser.js
diff --git a/js/src/tests/test262/ch08/8.12/8.12.1/shell.js b/js/src/tests/test262/ch08/8.12/8.12.1/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.12/8.12.1/shell.js
diff --git a/js/src/tests/test262/ch08/8.12/8.12.3/S8.12.3_A1.js b/js/src/tests/test262/ch08/8.12/8.12.3/S8.12.3_A1.js
new file mode 100644
index 000000000..4bf7b4590
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.12/8.12.3/S8.12.3_A1.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.
+
+/**
+ * [[Get]](P) method should return value when property P does not exist in instance but prototype contain it
+ *
+ * @path ch08/8.12/8.12.3/S8.12.3_A1.js
+ * @description Try to get P when property P does not exist in instance but prototype contain it
+ */
+
+//Establish foo object
+function FooObj(){}; FooObj.prototype.propFoo="some";
+
+// Invoke instance of foo object
+var __obj= new FooObj;
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__obj.propFoo !== "some"){
+ $ERROR('#1: function FooObj(){}; FooObj.prototype.propFoo="some"; var __obj= new FooObj; __obj.propFoo === "some". Actual: ' + (__obj.propFoo));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__obj['propFoo'] !== "some"){
+ $ERROR('#1: function FooObj(){}; FooObj.prototype.propFoo="some"; var __obj= new FooObj; __obj[\'propFoo\'] === "some". Actual: ' + (__obj['propFoo']));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch08/8.12/8.12.3/S8.12.3_A2.js b/js/src/tests/test262/ch08/8.12/8.12.3/S8.12.3_A2.js
new file mode 100644
index 000000000..8f261da8e
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.12/8.12.3/S8.12.3_A2.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.
+
+/**
+ * [[Get]](P) method should return undefined when property P does not exist both in instance and prototype
+ *
+ * @path ch08/8.12/8.12.3/S8.12.3_A2.js
+ * @description Try to get P when property P does not exist both in instance and prototype
+ */
+
+var __obj={};
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__obj.propFoo !== undefined){
+ $ERROR('#1: var __obj={}; __obj.propFoo === undefined. Actual: ' + (__obj.propFoo));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__obj['propFoo'] !== undefined){
+ $ERROR('#2: var __obj={}; __obj[\'propFoo\'] === undefined. Actual: ' + (__obj['propFoo']));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch08/8.12/8.12.3/S8.12.3_A3.js b/js/src/tests/test262/ch08/8.12/8.12.3/S8.12.3_A3.js
new file mode 100644
index 000000000..dbe1250ad
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.12/8.12.3/S8.12.3_A3.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.
+
+/**
+ * When the [[Get]] method of O is called with property name P value of P returns
+ *
+ * @path ch08/8.12/8.12.3/S8.12.3_A3.js
+ * @description Try to get P property P exist in instance
+ */
+
+var __map={shape:"cube", 5:"five", "6":"six"};
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__map.shape !== "cube"){
+ $ERROR('#1: var __map={shape:"cube", 5:"five", "6":"six"}; __map.shape === "cube". Actual: ' + (__map.shape));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__map["shape"] !== "cube"){
+ $ERROR('#2: var __map={shape:"cube", 5:"five", "6":"six"}; __map["shape"] === "cube". Actual: ' + (__map["shape"]));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if (__map["5"] !== "five"){
+ $ERROR('#3: var __map={shape:"cube", 5:"five", "6":"six"}; __map["5"] === "five". Actual: ' + (__map["5"]));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#4
+if (__map[5] !== "five"){
+ $ERROR('#4: var __map={shape:"cube", 5:"five", "6":"six"}; __map[5] === "five". Actual: ' + (__map[5]));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#5
+if (__map["6"] !== "six"){
+ $ERROR('#5: var __map={shape:"cube", 5:"five", "6":"six"}; __map["6"] === "six". Actual: ' + (__map["6"]));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#6
+if (__map[6] !== "six"){
+ $ERROR('#6: var __map={shape:"cube", 5:"five", "6":"six"}; __map[6] === "six". Actual: ' + (__map[6]));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch08/8.12/8.12.3/browser.js b/js/src/tests/test262/ch08/8.12/8.12.3/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.12/8.12.3/browser.js
diff --git a/js/src/tests/test262/ch08/8.12/8.12.3/shell.js b/js/src/tests/test262/ch08/8.12/8.12.3/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.12/8.12.3/shell.js
diff --git a/js/src/tests/test262/ch08/8.12/8.12.4/8.14.4-8-b_1.js b/js/src/tests/test262/ch08/8.12/8.12.4/8.14.4-8-b_1.js
new file mode 100644
index 000000000..38249d056
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.12/8.12.4/8.14.4-8-b_1.js
@@ -0,0 +1,19 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch08/8.12/8.12.4/8.14.4-8-b_1.js
+ * @description Non-writable property on a prototype written to.
+ */
+
+function testcase() {
+ function foo() {};
+ Object.defineProperty(foo.prototype, "bar", {value: "unwritable"});
+
+ var o = new foo();
+ o.bar = "overridden";
+ return o.hasOwnProperty("bar")===false && o.bar==="unwritable";
+}
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch08/8.12/8.12.4/8.14.4-8-b_2.js b/js/src/tests/test262/ch08/8.12/8.12.4/8.14.4-8-b_2.js
new file mode 100644
index 000000000..f6b5f1c14
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.12/8.12.4/8.14.4-8-b_2.js
@@ -0,0 +1,26 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch08/8.12/8.12.4/8.14.4-8-b_2.js
+ * @description Non-writable property on a prototype written to in strict mode.
+ * @onlyStrict
+ */
+
+function testcase() {
+ "use strict";
+
+ function foo() {};
+ Object.defineProperty(foo.prototype, "bar", {value: "unwritable"});
+
+ var o = new foo();
+ try {
+ o.bar = "overridden";
+ return false;
+ } catch(e) {
+ return (e instanceof TypeError) && (o.bar==="unwritable");
+ }
+}
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch08/8.12/8.12.4/S8.12.4_A1.js b/js/src/tests/test262/ch08/8.12/8.12.4/S8.12.4_A1.js
new file mode 100644
index 000000000..cbe11f0f7
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.12/8.12.4/S8.12.4_A1.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.
+
+/**
+ * If the property has the ReadOnly attribute, [[CanPut]](P) return false
+ *
+ * @path ch08/8.12/8.12.4/S8.12.4_A1.js
+ * @description Try put other value for Math.E property
+ * @noStrict
+ */
+
+var __e = Math.E;
+Math.E = 1;
+if (Math.E !== __e){
+ $ERROR('#1: __e = Math.E; Math.E = 1; Math.E === __e. Actual: ' + (Math.E));
+}
+
diff --git a/js/src/tests/test262/ch08/8.12/8.12.4/browser.js b/js/src/tests/test262/ch08/8.12/8.12.4/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.12/8.12.4/browser.js
diff --git a/js/src/tests/test262/ch08/8.12/8.12.4/shell.js b/js/src/tests/test262/ch08/8.12/8.12.4/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.12/8.12.4/shell.js
diff --git a/js/src/tests/test262/ch08/8.12/8.12.5/8.12.5-3-b_1.js b/js/src/tests/test262/ch08/8.12/8.12.5/8.12.5-3-b_1.js
new file mode 100644
index 000000000..0ed875ef4
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.12/8.12.5/8.12.5-3-b_1.js
@@ -0,0 +1,40 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch08/8.12/8.12.5/8.12.5-3-b_1.js
+ * @description Changing the value of a data property should not affect it's non-value property descriptor attributes.
+ */
+
+
+function testcase() {
+ var origReduce = Array.prototype.reduce;
+ var origDesc = Object.getOwnPropertyDescriptor(Array.prototype, "reduce");
+ var newDesc;
+
+ try {
+ Array.prototype.reduce = function () {;};
+ newDesc = Object.getOwnPropertyDescriptor(Array.prototype, "reduce");
+ var descArray = [origDesc, newDesc];
+
+ for (var j in descArray) { //Ensure no attributes are magically added to newDesc
+ for (var i in descArray[j]) {
+ if (i==="value") {
+ if (origDesc[i]===newDesc[i]) {
+ return false;
+ }
+ }
+ else if (origDesc[i]!==newDesc[i]) {
+ return false;
+ }
+ }
+ }
+ return true;
+
+ } finally {
+ Array.prototype.reduce = origReduce;
+ }
+}
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch08/8.12/8.12.5/8.12.5-3-b_2.js b/js/src/tests/test262/ch08/8.12/8.12.5/8.12.5-3-b_2.js
new file mode 100644
index 000000000..f6b760ce3
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.12/8.12.5/8.12.5-3-b_2.js
@@ -0,0 +1,44 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch08/8.12/8.12.5/8.12.5-3-b_2.js
+ * @description Changing the value of a data property should not affect it's non-value property descriptor attributes.
+ */
+
+
+function testcase() {
+ var tempObj = {};
+
+ Object.defineProperty(tempObj, "reduce", { value:456, enumerable:false, writable:true});
+ var origReduce = tempObj.reduce;
+ var origDesc = Object.getOwnPropertyDescriptor(tempObj, "reduce");
+
+ var newDesc;
+
+ try {
+ tempObj.reduce = 123;
+ newDesc = Object.getOwnPropertyDescriptor(tempObj, "reduce");
+ var descArray = [origDesc, newDesc];
+
+ for (var j in descArray) {
+ for (var i in descArray[j]) {
+ if (i==="value") {
+ if (origDesc[i]===newDesc[i]) {
+ return false;
+ }
+ }
+ else if (origDesc[i]!==newDesc[i]) {
+ return false;
+ }
+ }
+ }
+ return true;
+
+ } finally {
+ tempObj.reduce = origReduce;
+ }
+}
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch08/8.12/8.12.5/8.12.5-5-b_1.js b/js/src/tests/test262/ch08/8.12/8.12.5/8.12.5-5-b_1.js
new file mode 100644
index 000000000..b3c013ef5
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.12/8.12.5/8.12.5-5-b_1.js
@@ -0,0 +1,39 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch08/8.12/8.12.5/8.12.5-5-b_1.js
+ * @description Changing the value of an accessor property should not affect it's property descriptor attributes.
+ */
+
+
+function testcase() {
+ var tempObj = {};
+
+ Object.defineProperty(tempObj, "reduce", { get: function() {return 456;}, enumerable:false, set: function() {;}});
+ var origReduce = tempObj.reduce;
+ var origDesc = Object.getOwnPropertyDescriptor(tempObj, "reduce");
+
+ var newDesc;
+
+ try {
+ tempObj.reduce = 123;
+ newDesc = Object.getOwnPropertyDescriptor(tempObj, "reduce");
+ var descArray = [origDesc, newDesc];
+
+ for (var j in descArray) {
+ for (var i in descArray[j]) {
+ if (origDesc[i]!==newDesc[i]) {
+ return false;
+ }
+ }
+ }
+ return tempObj.reduce===456;
+
+ } finally {
+ tempObj.reduce = origReduce;
+ }
+}
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch08/8.12/8.12.5/S8.12.5_A1.js b/js/src/tests/test262/ch08/8.12/8.12.5/S8.12.5_A1.js
new file mode 100644
index 000000000..e6f4bba20
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.12/8.12.5/S8.12.5_A1.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.
+
+/**
+ * When the [[Put]] method of O is called with property P and value V,
+ * and If O doesn't have a property with name P, then
+ * creates a property with name P, set its value to V and give it empty attributes
+ *
+ * @path ch08/8.12/8.12.5/S8.12.5_A1.js
+ * @description Put to not existent properties
+ */
+
+var __map={}; __map[1]="one"; __map["two"]=2; __map["3"]="tre";
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__map[1] !== "one") {
+ $ERROR('#1: var __map={}; __map[1]="one"; __map["two"]=2; __map["3"]="tre"; __map[1] === "one". Actual: ' + (__map[1]));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__map["two"] !== 2) {
+ $ERROR('#2: var __map={}; __map[1]="one"; __map["two"]=2; __map["3"]="tre"; __map["two"] === 2. Actual: ' + (__map["two"]));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if (__map["3"] !== "tre") {
+ $ERROR('#3: var __map={}; __map[1]="one"; __map["two"]=2; __map["3"]="tre"; __map["3"] === "tre". Actual: ' + (__map["3"]));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch08/8.12/8.12.5/S8.12.5_A2.js b/js/src/tests/test262/ch08/8.12/8.12.5/S8.12.5_A2.js
new file mode 100644
index 000000000..02f67e0b8
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.12/8.12.5/S8.12.5_A2.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.
+
+/**
+ * When the [[Put]] method of O is called with property P and value V,
+ * then set the value of the property to V. The attributes of the property are not changed
+ *
+ * @path ch08/8.12/8.12.5/S8.12.5_A2.js
+ * @description Put to existent properties
+ */
+
+var _map={1:"one",two:2};
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+_map[1]="uno";
+if (_map[1] !== "uno") {
+ $ERROR('#1: var _map={1:"one",two:2}; _map[1]="uno"; _map[1] === "uno". Actual: ' + (_map[1]));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+_map["1"]=1;
+if (_map[1] !== 1) {
+ $ERROR('#2: var _map={1:"one",two:2}; _map[1]="uno"; _map["1"]=1; _map[1] === 1. Actual: ' + (_map[1]));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+_map["two"]="two";
+if (_map["two"] !== "two") {
+ $ERROR('#3: var _map={1:"one",two:2}; _map[1]="uno"; _map["1"]=1; _map["two"]="two"; _map["two"] === "two". Actual: ' + (_map["two"]));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#4
+_map.two="duo";
+if (_map.two !== "duo") {
+ $ERROR('#4: var _map={1:"one",two:2}; _map[1]="uno"; _map["1"]=1; _map["two"]="two"; _map.two="duo"; _map.two === "duo". Actual: ' + (_map.two));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch08/8.12/8.12.5/browser.js b/js/src/tests/test262/ch08/8.12/8.12.5/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.12/8.12.5/browser.js
diff --git a/js/src/tests/test262/ch08/8.12/8.12.5/shell.js b/js/src/tests/test262/ch08/8.12/8.12.5/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.12/8.12.5/shell.js
diff --git a/js/src/tests/test262/ch08/8.12/8.12.6/S8.12.6_A1.js b/js/src/tests/test262/ch08/8.12/8.12.6/S8.12.6_A1.js
new file mode 100644
index 000000000..20a2676f7
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.12/8.12.6/S8.12.6_A1.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.
+
+/**
+ * When the [[HasProperty]] method of O is called with property name P and if O has a property with name P, return true
+ *
+ * @path ch08/8.12/8.12.6/S8.12.6_A1.js
+ * @description Try find existent property of any Object
+ */
+
+var __obj={fooProp:"fooooooo"};
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (!("fooProp" in __obj)) {
+ $ERROR('#1: var __obj={fooProp:"fooooooo"}; "fooProp" in __obj');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch08/8.12/8.12.6/S8.12.6_A2_T1.js b/js/src/tests/test262/ch08/8.12/8.12.6/S8.12.6_A2_T1.js
new file mode 100644
index 000000000..4a2eac8a3
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.12/8.12.6/S8.12.6_A2_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.
+
+/**
+ * When the [[HasProperty]] method of O is called with property name P and if O has not a property with name P
+ * then If the [[Prototype]] of O is null, return false or call the [[HasProperty]] method of [[Prototype]] with property name P
+ *
+ * @path ch08/8.12/8.12.6/S8.12.6_A2_T1.js
+ * @description Try find not existent property of any Object
+ */
+
+var __obj={};
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (!("valueOf" in __obj)) {
+ $ERROR('#1: var __obj={}; "valueOf" in __obj');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch08/8.12/8.12.6/S8.12.6_A2_T2.js b/js/src/tests/test262/ch08/8.12/8.12.6/S8.12.6_A2_T2.js
new file mode 100644
index 000000000..536b8ceb4
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.12/8.12.6/S8.12.6_A2_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.
+
+/**
+ * When the [[HasProperty]] method of O is called with property name P and if O has not a property with name P
+ * then If the [[Prototype]] of O is null, return false or call the [[HasProperty]] method of [[Prototype]] with property name P
+ *
+ * @path ch08/8.12/8.12.6/S8.12.6_A2_T2.js
+ * @description Try find not existent property of any Object, but existent property of this Object prototype
+ */
+
+var __proto={phylum:"avis"};
+
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (!("valueOf" in __proto)) {
+ $ERROR('#1: var __proto={phylum:"avis"}; "valueOf" in __proto');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+function Robin(){this.name="robin"};
+Robin.prototype=__proto;
+
+var __my__robin = new Robin;
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (!("phylum" in __my__robin)) {
+ $ERROR('#2: var __proto={phylum:"avis"}; function Robin(){this.name="robin"}; Robin.prototype=__proto; var __my__robin = new Robin; "phylum" in __my__robin');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if (__my__robin.hasOwnProperty("phylum")) {
+ $ERROR('#3: var __proto={phylum:"avis"}; function Robin(){this.name="robin"}; Robin.prototype=__proto; var __my__robin = new Robin; __my__robin.hasOwnProperty("phylum") === false. Actual: ' + (__my__robin.hasOwnProperty("phylum")));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch08/8.12/8.12.6/S8.12.6_A3.js b/js/src/tests/test262/ch08/8.12/8.12.6/S8.12.6_A3.js
new file mode 100644
index 000000000..c2c34fa2c
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.12/8.12.6/S8.12.6_A3.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.
+
+/**
+ * [[hasProperty]] is sensitive to property existence but [[Get]] is not
+ *
+ * @path ch08/8.12/8.12.6/S8.12.6_A3.js
+ * @description Use [[hasProperty]] and [[Get]] for existent and not existent properties
+ */
+
+var __obj={}; __obj.hole=undefined;
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__obj.hole !== undefined) {
+ $ERROR('#1: var __obj={}; __obj.hole=undefined; __obj.hole === undefined. Actual: ' + (__obj.hole));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__obj.notexist !== undefined) {
+ $ERROR('#2: var __obj={}; __obj.hole=undefined; __obj.notexist === undefined. Actual: ' + (__obj.notexist));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if (!("hole" in __obj)) {
+ $ERROR('#3: var __obj={}; __obj.hole=undefined; "hole" in __obj');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#4
+if (("notexist" in __obj)) {
+ $ERROR('#4: var __obj={}; __obj.hole=undefined; "notexist" in __obj');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch08/8.12/8.12.6/browser.js b/js/src/tests/test262/ch08/8.12/8.12.6/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.12/8.12.6/browser.js
diff --git a/js/src/tests/test262/ch08/8.12/8.12.6/shell.js b/js/src/tests/test262/ch08/8.12/8.12.6/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.12/8.12.6/shell.js
diff --git a/js/src/tests/test262/ch08/8.12/8.12.7/S8.12.7_A1.js b/js/src/tests/test262/ch08/8.12/8.12.7/S8.12.7_A1.js
new file mode 100644
index 000000000..b6944fd48
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.12/8.12.7/S8.12.7_A1.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.
+
+/**
+ * When the [[Delete]] method of O is called with property name P,
+ * and If the property has the DontDelete attribute, return false
+ *
+ * @path ch08/8.12/8.12.7/S8.12.7_A1.js
+ * @description Try to delete Math.E, that has the DontDelete attribute
+ * @noStrict
+ */
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (delete Math.E !== false){
+ $ERROR('#1: delete Math.E === false. Actual: ' + (delete Math.E));
+};
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (Math.E === undefined){
+ $ERROR('#2: delete Math.E; Math.E !== undefined');
+};
+//
+//////////////////////////////////////////////////////////////////////////////
+
+
diff --git a/js/src/tests/test262/ch08/8.12/8.12.7/S8.12.7_A2_T1.js b/js/src/tests/test262/ch08/8.12/8.12.7/S8.12.7_A2_T1.js
new file mode 100644
index 000000000..6c416b525
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.12/8.12.7/S8.12.7_A2_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.
+
+/**
+ * When the [[Delete]] method of O is called with property name P,
+ * and if O doesn't have a property with name P, return true
+ *
+ * @path ch08/8.12/8.12.7/S8.12.7_A2_T1.js
+ * @description Try to delete not existent properties
+ */
+
+var __color__map = {};
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (delete __color__map.red !== true){
+ $ERROR('#1: var __color__map = {}; delete __color__map.red === true. Actual: ' + (delete __color__map.red));
+};
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (delete __color__map["green"] !== true){
+ $ERROR('#2: var __color__map = {}; delete __color__map["green"] === true. Actual: ' + (delete __color__map["green"]));
+};
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+var blue = 1;
+if (delete __color__map[blue] !== true){
+ $ERROR('#3: var __color__map = {}; var blue = 1; delete __color__map[blue] === true. Actual: ' + (delete __color__map[blue]));
+};
+//
+//////////////////////////////////////////////////////////////////////////////
+
+
diff --git a/js/src/tests/test262/ch08/8.12/8.12.7/S8.12.7_A2_T2.js b/js/src/tests/test262/ch08/8.12/8.12.7/S8.12.7_A2_T2.js
new file mode 100644
index 000000000..e3182463a
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.12/8.12.7/S8.12.7_A2_T2.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.
+
+/**
+ * When the [[Delete]] method of O is called with property name P,
+ * and if O doesn't have a property with name P, return true
+ *
+ * @path ch08/8.12/8.12.7/S8.12.7_A2_T2.js
+ * @description Try to delete not existent properties of O, but existent property of prototype
+ */
+
+function Palette(){};
+Palette.prototype = {red:0xFF0000, green:0x00FF00};
+var __palette = new Palette;
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__palette.red !== 0xFF0000){
+ $ERROR('#1: function Palette(){}; Palette.prototype = {red:0xFF0000, green:0x00FF00}; __palette = new Palette; __palette.red === 0xFF0000. Actual: ' + (__palette.red));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (delete __palette.red !== true) {
+ $ERROR('#2 function Palette(){}; Palette.prototype = {red:0xFF0000, green:0x00FF00}; __palette = new Palette; delete __palette.red === true. Actual: ' + (delete __palette.red));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if (__palette.red !== 0xFF0000){
+ $ERROR('#3: function Palette(){}; Palette.prototype = {red:0xFF0000, green:0x00FF00}; __palette = new Palette; __palette.red === 0xFF0000. Actual: ' + (__palette.red));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+
diff --git a/js/src/tests/test262/ch08/8.12/8.12.7/S8.12.7_A3.js b/js/src/tests/test262/ch08/8.12/8.12.7/S8.12.7_A3.js
new file mode 100644
index 000000000..c9abe19d9
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.12/8.12.7/S8.12.7_A3.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.
+
+/**
+ * When the [[Delete]] method of O is called with property name P,
+ * removes the property with name P from O and return true
+ *
+ * @path ch08/8.12/8.12.7/S8.12.7_A3.js
+ * @description Delete existent properties
+ */
+
+var BLUE_NUM=1;
+var BLUE_STR="1";
+var YELLOW_NUM=2;
+var YELLOW_STR="2";
+var __color__map = {red:0xFF0000, BLUE_NUM:0x0000FF, green:0x00FF00, YELLOW_STR:0xFFFF00};
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (delete __color__map[YELLOW_NUM] !== true){
+ $ERROR('#1: var BLUE_NUM=1; var BLUE_STR="1"; var YELLOW_NUM=2; var YELLOW_STR="2"; var __color__map = {red:0xFF0000, BLUE_NUM:0x0000FF, green:0x00FF00, YELLOW_STR:0xFFFF00}; delete __color__map[YELLOW_NUM] === true;');
+};
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__color__map[YELLOW_STR] !== undefined) {
+ $ERROR('#2: var BLUE_NUM=1; var BLUE_STR="1"; var YELLOW_NUM=2; var YELLOW_STR="2"; var __color__map = {red:0xFF0000, BLUE_NUM:0x0000FF, green:0x00FF00, YELLOW_STR:0xFFFF00}; delete __color__map[YELLOW_NUM]; __color__map[YELLOW_STR] === undefined. Actual: ' + (__color__map[YELLOW_STR]));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if (delete __color__map[BLUE_STR] !== true){
+ $ERROR('#3: var BLUE_NUM=1; var BLUE_STR="1"; var YELLOW_NUM=2; var YELLOW_STR="2"; var __color__map = {red:0xFF0000, BLUE_NUM:0x0000FF, green:0x00FF00, YELLOW_STR:0xFFFF00}; delete __color__map[BLUE_STR] === true. Actual: ' + (delete __color__map[BLUE_STR]));
+};
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#4
+if (__color__map[BLUE_NUM] !== undefined) {
+ $ERROR('#4: var BLUE_NUM=1; var BLUE_STR="1"; var YELLOW_NUM=2; var YELLOW_STR="2"; var __color__map = {red:0xFF0000, BLUE_NUM:0x0000FF, green:0x00FF00, YELLOW_STR:0xFFFF00}; delete __color__map[BLUE_STR]; __color__map[BLUE_NUM] === undefined. Actual: ' + (__color__map[BLUE_NUM]));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch08/8.12/8.12.7/browser.js b/js/src/tests/test262/ch08/8.12/8.12.7/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.12/8.12.7/browser.js
diff --git a/js/src/tests/test262/ch08/8.12/8.12.7/shell.js b/js/src/tests/test262/ch08/8.12/8.12.7/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.12/8.12.7/shell.js
diff --git a/js/src/tests/test262/ch08/8.12/8.12.8/S8.12.8_A1.js b/js/src/tests/test262/ch08/8.12/8.12.8/S8.12.8_A1.js
new file mode 100644
index 000000000..9fa13f537
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.12/8.12.8/S8.12.8_A1.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.
+
+/**
+ * This should generate a TypeError,
+ * Cause we overload toString method so it return non Primitive value
+ * See ECMA reference at http://bugzilla.mozilla.org/show_bug.cgi?id=167325
+ *
+ * @path ch08/8.12/8.12.8/S8.12.8_A1.js
+ * @description Try to overload toString method
+ */
+
+try
+{
+ var __obj = {toString: function() {return new Object();}}
+ String(__obj);
+ $ERROR('#1.1: var __obj = {toString: function() {return new Object();}}; String(__obj) throw TypeError. Actual: ' + (String(__obj)));
+}
+catch(e)
+{
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#1.2: var __obj = {toString: function() {return new Object();}}; String(__obj) throw TypeError. Actual: ' + (e));
+ }
+}
+
+
diff --git a/js/src/tests/test262/ch08/8.12/8.12.8/S8.12.8_A2.js b/js/src/tests/test262/ch08/8.12/8.12.8/S8.12.8_A2.js
new file mode 100644
index 000000000..1a4cd4f91
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.12/8.12.8/S8.12.8_A2.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.
+
+/**
+ * This should generate no TypeError,
+ * Cause we overload toString method so it return non Primitive value
+ * but we overloaded valueOf method too.
+ * See ECMA reference at http://bugzilla.mozilla.org/show_bug.cgi?id=167325
+ *
+ * @path ch08/8.12/8.12.8/S8.12.8_A2.js
+ * @description Try to overload toString, that returned new Object, and valueOf methods
+ */
+
+try
+{
+ var __obj = {toString: function() {return new Object();}, valueOf: function() {return 1;}}
+ if (String(__obj) !== "1") {
+ $ERROR('#1.1: var __obj = {toString: function() {return new Object();}, valueOf: function() {return 1;}}; String(__obj) === "1". Actual: ' + (String(__obj)));
+ }
+}
+catch(e)
+{
+ $ERROR('#1.2: var __obj = {toString: function() {return new Object();}, valueOf: function() {return 1;}}; String(__obj) === "1". Actual: ' + (e));
+}
+
+
diff --git a/js/src/tests/test262/ch08/8.12/8.12.8/S8.12.8_A3.js b/js/src/tests/test262/ch08/8.12/8.12.8/S8.12.8_A3.js
new file mode 100644
index 000000000..a54d3c2a8
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.12/8.12.8/S8.12.8_A3.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.
+
+/**
+ * We overload valueOf method so it return non Primitive value
+ * Thus [[DefaultValue]] must return Object.toString() value
+ *
+ * @path ch08/8.12/8.12.8/S8.12.8_A3.js
+ * @description Try to overload toString method, that returned Primitive, and valueOf method, that returned new Object
+ */
+
+try
+{
+ var __obj = {toString: function() {return "1"}, valueOf: function() {return new Object();}}
+ if (Number(__obj) !== 1) {
+ $ERROR('#1.1: var __obj = {toNumber: function() {return "1"}, valueOf: function() {return new Object();}}; Number(__obj) === 1. Actual: ' + (Number(__obj)));
+ }
+}
+catch(e)
+{
+ $ERROR('#1.2: var __obj = {toNumber: function() {return "1"}, valueOf: function() {return new Object();}}; Number(__obj) === 1. Actual: ' + (e));
+}
+
+
+
+
+
+
diff --git a/js/src/tests/test262/ch08/8.12/8.12.8/S8.12.8_A4.js b/js/src/tests/test262/ch08/8.12/8.12.8/S8.12.8_A4.js
new file mode 100644
index 000000000..cec14497b
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.12/8.12.8/S8.12.8_A4.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.
+
+/**
+ * We overload valueOf method so it return non Primitive value and toString method so it return non Primitive value too
+ * Thus [[DefaultValue]] must generate TypeError error
+ *
+ * @path ch08/8.12/8.12.8/S8.12.8_A4.js
+ * @description Try to overload toString and valueOf methods, they returned new Objects
+ */
+
+try
+{
+ var __obj = {valueOf:function(){return new Object;},toString: function() {return new Object();}}
+ Number(__obj);
+ $ERROR('#1.1: var __obj = {valueOf:function(){return new Object;},toNumber: function() {return new Object();}}; Number(__obj) throw TypeError. Actual: ' + (Number(__obj)));
+}
+catch(e)
+{
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#1.2: var __obj = {valueOf:function(){return new Object;},toNumber: function() {return new Object();}}; Number(__obj) throw TypeError. Actual: ' + (e));
+ }
+}
+
diff --git a/js/src/tests/test262/ch08/8.12/8.12.8/browser.js b/js/src/tests/test262/ch08/8.12/8.12.8/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.12/8.12.8/browser.js
diff --git a/js/src/tests/test262/ch08/8.12/8.12.8/shell.js b/js/src/tests/test262/ch08/8.12/8.12.8/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.12/8.12.8/shell.js
diff --git a/js/src/tests/test262/ch08/8.12/8.12.9/8.12.9-9-b-i_1.js b/js/src/tests/test262/ch08/8.12/8.12.9/8.12.9-9-b-i_1.js
new file mode 100644
index 000000000..84ea47532
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.12/8.12.9/8.12.9-9-b-i_1.js
@@ -0,0 +1,23 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch08/8.12/8.12.9/8.12.9-9-b-i_1.js
+ * @description Redefine a configurable data property to be an accessor property on a newly non-extensible object
+ */
+
+
+function testcase() {
+ var o = {};
+ Object.defineProperty(o, "foo",
+ { value: "hello",
+ configurable: true});
+ Object.preventExtensions(o);
+ Object.defineProperty(o, "foo", { get: function() { return 5;} });
+
+ var fooDescrip = Object.getOwnPropertyDescriptor(o, "foo");
+ return o.foo===5 && fooDescrip.get!==undefined && fooDescrip.set===undefined && fooDescrip.value===undefined && fooDescrip.configurable===true && fooDescrip.enumerable===false && fooDescrip.writable===undefined;
+}
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch08/8.12/8.12.9/8.12.9-9-b-i_2.js b/js/src/tests/test262/ch08/8.12/8.12.9/8.12.9-9-b-i_2.js
new file mode 100644
index 000000000..f7ba3048a
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.12/8.12.9/8.12.9-9-b-i_2.js
@@ -0,0 +1,25 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch08/8.12/8.12.9/8.12.9-9-b-i_2.js
+ * @description Redefine a configurable data property to be an accessor property on a newly non-extensible object
+ */
+
+
+function testcase() {
+ var o = {};
+ Object.defineProperty(o, "foo",
+ { value: "hello",
+ configurable: true,
+ enumerable: true,
+ writable: true});
+ Object.preventExtensions(o);
+ Object.defineProperty(o, "foo", { get: function() { return 5;} });
+
+ var fooDescrip = Object.getOwnPropertyDescriptor(o, "foo");
+ return o.foo===5 && fooDescrip.get!==undefined && fooDescrip.set===undefined && fooDescrip.value===undefined && fooDescrip.configurable===true && fooDescrip.enumerable===true && fooDescrip.writable===undefined;
+}
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch08/8.12/8.12.9/8.12.9-9-c-i_1.js b/js/src/tests/test262/ch08/8.12/8.12.9/8.12.9-9-c-i_1.js
new file mode 100644
index 000000000..bef7ddc7d
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.12/8.12.9/8.12.9-9-c-i_1.js
@@ -0,0 +1,23 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch08/8.12/8.12.9/8.12.9-9-c-i_1.js
+ * @description Redefine a configurable accessor property to be a data property on a non-extensible object
+ */
+
+
+function testcase() {
+ var o = {};
+ Object.defineProperty(o, "foo",
+ { get: function() { return 5;},
+ configurable: true});
+ Object.preventExtensions(o);
+ Object.defineProperty(o, "foo", { value: "hello"});
+
+ var fooDescrip = Object.getOwnPropertyDescriptor(o, "foo");
+ return o.foo==="hello" && fooDescrip.get===undefined && fooDescrip.set===undefined && fooDescrip.value==="hello" && fooDescrip.configurable===true && fooDescrip.enumerable===false && fooDescrip.writable===false;
+}
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch08/8.12/8.12.9/8.12.9-9-c-i_2.js b/js/src/tests/test262/ch08/8.12/8.12.9/8.12.9-9-c-i_2.js
new file mode 100644
index 000000000..0c4833ab6
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.12/8.12.9/8.12.9-9-c-i_2.js
@@ -0,0 +1,25 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch08/8.12/8.12.9/8.12.9-9-c-i_2.js
+ * @description Redefine a configurable accessor property to be a data property on a non-extensible object
+ */
+
+
+function testcase() {
+ var o = {};
+ Object.defineProperty(o, "foo",
+ { get: function() { return 5;},
+ configurable: true});
+ Object.preventExtensions(o);
+ Object.defineProperty(o, "foo",
+ { value: "hello",
+ writable: true});
+
+ var fooDescrip = Object.getOwnPropertyDescriptor(o, "foo");
+ return o.foo==="hello" && fooDescrip.get===undefined && fooDescrip.set===undefined && fooDescrip.value==="hello" && fooDescrip.configurable===true && fooDescrip.enumerable===false && fooDescrip.writable===true;
+}
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch08/8.12/8.12.9/browser.js b/js/src/tests/test262/ch08/8.12/8.12.9/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.12/8.12.9/browser.js
diff --git a/js/src/tests/test262/ch08/8.12/8.12.9/shell.js b/js/src/tests/test262/ch08/8.12/8.12.9/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.12/8.12.9/shell.js
diff --git a/js/src/tests/test262/ch08/8.12/browser.js b/js/src/tests/test262/ch08/8.12/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.12/browser.js
diff --git a/js/src/tests/test262/ch08/8.12/shell.js b/js/src/tests/test262/ch08/8.12/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.12/shell.js
diff --git a/js/src/tests/test262/ch08/8.2/S8.2_A1_T1.js b/js/src/tests/test262/ch08/8.2/S8.2_A1_T1.js
new file mode 100644
index 000000000..bf67b16cc
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.2/S8.2_A1_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.
+
+/**
+ * The Null Type has one value, called null
+ *
+ * @path ch08/8.2/S8.2_A1_T1.js
+ * @description Checking if execution of "var x = null" passes
+ */
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+var x = null;
+//
+//////////////////////////////////////////////////////////////////////////////
+
+
diff --git a/js/src/tests/test262/ch08/8.2/S8.2_A1_T2.js b/js/src/tests/test262/ch08/8.2/S8.2_A1_T2.js
new file mode 100644
index 000000000..e0bcda72a
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.2/S8.2_A1_T2.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.
+
+/**
+ * The Null Type has one value, called null
+ *
+ * @path ch08/8.2/S8.2_A1_T2.js
+ * @description Checking if execution of "x = null" passes
+ */
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+var x = null;
+//
+//////////////////////////////////////////////////////////////////////////////
+
+
diff --git a/js/src/tests/test262/ch08/8.2/S8.2_A2.js b/js/src/tests/test262/ch08/8.2/S8.2_A2.js
new file mode 100644
index 000000000..8cecf3cf8
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.2/S8.2_A2.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.
+
+/**
+ * The null is resrved word
+ *
+ * @path ch08/8.2/S8.2_A2.js
+ * @description Checking if execution of "var null" fails
+ * @negative
+ */
+
+var null;
+
+
+
diff --git a/js/src/tests/test262/ch08/8.2/S8.2_A3.js b/js/src/tests/test262/ch08/8.2/S8.2_A3.js
new file mode 100644
index 000000000..2d5d49bdf
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.2/S8.2_A3.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.
+
+/**
+ * For the keyword null the typeof operator returns the "object"
+ * See also
+ * http://developer.mozilla.org/en/docs/Core_JavaScript_1.5_Reference:Operators:Special_Operators:typeof_Operator
+ * and
+ * http://bugs.ecmascript.org/ticket/250
+ * for example
+ *
+ * @path ch08/8.2/S8.2_A3.js
+ * @description Check type of null
+ */
+
+//////////////////////////////////////////////////////////////
+// CHECK#1
+if (typeof(null) !== "object") {
+ $ERROR('#1: typeof null === "object". Actual: ' + (typeof null));
+}
+//
+/////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch08/8.2/browser.js b/js/src/tests/test262/ch08/8.2/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.2/browser.js
diff --git a/js/src/tests/test262/ch08/8.2/shell.js b/js/src/tests/test262/ch08/8.2/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.2/shell.js
diff --git a/js/src/tests/test262/ch08/8.3/S8.3_A1_T1.js b/js/src/tests/test262/ch08/8.3/S8.3_A1_T1.js
new file mode 100644
index 000000000..3c4868526
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.3/S8.3_A1_T1.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.
+
+/**
+ * The Boolean type have two values, called true and false
+ *
+ * @path ch08/8.3/S8.3_A1_T1.js
+ * @description Assign true and false to variables
+ */
+
+if (x !== undefined) {
+ $ERROR("#0 x !== undefined, but actual is "+ x);
+}
+
+////////////////////////////////////////////////////////////////////////
+// CHECK#1
+var x = true;
+var y = false;
+
+if (x !== true) {
+ $ERROR("#1.1 x !== true, but actual is "+ x);
+}
+
+if (y !== false) {
+ $ERROR("#1.1 y !== false, but actual is "+ y);
+}
+
+//
+////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch08/8.3/S8.3_A1_T2.js b/js/src/tests/test262/ch08/8.3/S8.3_A1_T2.js
new file mode 100644
index 000000000..b5740852e
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.3/S8.3_A1_T2.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.
+
+/**
+ * The Boolean type have two values, called true and false
+ *
+ * @path ch08/8.3/S8.3_A1_T2.js
+ * @description Check type of true/false and it`s equality
+ */
+
+//////////////////////////////////////////////////////////////////////
+// CHECK#1
+if (typeof(true) !== "boolean") {
+ $ERROR('#1: typeof(true) === "boolean"');
+}
+//
+//////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////
+// CHECK#2
+if (typeof(true) != "boolean") {
+ $ERROR('#2: typeof(true) == "boolean"');
+}
+//
+//////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////
+// CHECK#3
+if (typeof(false) !== "boolean") {
+ $ERROR('#3: typeof(false) === "boolean"');
+}
+//
+//////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////
+// CHECK#4
+if (typeof(false) != "boolean") {
+ $ERROR('#4: typeof(false) == "boolean"');
+}
+//
+//////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////
+// CHECK#5
+if (true === false) {
+ $ERROR('#5: true !== false');
+}
+//
+//////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////
+// CHECK#6
+if (true == false) {
+ $ERROR('#6: true != false');
+}
+//
+//////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////
+// CHECK#7
+if (false === true) {
+ $ERROR('#7: false !== true');
+}
+//
+//////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////
+// CHECK#8
+if (false == true) {
+ $ERROR('#8: false != true');
+}
+//
+//////////////////////////////////////////////////////////////////////
+
+
diff --git a/js/src/tests/test262/ch08/8.3/S8.3_A2.1.js b/js/src/tests/test262/ch08/8.3/S8.3_A2.1.js
new file mode 100644
index 000000000..e8dfba19d
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.3/S8.3_A2.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.
+
+/**
+ * The true is reserved word
+ *
+ * @path ch08/8.3/S8.3_A2.1.js
+ * @description Checking if execution of "true=1" fails
+ * @negative
+ */
+
+true = 1;
+
diff --git a/js/src/tests/test262/ch08/8.3/S8.3_A2.2.js b/js/src/tests/test262/ch08/8.3/S8.3_A2.2.js
new file mode 100644
index 000000000..a3ab639cb
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.3/S8.3_A2.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.
+
+/**
+ * The false is reserved word
+ *
+ * @path ch08/8.3/S8.3_A2.2.js
+ * @description Checking if execution of "false=0" fails
+ * @negative
+ */
+
+false = 0;
+
diff --git a/js/src/tests/test262/ch08/8.3/S8.3_A3.js b/js/src/tests/test262/ch08/8.3/S8.3_A3.js
new file mode 100644
index 000000000..a3aa585c8
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.3/S8.3_A3.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.
+
+/**
+ * Applaing negation to boolean works well
+ *
+ * @path ch08/8.3/S8.3_A3.js
+ * @description Check not false equals true, not true equals false
+ */
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (!false !== true){
+ $ERROR('#1: !false === true');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (!false != true){
+ $ERROR('#2: !false == true');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if (!true !== false){
+ $ERROR('#3: !true === false');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#4
+if (!true != false){
+ $ERROR('#4: !true == false');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch08/8.3/browser.js b/js/src/tests/test262/ch08/8.3/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.3/browser.js
diff --git a/js/src/tests/test262/ch08/8.3/shell.js b/js/src/tests/test262/ch08/8.3/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.3/shell.js
diff --git a/js/src/tests/test262/ch08/8.4/S8.4_A1.js b/js/src/tests/test262/ch08/8.4/S8.4_A1.js
new file mode 100644
index 000000000..eb27fc3b3
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.4/S8.4_A1.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.
+
+/**
+ * Any variable that has been assigned with string literal has the type string
+ *
+ * @path ch08/8.4/S8.4_A1.js
+ * @description Check type of variable that has been assigned with string literal
+ */
+
+/////////////////////////////////////////////////////////
+// CHECK#1
+var str="abcdfg";
+if (typeof(str)!=="string"){
+ $ERROR('#1: var str="abcdfg"; typeof(str) === "string". Actual: ' + (typeof(str)));
+}
+//
+////////////////////////////////////////////////////////
+
+/////////////////////////////////////////////////////////
+// CHECK#2
+var str2='qwerty';
+if (typeof(str2)!=="string"){
+ $ERROR('#2: var str2=\'qwerty\'; typeof(str) === "string". Actual: ' + (typeof(str2)));
+}
+//
+////////////////////////////////////////////////////////
+
+/////////////////////////////////////////////////////////
+// CHECK#3
+var __str='\u0042\u0043\u0044\u0045\u0046\u0047\u0048';
+if (typeof(__str)!=="string"){
+ $ERROR('#3: var __str=\'\\u0042\\u0043\\u0044\\u0045\\u0046\\u0047\\u0048\'; typeof(__str) === "string". Actual: ' + (typeof(__str)));
+}
+//
+////////////////////////////////////////////////////////
+
+/////////////////////////////////////////////////////////
+// CHECK#4
+var str__="\u0042\u0043\u0044\u0045\u0046\u0047\u0048";
+if (typeof(str__)!=="string"){
+ $ERROR('#4: var str__="abcdfg"; typeof(str__) === "string". Actual: ' + (typeof(str__)));
+}
+//
+////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch08/8.4/S8.4_A10.js b/js/src/tests/test262/ch08/8.4/S8.4_A10.js
new file mode 100644
index 000000000..fa2906fcf
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.4/S8.4_A10.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.
+
+/**
+ * Both unicode and ascii chars are allowed
+ *
+ * @path ch08/8.4/S8.4_A10.js
+ * @description Create string using both unicode and ascii chars
+ */
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+var __str = "\u0041A\u0042B\u0043C";
+if (__str !== 'AABBCC'){
+ $ERROR('#1: var __str = "\\u0041A\\u0042B\\u0043C"; __str === \'AABBCC\'. Actual: ' + (__str));
+};
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+var __str__ = "\u0041\u0042\u0043"+'ABC';
+if (__str__ !== 'ABCABC'){
+ $ERROR('#2: var __str__ = "\\u0041\\u0042\\u0043"+\'ABC\'; __str__ === \'ABCABC\'. Actual: ' + (__str__));
+};
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+var str__ = "ABC"+'\u0041\u0042\u0043';
+if (str__ !== "ABCABC"){
+ $ERROR('#2: var str__ = "ABC"+\'\\u0041\\u0042\\u0043\'; str__ === "ABCABC". Actual: ' + (str__));
+};
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch08/8.4/S8.4_A11.js b/js/src/tests/test262/ch08/8.4/S8.4_A11.js
new file mode 100644
index 000000000..8293382ec
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.4/S8.4_A11.js
@@ -0,0 +1,16 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * Presence of reserved words in string literal are allowed
+ *
+ * @path ch08/8.4/S8.4_A11.js
+ * @description Create string variable, thet include all reserved words
+ */
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+var __delete=" break else new var case finally return void catch for switch while continue function this with default if throw delete in try do instanceof typeof ";
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch08/8.4/S8.4_A12.js b/js/src/tests/test262/ch08/8.4/S8.4_A12.js
new file mode 100644
index 000000000..6073e08a3
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.4/S8.4_A12.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.
+
+/**
+ * Assignment to string literal calls String constructor
+ *
+ * @path ch08/8.4/S8.4_A12.js
+ * @description Check constructor of simple assigned variable
+ */
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+var str = "rock'n'roll";
+if (str.constructor !== String){
+ $ERROR('#1: var str = "rock\'n\'roll"; str.constructor === String. Actual: ' + (str.constructor));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch08/8.4/S8.4_A13_T1.js b/js/src/tests/test262/ch08/8.4/S8.4_A13_T1.js
new file mode 100644
index 000000000..cefef0d81
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.4/S8.4_A13_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.
+
+/**
+ * When appears not closed single-quote program failes
+ *
+ * @path ch08/8.4/S8.4_A13_T1.js
+ * @description Try to create variable using 3 single-quote
+ * @negative
+ */
+
+var str = ''';
+
diff --git a/js/src/tests/test262/ch08/8.4/S8.4_A13_T2.js b/js/src/tests/test262/ch08/8.4/S8.4_A13_T2.js
new file mode 100644
index 000000000..085b17a3d
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.4/S8.4_A13_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.
+
+/**
+ * When appears not closed single-quote program failes
+ *
+ * @path ch08/8.4/S8.4_A13_T2.js
+ * @description Try to create variable using 1 single-quote
+ * @negative
+ */
+
+var str = ';
+
diff --git a/js/src/tests/test262/ch08/8.4/S8.4_A13_T3.js b/js/src/tests/test262/ch08/8.4/S8.4_A13_T3.js
new file mode 100644
index 000000000..c777d754a
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.4/S8.4_A13_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.
+
+/**
+ * When appears not closed single-quote program failes
+ *
+ * @path ch08/8.4/S8.4_A13_T3.js
+ * @description Try to create variable using 4 single-quote
+ * @negative
+ */
+
+var str = '''';
+
diff --git a/js/src/tests/test262/ch08/8.4/S8.4_A14_T1.js b/js/src/tests/test262/ch08/8.4/S8.4_A14_T1.js
new file mode 100644
index 000000000..309704fef
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.4/S8.4_A14_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.
+
+/**
+ * When appears not closed double-quote program failes
+ *
+ * @path ch08/8.4/S8.4_A14_T1.js
+ * @description Try to create variable using 1 double-quote
+ * @negative
+ */
+
+var str = ";
+
diff --git a/js/src/tests/test262/ch08/8.4/S8.4_A14_T2.js b/js/src/tests/test262/ch08/8.4/S8.4_A14_T2.js
new file mode 100644
index 000000000..ee16cbd73
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.4/S8.4_A14_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.
+
+/**
+ * When appears not closed double-quote program failes
+ *
+ * @path ch08/8.4/S8.4_A14_T2.js
+ * @description Try to create variable using 3 double-quote
+ * @negative
+ */
+
+var str = """;
+
diff --git a/js/src/tests/test262/ch08/8.4/S8.4_A14_T3.js b/js/src/tests/test262/ch08/8.4/S8.4_A14_T3.js
new file mode 100644
index 000000000..85a5ba9bc
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.4/S8.4_A14_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.
+
+/**
+ * When appears not closed double-quote program failes
+ *
+ * @path ch08/8.4/S8.4_A14_T3.js
+ * @description Try to create variable using 4 double-quote
+ * @negative
+ */
+
+var str = """";
+
diff --git a/js/src/tests/test262/ch08/8.4/S8.4_A2.js b/js/src/tests/test262/ch08/8.4/S8.4_A2.js
new file mode 100644
index 000000000..f18e343a9
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.4/S8.4_A2.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.
+
+/**
+ * Empty string has type string
+ *
+ * @path ch08/8.4/S8.4_A2.js
+ * @description Create empty string and check it type
+ */
+
+/////////////////////////////////////////////////////////
+// CHECK#1
+var str = '';
+if (typeof(str) !== 'string'){
+ $ERROR('#1: var str = \'\'; typeof(str) === \'string\'. Actual: ' + (typeof(str)));
+}
+//
+////////////////////////////////////////////////////////
+
+/////////////////////////////////////////////////////////
+// CHECK#2
+var str = "";
+if (typeof(str) !== "string"){
+ $ERROR('#2: var str = ""; typeof(str) === "string". Actual: ' + (str));
+}
+//
+////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch08/8.4/S8.4_A3.js b/js/src/tests/test262/ch08/8.4/S8.4_A3.js
new file mode 100644
index 000000000..8b3e18034
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.4/S8.4_A3.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.
+
+/**
+ * String type has a length property
+ *
+ * @path ch08/8.4/S8.4_A3.js
+ * @description Try read length property of string variable
+ */
+
+var __str = "ABCDEFGH";
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__str.length !== 8) {
+ $ERROR('#1: var __str = "ABCDEFGH"; __str.length === 8. Actual: ' + (__str.length));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch08/8.4/S8.4_A4.js b/js/src/tests/test262/ch08/8.4/S8.4_A4.js
new file mode 100644
index 000000000..a89314fdb
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.4/S8.4_A4.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.
+
+/**
+ * Empty string variable has a length property
+ *
+ * @path ch08/8.4/S8.4_A4.js
+ * @description Try read length property of empty string variable
+ */
+
+var __str = "";
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__str.length !== 0) {
+ $ERROR('#1: var __str = ""; __str.length === 0. Actual: ' + (__str));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch08/8.4/S8.4_A5.js b/js/src/tests/test262/ch08/8.4/S8.4_A5.js
new file mode 100644
index 000000000..178891c3b
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.4/S8.4_A5.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.
+
+/**
+ * Zero "\0" not terminates the string(C string)
+ *
+ * @path ch08/8.4/S8.4_A5.js
+ * @description Insert "\0" into string
+ */
+
+// CHECK#1
+if ("x\0y" === "x") {
+ $ERROR('#1: "x\\0y" !== "x"');
+}
+
+// CHECK#2
+if (!(("x\0a" < "x\0b") && ("x\0b" < "x\0c"))) {
+ $ERROR('#2: (("x\\0a" < "x\\0b") && ("x\\0b" < "x\\0c")) === true');
+}
+
diff --git a/js/src/tests/test262/ch08/8.4/S8.4_A6.1.js b/js/src/tests/test262/ch08/8.4/S8.4_A6.1.js
new file mode 100644
index 000000000..29a8691e1
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.4/S8.4_A6.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.
+
+/**
+ * Large string 4096 bytes
+ *
+ * @path ch08/8.4/S8.4_A6.1.js
+ * @description Assign variable by large string
+ */
+
+////////////////////////////////////////////////////
+// Check#1
+var largeStr='Standard ECMA-2623r d Edition - December 1999S t a n d a r d i z i n g Informat i o n and Commu n i c a t i o n SystemsPhone: +41 22 849.60.00 - Fax: +41 22 849.60.01 - URL: ht tp: / /www.ecma.ch - Internet: helpdesk@ecma.chECMAScript LanguageSpecificationStandard ECMA-2623r d Edition - December 1999S t a n d a r d i z i n g Informat i o n and Commu n i c a t i o n SystemsPhone: +41 22 849.60.00 - Fax: +41 22 849.60.01 - URL: ht tp: / /www.ecma.ch - Internet: helpdesk@ecma.chMB Ecma-262.doc 08-04-02 16,53ECMAScript LanguageSpecificationBrief HistoryThis ECMA Standard is based on several originating technologies, the most well known being JavaScript (Netscape)and JScript (Microsoft). The language was invented by Brendan Eich at Netscape and first appeared in thatcompan Navigator 2.0 browser. It has appeared in all subsequent browsers from Netscape and in all browsers fromMicrosoft starting with Internet Explorer 3.0.The development of this Standard started in November 1996. The first edition of this ECMA Standard was adopted bythe ECMA General Assembly of June 1997.That ECMA Standard was submitted to ISO/IEC JTC 1 for adoption under the fast-track procedure, and approved asinternational standard ISO/IEC 16262, in April 1998. The ECMA General Assembly of June 1998 approved thesecond edition of ECMA-262 to keep it fully aligned with ISO/IEC 16262. Changes between the first and the secondedition are editorial in nature.The current document defines the third edition of the Standard and includes powerful regular expressions, betterstring handling, new control statements, try/catch exception handling, tighter definition of errors, formatting fornumeric output and minor changes in anticipation of forthcoming internationalisation facilities and future languagegrowth.Work on the language is not complete. The technical committee is working on significant enhancements, includingmechanisms for scripts to be created and used across the Internet, and tighter coordination with other standards bodiessuch as groups within the World Wide Web Consortium and the Wireless Application Protocol Forum.This Standard has been adopted as 3rd Edition of ECMA-262 by the ECMA General Assembly in December, 1999.- i -Table of contents1 Scope 12 Conformance 13 References 14 Overview 1 4.1 Web Scripting 2 4.2 Language Overview 2 4.2.1 Objects 3 4.3 Definitions 4 4.3.1 Type 4 4.3.2 Primitive Value 4 4.3.3 Object 4 4.3.4 Constructor 4 4.3.5 Prototype 4 4.3.6 Native Object 4 4.3.7 Built-in Object 4 4.3.8 Host Object 4 4.3.9 Undefined Value 4 4.3.10 Undefined Type 4 4.3.11 Null Value 4 4.3.12 Null Type 4 4.3.13 Boolean Value 4 4.3.14 Boolean Type 4 4.3.15 Boolean Object 5 4.3.16 String Value 5 4.3.17 String Type 5 4.3.18 String Object 5 4.3.19 Number Value 5 4.3.20 Number Type 5 4.3.21 Number Object 5 4.3.22 Infinity 5 4.3.23 NaN 5 5 Notational Conventions 6 5.1 Syntactic and Lexical Grammars 6 5.1.1 Context-Free Grammars 6 5.1.2 The Lexical and RegExp Grammars 6 5.1.3 The Numeric String Grammar 6 5.1.4 The Syntactic Grammar 6 5.1.5 Grammar Notation 7 5.2 Algorithm Conventions 9 6. Source Text 10 7 Lexical Conventions 11 7.1 Unicode Format-Control Characters 11 7.2 White Space 11 7.3 Line Terminators 12 7.4 Comments 12 - ii - 7.5 Tokens 13 7.5.1 Reserved Words 13 7.5.2 Keywords 13 7.5.3 Future Reserved Words 14 7.6 Identifiers 14 7.7 Punctuators 15 7.8 Literals 16 7.8.1 Null Literals 16 7.8.2 Boolean Literals 16 7.8.3 Numeric Literals 16 7.8.4 String Literals 18 7.8.5 Regular Expression Literals 20 7.9 Automatic Semicolon Insertion 21 7.9.1 Rules of Automatic Semicolon Insertion 21 7.9.2 Examples of Automatic Semicolon Insertion 22 8 Types 24 8.1 The Undefined Type 24 8.2 The Null Type 24 8.3 The Boolean Type 24 8.4 The String Type 24 8.5 The Number Type 24 8.6 The Object Type 25 8.6.1 Property Attributes 25 8.6.2 Internal Properties and Methods 26 8.7 The Reference Type 29 8.7.1 GetValue (V) 29 8.7.2 PutValue (V, W) 29 8.8 The List Type 30 8.9 The Completion Type 30 9 Type Conversion 30 9.1 ToPrimitive 30 9.2 ToBoolean 30 9.3 ToNumber 31 9.3.1 ToNumber Ap';
+if(largeStr !== 'Standard ECMA-2623r d Edition - December 1999S t a n d a r d i z i n g Informat i o n and Commu n i c a t i o n SystemsPhone: +41 22 849.60.00 - Fax: +41 22 849.60.01 - URL: ht tp: / /www.ecma.ch - Internet: helpdesk@ecma.chECMAScript LanguageSpecificationStandard ECMA-2623r d Edition - December 1999S t a n d a r d i z i n g Informat i o n and Commu n i c a t i o n SystemsPhone: +41 22 849.60.00 - Fax: +41 22 849.60.01 - URL: ht tp: / /www.ecma.ch - Internet: helpdesk@ecma.chMB Ecma-262.doc 08-04-02 16,53ECMAScript LanguageSpecificationBrief HistoryThis ECMA Standard is based on several originating technologies, the most well known being JavaScript (Netscape)and JScript (Microsoft). The language was invented by Brendan Eich at Netscape and first appeared in thatcompan Navigator 2.0 browser. It has appeared in all subsequent browsers from Netscape and in all browsers fromMicrosoft starting with Internet Explorer 3.0.The development of this Standard started in November 1996. The first edition of this ECMA Standard was adopted bythe ECMA General Assembly of June 1997.That ECMA Standard was submitted to ISO/IEC JTC 1 for adoption under the fast-track procedure, and approved asinternational standard ISO/IEC 16262, in April 1998. The ECMA General Assembly of June 1998 approved thesecond edition of ECMA-262 to keep it fully aligned with ISO/IEC 16262. Changes between the first and the secondedition are editorial in nature.The current document defines the third edition of the Standard and includes powerful regular expressions, betterstring handling, new control statements, try/catch exception handling, tighter definition of errors, formatting fornumeric output and minor changes in anticipation of forthcoming internationalisation facilities and future languagegrowth.Work on the language is not complete. The technical committee is working on significant enhancements, includingmechanisms for scripts to be created and used across the Internet, and tighter coordination with other standards bodiessuch as groups within the World Wide Web Consortium and the Wireless Application Protocol Forum.This Standard has been adopted as 3rd Edition of ECMA-262 by the ECMA General Assembly in December, 1999.- i -Table of contents1 Scope 12 Conformance 13 References 14 Overview 1 4.1 Web Scripting 2 4.2 Language Overview 2 4.2.1 Objects 3 4.3 Definitions 4 4.3.1 Type 4 4.3.2 Primitive Value 4 4.3.3 Object 4 4.3.4 Constructor 4 4.3.5 Prototype 4 4.3.6 Native Object 4 4.3.7 Built-in Object 4 4.3.8 Host Object 4 4.3.9 Undefined Value 4 4.3.10 Undefined Type 4 4.3.11 Null Value 4 4.3.12 Null Type 4 4.3.13 Boolean Value 4 4.3.14 Boolean Type 4 4.3.15 Boolean Object 5 4.3.16 String Value 5 4.3.17 String Type 5 4.3.18 String Object 5 4.3.19 Number Value 5 4.3.20 Number Type 5 4.3.21 Number Object 5 4.3.22 Infinity 5 4.3.23 NaN 5 5 Notational Conventions 6 5.1 Syntactic and Lexical Grammars 6 5.1.1 Context-Free Grammars 6 5.1.2 The Lexical and RegExp Grammars 6 5.1.3 The Numeric String Grammar 6 5.1.4 The Syntactic Grammar 6 5.1.5 Grammar Notation 7 5.2 Algorithm Conventions 9 6. Source Text 10 7 Lexical Conventions 11 7.1 Unicode Format-Control Characters 11 7.2 White Space 11 7.3 Line Terminators 12 7.4 Comments 12 - ii - 7.5 Tokens 13 7.5.1 Reserved Words 13 7.5.2 Keywords 13 7.5.3 Future Reserved Words 14 7.6 Identifiers 14 7.7 Punctuators 15 7.8 Literals 16 7.8.1 Null Literals 16 7.8.2 Boolean Literals 16 7.8.3 Numeric Literals 16 7.8.4 String Literals 18 7.8.5 Regular Expression Literals 20 7.9 Automatic Semicolon Insertion 21 7.9.1 Rules of Automatic Semicolon Insertion 21 7.9.2 Examples of Automatic Semicolon Insertion 22 8 Types 24 8.1 The Undefined Type 24 8.2 The Null Type 24 8.3 The Boolean Type 24 8.4 The String Type 24 8.5 The Number Type 24 8.6 The Object Type 25 8.6.1 Property Attributes 25 8.6.2 Internal Properties and Methods 26 8.7 The Reference Type 29 8.7.1 GetValue (V) 29 8.7.2 PutValue (V, W) 29 8.8 The List Type 30 8.9 The Completion Type 30 9 Type Conversion 30 9.1 ToPrimitive 30 9.2 ToBoolean 30 9.3 ToNumber 31 9.3.1 ToNumber Ap'){
+ $ERROR('#1: Large string 4096 bytes');
+}
+//
+////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch08/8.4/S8.4_A6.2.js b/js/src/tests/test262/ch08/8.4/S8.4_A6.2.js
new file mode 100644
index 000000000..5794b030d
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.4/S8.4_A6.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.
+
+/**
+ * Large string 8192 bytes
+ *
+ * @path ch08/8.4/S8.4_A6.2.js
+ * @description Assign variable by large string
+ */
+
+////////////////////////////////////////////////////
+// Check#2
+var largeStr='Standard ECMA-2623r d Edition - December 1999S t a n d a r d i z i n g Informat i o n and Commu n i c a t i o n SystemsPhone: +41 22 849.60.00 - Fax: +41 22 849.60.01 - URL: ht tp: / /www.ecma.ch - Internet: helpdesk@ecma.chECMAScript LanguageSpecificationStandard ECMA-2623r d Edition - December 1999S t a n d a r d i z i n g Informat i o n and Commu n i c a t i o n SystemsPhone: +41 22 849.60.00 - Fax: +41 22 849.60.01 - URL: ht tp: / /www.ecma.ch - Internet: helpdesk@ecma.chMB Ecma-262.doc 08-04-02 16,53ECMAScript LanguageSpecificationBrief HistoryThis ECMA Standard is based on several originating technologies, the most well known being JavaScript (Netscape)and JScript (Microsoft). The language was invented by Brendan Eich at Netscape and first appeared in thatcompans Navigator 2.0 browser. It has appeared in all subsequent browsers from Netscape and in all browsers fromMicrosoft starting with Internet Explorer 3.0.The development of this Standard started in November 1996. The first edition of this ECMA Standard was adopted bythe ECMA General Assembly of June 1997.That ECMA Standard was submitted to ISO/IEC JTC 1 for adoption under the fast-track procedure, and approved asinternational standard ISO/IEC 16262, in April 1998. The ECMA General Assembly of June 1998 approved thesecond edition of ECMA-262 to keep it fully aligned with ISO/IEC 16262. Changes between the first and the secondedition are editorial in nature.The current document defines the third edition of the Standard and includes powerful regular expressions, betterstring handling, new control statements, try/catch exception handling, tighter definition of errors, formatting fornumeric output and minor changes in anticipation of forthcoming internationalisation facilities and future languagegrowth.Work on the language is not complete. The technical committee is working on significant enhancements, includingmechanisms for scripts to be created and used across the Internet, and tighter coordination with other standards bodiessuch as groups within the World Wide Web Consortium and the Wireless Application Protocol Forum.This Standard has been adopted as 3rd Edition of ECMA-262 by the ECMA General Assembly in December, 1999.- i -Table of contents1 Scope 12 Conformance 13 References 14 Overview 1 4.1 Web Scripting 2 4.2 Language Overview 2 4.2.1 Objects 3 4.3 Definitions 4 4.3.1 Type 4 4.3.2 Primitive Value 4 4.3.3 Object 4 4.3.4 Constructor 4 4.3.5 Prototype 4 4.3.6 Native Object 4 4.3.7 Built-in Object 4 4.3.8 Host Object 4 4.3.9 Undefined Value 4 4.3.10 Undefined Type 4 4.3.11 Null Value 4 4.3.12 Null Type 4 4.3.13 Boolean Value 4 4.3.14 Boolean Type 4 4.3.15 Boolean Object 5 4.3.16 String Value 5 4.3.17 String Type 5 4.3.18 String Object 5 4.3.19 Number Value 5 4.3.20 Number Type 5 4.3.21 Number Object 5 4.3.22 Infinity 5 4.3.23 NaN 5 5 Notational Conventions 6 5.1 Syntactic and Lexical Grammars 6 5.1.1 Context-Free Grammars 6 5.1.2 The Lexical and RegExp Grammars 6 5.1.3 The Numeric String Grammar 6 5.1.4 The Syntactic Grammar 6 5.1.5 Grammar Notation 7 5.2 Algorithm Conventions 9 6. Source Text 10 7 Lexical Conventions 11 7.1 Unicode Format-Control Characters 11 7.2 White Space 11 7.3 Line Terminators 12 7.4 Comments 12 - ii - 7.5 Tokens 13 7.5.1 Reserved Words 13 7.5.2 Keywords 13 7.5.3 Future Reserved Words 14 7.6 Identifiers 14 7.7 Punctuators 15 7.8 Literals 16 7.8.1 Null Literals 16 7.8.2 Boolean Literals 16 7.8.3 Numeric Literals 16 7.8.4 String Literals 18 7.8.5 Regular Expression Literals 20 7.9 Automatic Semicolon Insertion 21 7.9.1 Rules of Automatic Semicolon Insertion 21 7.9.2 Examples of Automatic Semicolon Insertion 22 8 Types 24 8.1 The Undefined Type 24 8.2 The Null Type 24 8.3 The Boolean Type 24 8.4 The String Type 24 8.5 The Number Type 24 8.6 The Object Type 25 8.6.1 Property Attributes 25 8.6.2 Internal Properties and Methods 26 8.7 The Reference Type 29 8.7.1 GetValue (V) 29 8.7.2 PutValue (V, W) 29 8.8 The List Type 30 8.9 The Completion Type 30 9 Type Conversion 30 9.1 ToPrimitive 30 9.2 ToBoolean 30 9.3 ToNumber 31 9.3.1 ToNumber Applied to the String Type 31 9.4 ToInteger 34 9.5 ToInt32: (Signed 32 Bit Integer) 34 9.6 ToUint32: (Unsigned 32 Bit Integer) 34 9.7 ToUint16: (Unsigned 16 Bit Integer) 35 9.8 ToString 35 9.8.1 ToString Applied to the Number Type 35 9.9 ToObject 36 10 Execution Contexts 37 10.1 Definitions 37 10.1.1 Function Objects 37 10.1.2 Types of Executable Code 37 10.1.3 Variable Instantiation 37 10.1.4 Scope Chain and Identifier Resolution 38 10.1.5 Global Object 38 10.1.6 Activation Object 38 - i i i - 10.1.7 This 39 10.1.8 Arguments Object 39 10.2 Entering An Execution Context 39 10.2.1 Global Code 39 10.2.2 Eval Code 39 10.2.3 Function Code 39 11 Expressions 40 11.1 Primary Expressions 40 11.1.1 The this Keyword 40 11.1.2 Identifier Reference 40 11.1.3 Literal Reference 40 11.1.4 Array Initialiser 40 11.1.5 Object Initialiser 41 11.1.6 The Grouping Operator 42 11.2 Left-Hand-Side Expressions 43 11.2.1 Property Accessors 43 11.2.2 The new Operator 44 11.2.3 Function Calls 44 11.2.4 Argument Lists 45 11.2.5 Function Expressions 45 11.3 Postfix Expressions 45 11.3.1 Postfix Increment Operator 45 11.3.2 Postfix Decrement Operator 45 11.4 Unary Operators 46 11.4.1 The delete Operator 46 11.4.2 The void Operator 46 11.4.3 The typeof Operator 46 11.4.4 Prefix Increment Operator 47 11.4.5 Prefix Decrement Operator 47 11.4.6 Unary + Operator 47 11.4.7 Unary - Operator 47 11.4.8 Bitwise NOT Operator ( ~) 48 11.4.9 Logical NOT Operator ( !) 48 11.5 Multiplicative Operators 48 11.5.1 Applying the * Operator 48 11.5.2 Applying the / Operator 49 11.5.3 Applying the % Operator 49 11.6 Additive Operators 50 11.6.1 The Addition operator ( +) 50 11.6.2 The Subtraction Operator ( -) 50 11.6.3 Applying the Additive Operators ( +,- ) to Numbers 51 11.7 Bitwise Shift Operators 51 11.7.1 The Left Shift Operator ( <<) 51 11.7.2 The Signed Right Shift Operator ( >>) 51 11.7.3 The Unsigned Right Shift Operator ( >>>) 52 11.4 Relational Operators 52 11.8.1 The Less-than Operator ( <) 53 11.8.2 The Greater-than Operator ( >) 53 11.8.3 The Less-than-or-equal Operator ( <=) 53 11.8.4 The Greater-than-or-equal Operator ( >=) 53 11.8.5 The Abstract Relational Comparison Algorithm 53 - iv - 11.8.6 The instanceof operator 54 11.8.7 The in operator 54 11.9 Equality Operators 54 11.9.1 The Equals Operator ( ==) 55 11.9.2 The Does-not-equals Operator ( !=) 55 11.9.3 The Abstract Equality Comparison Algorithm 55 11.9.4 The Strict Equals Operator ( ===) 56 11.9.5 The Strict Does-not-equal Operator ( !==) 56 11.9.6 The Strict Equality Comparison Algorithm 56 11.10 Binary Bitwise Operators 57 11.11 Binary Logical Operators 58 11.12 Conditional Operator ( ?: ) 58 11.13 Assignment Operators 59 11.13.1 Simple Assignment ( =) 59 11.13.2 Compound Assignment ( op=) 60 11.14 Comma Operator ( , ) 60 12 Statements 61 12.1 Block 61 12.2 Variable statement 62 12.3 Empty Statement 63 12.4 Expression Statement 63 12.5 The if Statement 63 12.6 Iteration Statements 64 12.6.1 The do-while Statement 64 12.6.2 The while statement 64 12.6.3 The for Statement 65 12.6.4 The for-in Statement 65 12.7 The continue Statement 66 12.8 The break Statement 67 12.9 The return Statement 67 12.10 The with Statement 67 12.11 The switch Statement 68 12.12 Labelled Statements 69 12.13 The throw statement 69 12.14 The try statement 70 13 Function Definition 71 13.1 Definitions 72 13.1.1 Equated Grammar Productions 72 13.1.2 Joined Objects 72 13.2 Creating Function Objects 72 13.2.1 [[Call]] 73 13.2.2 [[Construct]] 74 14 Program 75 15 Native ECMAScript Objects 76 15.1 The Global Object 76 15.1.1 Value Properties of the Global Object 77 15.1.2 Function Properties of the Global Object 77 15.1.3 URI Handling Function Properties 78 - v - 15.1.4 Constructor Properties of the Global Object 83 15.1.5 Other Properties of the Global Object 83 15.2 Object Objects 83 15.2.1 The Object Constructor Called as a Function 83 15.2.2 The Object Constructor 84 15.2.3 Properties of the Object Constructor 84 15.2.4 Properties of the Object Prototype Object 84 15.2.5 Properties of Object Instances 85 15.3 Function Objects 85 ';
+if(largeStr !== 'Standard ECMA-2623r d Edition - December 1999S t a n d a r d i z i n g Informat i o n and Commu n i c a t i o n SystemsPhone: +41 22 849.60.00 - Fax: +41 22 849.60.01 - URL: ht tp: / /www.ecma.ch - Internet: helpdesk@ecma.chECMAScript LanguageSpecificationStandard ECMA-2623r d Edition - December 1999S t a n d a r d i z i n g Informat i o n and Commu n i c a t i o n SystemsPhone: +41 22 849.60.00 - Fax: +41 22 849.60.01 - URL: ht tp: / /www.ecma.ch - Internet: helpdesk@ecma.chMB Ecma-262.doc 08-04-02 16,53ECMAScript LanguageSpecificationBrief HistoryThis ECMA Standard is based on several originating technologies, the most well known being JavaScript (Netscape)and JScript (Microsoft). The language was invented by Brendan Eich at Netscape and first appeared in thatcompans Navigator 2.0 browser. It has appeared in all subsequent browsers from Netscape and in all browsers fromMicrosoft starting with Internet Explorer 3.0.The development of this Standard started in November 1996. The first edition of this ECMA Standard was adopted bythe ECMA General Assembly of June 1997.That ECMA Standard was submitted to ISO/IEC JTC 1 for adoption under the fast-track procedure, and approved asinternational standard ISO/IEC 16262, in April 1998. The ECMA General Assembly of June 1998 approved thesecond edition of ECMA-262 to keep it fully aligned with ISO/IEC 16262. Changes between the first and the secondedition are editorial in nature.The current document defines the third edition of the Standard and includes powerful regular expressions, betterstring handling, new control statements, try/catch exception handling, tighter definition of errors, formatting fornumeric output and minor changes in anticipation of forthcoming internationalisation facilities and future languagegrowth.Work on the language is not complete. The technical committee is working on significant enhancements, includingmechanisms for scripts to be created and used across the Internet, and tighter coordination with other standards bodiessuch as groups within the World Wide Web Consortium and the Wireless Application Protocol Forum.This Standard has been adopted as 3rd Edition of ECMA-262 by the ECMA General Assembly in December, 1999.- i -Table of contents1 Scope 12 Conformance 13 References 14 Overview 1 4.1 Web Scripting 2 4.2 Language Overview 2 4.2.1 Objects 3 4.3 Definitions 4 4.3.1 Type 4 4.3.2 Primitive Value 4 4.3.3 Object 4 4.3.4 Constructor 4 4.3.5 Prototype 4 4.3.6 Native Object 4 4.3.7 Built-in Object 4 4.3.8 Host Object 4 4.3.9 Undefined Value 4 4.3.10 Undefined Type 4 4.3.11 Null Value 4 4.3.12 Null Type 4 4.3.13 Boolean Value 4 4.3.14 Boolean Type 4 4.3.15 Boolean Object 5 4.3.16 String Value 5 4.3.17 String Type 5 4.3.18 String Object 5 4.3.19 Number Value 5 4.3.20 Number Type 5 4.3.21 Number Object 5 4.3.22 Infinity 5 4.3.23 NaN 5 5 Notational Conventions 6 5.1 Syntactic and Lexical Grammars 6 5.1.1 Context-Free Grammars 6 5.1.2 The Lexical and RegExp Grammars 6 5.1.3 The Numeric String Grammar 6 5.1.4 The Syntactic Grammar 6 5.1.5 Grammar Notation 7 5.2 Algorithm Conventions 9 6. Source Text 10 7 Lexical Conventions 11 7.1 Unicode Format-Control Characters 11 7.2 White Space 11 7.3 Line Terminators 12 7.4 Comments 12 - ii - 7.5 Tokens 13 7.5.1 Reserved Words 13 7.5.2 Keywords 13 7.5.3 Future Reserved Words 14 7.6 Identifiers 14 7.7 Punctuators 15 7.8 Literals 16 7.8.1 Null Literals 16 7.8.2 Boolean Literals 16 7.8.3 Numeric Literals 16 7.8.4 String Literals 18 7.8.5 Regular Expression Literals 20 7.9 Automatic Semicolon Insertion 21 7.9.1 Rules of Automatic Semicolon Insertion 21 7.9.2 Examples of Automatic Semicolon Insertion 22 8 Types 24 8.1 The Undefined Type 24 8.2 The Null Type 24 8.3 The Boolean Type 24 8.4 The String Type 24 8.5 The Number Type 24 8.6 The Object Type 25 8.6.1 Property Attributes 25 8.6.2 Internal Properties and Methods 26 8.7 The Reference Type 29 8.7.1 GetValue (V) 29 8.7.2 PutValue (V, W) 29 8.8 The List Type 30 8.9 The Completion Type 30 9 Type Conversion 30 9.1 ToPrimitive 30 9.2 ToBoolean 30 9.3 ToNumber 31 9.3.1 ToNumber Applied to the String Type 31 9.4 ToInteger 34 9.5 ToInt32: (Signed 32 Bit Integer) 34 9.6 ToUint32: (Unsigned 32 Bit Integer) 34 9.7 ToUint16: (Unsigned 16 Bit Integer) 35 9.8 ToString 35 9.8.1 ToString Applied to the Number Type 35 9.9 ToObject 36 10 Execution Contexts 37 10.1 Definitions 37 10.1.1 Function Objects 37 10.1.2 Types of Executable Code 37 10.1.3 Variable Instantiation 37 10.1.4 Scope Chain and Identifier Resolution 38 10.1.5 Global Object 38 10.1.6 Activation Object 38 - i i i - 10.1.7 This 39 10.1.8 Arguments Object 39 10.2 Entering An Execution Context 39 10.2.1 Global Code 39 10.2.2 Eval Code 39 10.2.3 Function Code 39 11 Expressions 40 11.1 Primary Expressions 40 11.1.1 The this Keyword 40 11.1.2 Identifier Reference 40 11.1.3 Literal Reference 40 11.1.4 Array Initialiser 40 11.1.5 Object Initialiser 41 11.1.6 The Grouping Operator 42 11.2 Left-Hand-Side Expressions 43 11.2.1 Property Accessors 43 11.2.2 The new Operator 44 11.2.3 Function Calls 44 11.2.4 Argument Lists 45 11.2.5 Function Expressions 45 11.3 Postfix Expressions 45 11.3.1 Postfix Increment Operator 45 11.3.2 Postfix Decrement Operator 45 11.4 Unary Operators 46 11.4.1 The delete Operator 46 11.4.2 The void Operator 46 11.4.3 The typeof Operator 46 11.4.4 Prefix Increment Operator 47 11.4.5 Prefix Decrement Operator 47 11.4.6 Unary + Operator 47 11.4.7 Unary - Operator 47 11.4.8 Bitwise NOT Operator ( ~) 48 11.4.9 Logical NOT Operator ( !) 48 11.5 Multiplicative Operators 48 11.5.1 Applying the * Operator 48 11.5.2 Applying the / Operator 49 11.5.3 Applying the % Operator 49 11.6 Additive Operators 50 11.6.1 The Addition operator ( +) 50 11.6.2 The Subtraction Operator ( -) 50 11.6.3 Applying the Additive Operators ( +,- ) to Numbers 51 11.7 Bitwise Shift Operators 51 11.7.1 The Left Shift Operator ( <<) 51 11.7.2 The Signed Right Shift Operator ( >>) 51 11.7.3 The Unsigned Right Shift Operator ( >>>) 52 11.4 Relational Operators 52 11.8.1 The Less-than Operator ( <) 53 11.8.2 The Greater-than Operator ( >) 53 11.8.3 The Less-than-or-equal Operator ( <=) 53 11.8.4 The Greater-than-or-equal Operator ( >=) 53 11.8.5 The Abstract Relational Comparison Algorithm 53 - iv - 11.8.6 The instanceof operator 54 11.8.7 The in operator 54 11.9 Equality Operators 54 11.9.1 The Equals Operator ( ==) 55 11.9.2 The Does-not-equals Operator ( !=) 55 11.9.3 The Abstract Equality Comparison Algorithm 55 11.9.4 The Strict Equals Operator ( ===) 56 11.9.5 The Strict Does-not-equal Operator ( !==) 56 11.9.6 The Strict Equality Comparison Algorithm 56 11.10 Binary Bitwise Operators 57 11.11 Binary Logical Operators 58 11.12 Conditional Operator ( ?: ) 58 11.13 Assignment Operators 59 11.13.1 Simple Assignment ( =) 59 11.13.2 Compound Assignment ( op=) 60 11.14 Comma Operator ( , ) 60 12 Statements 61 12.1 Block 61 12.2 Variable statement 62 12.3 Empty Statement 63 12.4 Expression Statement 63 12.5 The if Statement 63 12.6 Iteration Statements 64 12.6.1 The do-while Statement 64 12.6.2 The while statement 64 12.6.3 The for Statement 65 12.6.4 The for-in Statement 65 12.7 The continue Statement 66 12.8 The break Statement 67 12.9 The return Statement 67 12.10 The with Statement 67 12.11 The switch Statement 68 12.12 Labelled Statements 69 12.13 The throw statement 69 12.14 The try statement 70 13 Function Definition 71 13.1 Definitions 72 13.1.1 Equated Grammar Productions 72 13.1.2 Joined Objects 72 13.2 Creating Function Objects 72 13.2.1 [[Call]] 73 13.2.2 [[Construct]] 74 14 Program 75 15 Native ECMAScript Objects 76 15.1 The Global Object 76 15.1.1 Value Properties of the Global Object 77 15.1.2 Function Properties of the Global Object 77 15.1.3 URI Handling Function Properties 78 - v - 15.1.4 Constructor Properties of the Global Object 83 15.1.5 Other Properties of the Global Object 83 15.2 Object Objects 83 15.2.1 The Object Constructor Called as a Function 83 15.2.2 The Object Constructor 84 15.2.3 Properties of the Object Constructor 84 15.2.4 Properties of the Object Prototype Object 84 15.2.5 Properties of Object Instances 85 15.3 Function Objects 85 '){
+ $ERROR('#2: Large string 8192 bytes');
+}
+//
+////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch08/8.4/S8.4_A7.1.js b/js/src/tests/test262/ch08/8.4/S8.4_A7.1.js
new file mode 100644
index 000000000..137cf30bf
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.4/S8.4_A7.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.
+
+/**
+ * <LF> between chunks of one string not allowed
+ *
+ * @path ch08/8.4/S8.4_A7.1.js
+ * @description Insert <LF> between chunks of one string
+ * @negative
+ */
+
+eval("var x = asdf\u000Aghjk");
+
diff --git a/js/src/tests/test262/ch08/8.4/S8.4_A7.2.js b/js/src/tests/test262/ch08/8.4/S8.4_A7.2.js
new file mode 100644
index 000000000..bd2cfd25f
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.4/S8.4_A7.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.
+
+/**
+ * <CR> between chunks of one string not allowed
+ *
+ * @path ch08/8.4/S8.4_A7.2.js
+ * @description Insert <CR> between chunks of one string
+ * @negative
+ */
+
+eval("var x = asdf\u000Dghjk");
+
diff --git a/js/src/tests/test262/ch08/8.4/S8.4_A7.3.js b/js/src/tests/test262/ch08/8.4/S8.4_A7.3.js
new file mode 100644
index 000000000..37ee22cae
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.4/S8.4_A7.3.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.
+
+/**
+ * <PS> between chunks of one string not allowed
+ *
+ * @path ch08/8.4/S8.4_A7.3.js
+ * @description Insert <PS> between chunks of one string
+ * @negative
+ */
+
+eval("var x = asdf\u2028ghjk");
+
diff --git a/js/src/tests/test262/ch08/8.4/S8.4_A7.4.js b/js/src/tests/test262/ch08/8.4/S8.4_A7.4.js
new file mode 100644
index 000000000..7c8373c54
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.4/S8.4_A7.4.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.
+
+/**
+ * <LS> between chunks of one string not allowed
+ *
+ * @path ch08/8.4/S8.4_A7.4.js
+ * @description Insert <LS> between chunks of one string
+ * @negative
+ */
+
+eval("var x = asdf\u2029ghjk");
+
diff --git a/js/src/tests/test262/ch08/8.4/S8.4_A8.js b/js/src/tests/test262/ch08/8.4/S8.4_A8.js
new file mode 100644
index 000000000..89872cd4c
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.4/S8.4_A8.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.
+
+/**
+ * Empty string, 0, false are all equal (==) to each other, since they all evaluate to 0
+ *
+ * @path ch08/8.4/S8.4_A8.js
+ * @description Compare empty string with undefined, null, 0 and false
+ */
+
+var str='';
+
+////////////////////////////////////////////////////////////
+// CHECK#1
+if (str == undefined){
+ $ERROR('#1: Empty string and undefined are not equal (!=) to each other');
+}
+//
+/////////////////////////////////////////////////////////////
+
+////////////////////////////////////////////////////////////
+// CHECK#2
+if (str == null){
+ $ERROR('#1: Empty string and Null are not equal (!=) to each other');
+}
+//
+/////////////////////////////////////////////////////////////
+
+////////////////////////////////////////////////////////////
+// CHECK#3
+if (str != 0){
+ $ERROR('#3: Empty string and 0 are equal (==) to each other, since they all evaluate to 0');
+}
+//
+/////////////////////////////////////////////////////////////
+
+////////////////////////////////////////////////////////////
+// CHECK#4
+if (str != false){
+ $ERROR('#4: Empty string and false are equal (==) to each other, since they all evaluate to 0');
+}
+//
+/////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch08/8.4/S8.4_A9_T1.js b/js/src/tests/test262/ch08/8.4/S8.4_A9_T1.js
new file mode 100644
index 000000000..736648079
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.4/S8.4_A9_T1.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.
+
+/**
+ * Assignment to string literals calls String constructor
+ *
+ * @path ch08/8.4/S8.4_A9_T1.js
+ * @description Simple string variable compare with object String
+ */
+
+var str='ABC';
+var strObj=new String('ABC');
+
+////////////////////////////////////////////////////////////
+// CHECK#1
+if (str.constructor !== strObj.constructor){
+ $ERROR('#1: \'ABC\'.constructor === new String(\'ABC\').constructor');
+}
+//
+/////////////////////////////////////////////////////////////
+
+////////////////////////////////////////////////////////////
+// CHECK#2
+if (str != strObj){
+ $ERROR('#2: "ABC" == new String("ABC")');
+}
+//
+/////////////////////////////////////////////////////////////
+
+////////////////////////////////////////////////////////////
+// CHECK#3
+if (str === strObj){
+ $ERROR('#3: "ABC" !== new String("ABC")');
+}
+//
+/////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch08/8.4/S8.4_A9_T2.js b/js/src/tests/test262/ch08/8.4/S8.4_A9_T2.js
new file mode 100644
index 000000000..a32f5b146
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.4/S8.4_A9_T2.js
@@ -0,0 +1,62 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * Assignment to string literals calls String constructor
+ *
+ * @path ch08/8.4/S8.4_A9_T2.js
+ * @description Compare empty string variable, object String('') and object String()
+ */
+
+var str="";
+var strObj=new String("");
+var strObj_=new String();
+
+////////////////////////////////////////////////////////////
+// CHECK#1
+if (str.constructor !== strObj.constructor){
+ $ERROR('#1: "".constructor === new String("").constructor');
+}
+//
+/////////////////////////////////////////////////////////////
+
+////////////////////////////////////////////////////////////
+// CHECK#2
+if (str.constructor !== strObj_.constructor){
+ $ERROR('#2: "".constructor === new String().constructor');
+}
+//
+/////////////////////////////////////////////////////////////
+
+////////////////////////////////////////////////////////////
+// CHECK#3
+if (str != strObj){
+ $ERROR('#3: values of str=""; and strObj=new String(""); are equal');
+}
+//
+/////////////////////////////////////////////////////////////
+
+////////////////////////////////////////////////////////////
+// CHECK#4
+if (str === strObj){
+ $ERROR('#4: objects of str=""; and strObj=new String(""); are different');
+}
+//
+/////////////////////////////////////////////////////////////
+
+////////////////////////////////////////////////////////////
+// CHECK#5
+if (str != strObj_){
+ $ERROR('#5: values of str=""; and strObj=new String(); are equal');
+}
+//
+/////////////////////////////////////////////////////////////
+
+////////////////////////////////////////////////////////////
+// CHECK#6
+if (str === strObj_){
+ $ERROR('#6: objects of str=""; and strObj=new String(); are different');
+}
+//
+/////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch08/8.4/S8.4_A9_T3.js b/js/src/tests/test262/ch08/8.4/S8.4_A9_T3.js
new file mode 100644
index 000000000..300883957
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.4/S8.4_A9_T3.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.
+
+/**
+ * Assignment to string literals calls String constructor
+ *
+ * @path ch08/8.4/S8.4_A9_T3.js
+ * @description Simple empty string variable compare with empty object String
+ */
+
+var str="";
+var strObj=new String;
+
+////////////////////////////////////////////////////////////
+// CHECK#1
+if (str.constructor !== strObj.constructor){
+ $ERROR('#1: "".constructor === new String.constructor');
+}
+//
+/////////////////////////////////////////////////////////////
+
+////////////////////////////////////////////////////////////
+// CHECK#2
+if (str != strObj){
+ $ERROR('#2: values of str=""; and strObj=new String(""); are equal');
+}
+//
+/////////////////////////////////////////////////////////////
+
+////////////////////////////////////////////////////////////
+// CHECK#3
+if (str === strObj){
+ $ERROR('#3: objects of str=""; and strObj=new String(""); are different');
+}
+//
+/////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#4
+if (typeof str == typeof strObj){
+ $ERROR('#4: types of str=""; and strObj=new String(""); are different');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+
diff --git a/js/src/tests/test262/ch08/8.4/browser.js b/js/src/tests/test262/ch08/8.4/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.4/browser.js
diff --git a/js/src/tests/test262/ch08/8.4/shell.js b/js/src/tests/test262/ch08/8.4/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.4/shell.js
diff --git a/js/src/tests/test262/ch08/8.5/8.5.1.js b/js/src/tests/test262/ch08/8.5/8.5.1.js
new file mode 100644
index 000000000..076eebfba
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.5/8.5.1.js
@@ -0,0 +1,64 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch08/8.5/8.5.1.js
+ * @description Valid Number ranges
+ */
+
+// Check range support for Number values (IEEE 754 64-bit floats having the form s*m*2**e)
+//
+// For normalized floats, sign (s) is +1 or -1, m (mantisa) is a positive integer less
+// than 2**53 but not less than 2**52 and e (exponent) is an integer ranging from -1074 to 971
+//
+// For denormalized floats, s is +1 or -1, m is a positive integer less than 2**52, and
+// e is -1074
+//
+// Below 64-bit float values shown for informational purposes. Values may be positive or negative.
+// Infinity >= ~1.797693134862315907729305190789e+308 >= 2**1024
+// MAX_NORM = ~1.797693134862315708145274237317e+308 = (2**53 - 1) * (2**-52) * (2**1023) = (2**53-1) * (2**971) = (2**1024) - (2**971)
+// MIN_NORM = ~2.2250738585072013830902327173324e-308 = 2**-1022
+// MAX_DENORM = ~2.2250738585072008890245868760859e-308 = MIN_NORM - MIN_DENORM = (2**-1022) - (2**-1074)
+// MIN_DENORM = ~4.9406564584124654417656879286822e-324 = 2**-1074
+
+// Fill an array with 2 to the power of (0 ... -1075)
+var value = 1;
+var floatValues = new Array(1076);
+for(var power = 0; power <= 1075; power++){
+ floatValues[power] = value;
+ // Use basic math operations for testing, which are required to support 'gradual underflow' rather
+ // than Math.pow etc..., which are defined as 'implementation dependent'.
+ value = value * 0.5;
+}
+
+// The last value is below min denorm and should round to 0, everything else should contain a value
+if(floatValues[1075] !== 0) {
+ $ERROR("Value after min denorm should round to 0");
+}
+
+// Validate the last actual value is min denorm
+if(floatValues[1074] !== 4.9406564584124654417656879286822e-324) {
+ $ERROR("Min denorm value is incorrect: " + floatValues[1074]);
+}
+
+// Validate that every value is half the value before it up to 1
+for(var index = 1074; index > 0; index--){
+ if(floatValues[index] === 0){
+ $ERROR("2**-" + index + " should not be 0");
+ }
+ if(floatValues[index - 1] !== (floatValues[index] * 2)){
+ $ERROR("Value should be double adjacent value at index " + index);
+ }
+}
+
+// Max norm should be supported and compare less than inifity
+if(!(1.797693134862315708145274237317e+308 < Infinity)){
+ $ERROR("Max Number value 1.797693134862315708145274237317e+308 should not overflow to infinity");
+}
+
+// Numbers closer to 2**1024 then max norm should overflow to infinity
+if(!(1.797693134862315808e+308 === +Infinity)){
+ $ERROR("1.797693134862315808e+308 did not resolve to Infinity");
+}
diff --git a/js/src/tests/test262/ch08/8.5/S8.5_A1.js b/js/src/tests/test262/ch08/8.5/S8.5_A1.js
new file mode 100644
index 000000000..23a14a325
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.5/S8.5_A1.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.
+
+/**
+ * NaN !== NaN
+ *
+ * @path ch08/8.5/S8.5_A1.js
+ * @description Compare NaN with NaN
+ */
+
+var x = Number.NaN;
+var x_ = Number.NaN;
+
+///////////////////////////////////////////////////////
+// CHECK #1
+if (x === x_){
+ $ERROR('#1: NaN !== NaN ');
+}
+//
+//////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch08/8.5/S8.5_A10.js b/js/src/tests/test262/ch08/8.5/S8.5_A10.js
new file mode 100644
index 000000000..436c920c5
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.5/S8.5_A10.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.
+
+/**
+ * Infinity is not a keyword
+ *
+ * @path ch08/8.5/S8.5_A10.js
+ * @description Create variable entitled Infinity
+ */
+
+var Infinity=1.0;
+Infinity='asdf';
+Infinity=true;
+
diff --git a/js/src/tests/test262/ch08/8.5/S8.5_A11_T1.js b/js/src/tests/test262/ch08/8.5/S8.5_A11_T1.js
new file mode 100644
index 000000000..e298d32ea
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.5/S8.5_A11_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.
+
+/**
+ * The integer 0 has two representations, +0 and -0
+ *
+ * @path ch08/8.5/S8.5_A11_T1.js
+ * @description Check 1.0/p_zero !== 1.0/n_zero
+ */
+
+var p_zero=+0;
+var n_zero=-0;
+
+if (1.0/p_zero === 1.0/n_zero){
+ $ERROR('#1: var p_zero=+0; var n_zero=-0; 1.0/p_zero !== 1.0/n_zero');
+}
+
diff --git a/js/src/tests/test262/ch08/8.5/S8.5_A11_T2.js b/js/src/tests/test262/ch08/8.5/S8.5_A11_T2.js
new file mode 100644
index 000000000..122c345ed
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.5/S8.5_A11_T2.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.
+
+/**
+ * The integer 0 has two representations, +0 and -0
+ *
+ * @path ch08/8.5/S8.5_A11_T2.js
+ * @description Compare positive_zero and negative_zero
+ */
+
+var p_zero=+0;
+var n_zero=-0;
+
+//CHECK #1
+if ((p_zero == n_zero) !== true){
+ $ERROR('#1: var p_zero=+0; var n_zero=-0; p_zero != n_zero');
+}
+
+//CHECK #2
+if ((n_zero == 0) !== true){
+ $ERROR('#2: var p_zero=+0; var n_zero=-0; n_zero == 0');
+}
+
+//CHECK #3
+if ((p_zero == -0) !== true){
+ $ERROR('#3: var p_zero=+0; var n_zero=-0; p_zero == -0');
+}
+
+//CHECK #4
+if ((p_zero === 0) !== true){
+ $ERROR('#4: var p_zero=+0; var n_zero=-0; p_zero === 0');
+}
+
+//CHECK #5
+if ((n_zero === -0) !== true){
+ $ERROR('#5: var p_zero=+0; var n_zero=-0; n_zero === -0');
+}
+
diff --git a/js/src/tests/test262/ch08/8.5/S8.5_A12.1.js b/js/src/tests/test262/ch08/8.5/S8.5_A12.1.js
new file mode 100644
index 000000000..846aab24d
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.5/S8.5_A12.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.
+
+/**
+ * +Infinity and Infinity are the same as Number.POSITIVE_INFINITY
+ *
+ * @path ch08/8.5/S8.5_A12.1.js
+ * @description Compare Infinity and +Infinity with Number.POSITIVE_INFINITY
+ */
+
+var p_inf=+Infinity;
+var inf=Infinity;
+
+//CHECK #1
+if (p_inf!==Number.POSITIVE_INFINITY){
+ $ERROR('#1: +Infinity is the same as Number.POSITIVE_INFINITY');
+}
+
+//CHECK #2
+if (inf!==Number.POSITIVE_INFINITY){
+ $ERROR('#2: Infinity is the same as Number.POSITIVE_INFINITY');
+}
+
diff --git a/js/src/tests/test262/ch08/8.5/S8.5_A12.2.js b/js/src/tests/test262/ch08/8.5/S8.5_A12.2.js
new file mode 100644
index 000000000..e1397ed1d
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.5/S8.5_A12.2.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.
+
+/**
+ * -Infinity is the same as Number.NEGATIVE_INFINITY
+ *
+ * @path ch08/8.5/S8.5_A12.2.js
+ * @description Compare -Infinity with Number.NEGATIVE_INFINITY
+ */
+
+var n_inf=-Infinity;
+
+//CHECK #1
+if (n_inf !== Number.NEGATIVE_INFINITY){
+ $ERROR('#1: -Infinity is the same as Number.NEGATIVE_INFINITY');
+}
+
diff --git a/js/src/tests/test262/ch08/8.5/S8.5_A13_T2.js b/js/src/tests/test262/ch08/8.5/S8.5_A13_T2.js
new file mode 100644
index 000000000..ef7e2a5ca
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.5/S8.5_A13_T2.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.
+
+/**
+ * Finite nonzero values that are Normalised having the form s*m*2**e
+ * where s is +1 or -1, m is a positive integer less than 2**53 but not
+ * less than s**52 and e is an integer ranging from -1074 to 971
+ *
+ * @path ch08/8.5/S8.5_A13_T2.js
+ * @description Finite Non zero values where e is 971
+ */
+
+//CHECK #1
+if ((1*(Math.pow(2,52))*(Math.pow(2,971))) !== 8.98846567431158e+307){
+ $ERROR('#1: (1*(Math.pow(2,52))*(Math.pow(2,971))) === 8.98846567431158e+307. Actual: ' + ((1*(Math.pow(2,52))*(Math.pow(2,971)))));
+}
+
+//CHECK #2
+if ((1*((Math.pow(2,53))-1)*(Math.pow(2,971))) !== 1.7976931348623157e+308){
+ $ERROR('#2: (1*((Math.pow(2,53))-1)*(Math.pow(2,971))) === 1.7976931348623157e+308. Actual: ' + ((1*((Math.pow(2,53))-1)*(Math.pow(2,971)))));
+}
+
+//CHECK #3
+if ((-1*(Math.pow(2,52))*(Math.pow(2,971))) !== -8.98846567431158e+307){
+ $ERROR('#3: (-1*(Math.pow(2,52))*(Math.pow(2,971))) === -8.98846567431158e+307. Actual: ' + ((-1*(Math.pow(2,52))*(Math.pow(2,971)))));
+}
+
diff --git a/js/src/tests/test262/ch08/8.5/S8.5_A14_T1.js b/js/src/tests/test262/ch08/8.5/S8.5_A14_T1.js
new file mode 100644
index 000000000..0b5e87b3e
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.5/S8.5_A14_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.
+
+/**
+ * When number absolute value is bigger of 2**1024 should convert to Infinity
+ *
+ * @path ch08/8.5/S8.5_A14_T1.js
+ * @description Create number bigger of 2**1024
+ */
+
+//CHECK #1
+if (1e+308*2 !== Infinity){
+ $ERROR('#1: 1e+308*2 === Infinity. Actual: ' + (1e+308*2));
+}
+
+//CHECK #2
+if ((1*(Math.pow(2,53))*(Math.pow(2,971))) !== Infinity){
+ $ERROR('#2: (1*(Math.pow(2,53))*(Math.pow(2,971))) === Infinity. Actual: ' + ((1*(Math.pow(2,53))*(Math.pow(2,971)))));
+}
+
diff --git a/js/src/tests/test262/ch08/8.5/S8.5_A14_T2.js b/js/src/tests/test262/ch08/8.5/S8.5_A14_T2.js
new file mode 100644
index 000000000..37dc8cd5f
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.5/S8.5_A14_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.
+
+/**
+ * When number absolute value is bigger of 2**1024 should convert to Infinity
+ *
+ * @path ch08/8.5/S8.5_A14_T2.js
+ * @description Create number smaller of -2**1024
+ */
+
+//CHECK #1
+if (-1e+308*3 !== -Infinity){
+ $ERROR('#1: -1e+308*3 === Infinity. Actual: ' + (-1e+308*3));
+}
+
+//CHECK #2
+if ((-1*(Math.pow(2,53))*(Math.pow(2,971))) !== -Infinity){
+ $ERROR('#2: (-1*(Math.pow(2,53))*(Math.pow(2,971))) === Infinity. Actual: ' + ((-1*(Math.pow(2,53))*(Math.pow(2,971)))));
+}
+
diff --git a/js/src/tests/test262/ch08/8.5/S8.5_A2.1.js b/js/src/tests/test262/ch08/8.5/S8.5_A2.1.js
new file mode 100644
index 000000000..0baca20f9
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.5/S8.5_A2.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.
+
+/**
+ * Number type represented as the double precision 64-bit format IEEE 754
+ *
+ * @path ch08/8.5/S8.5_A2.1.js
+ * @description Use 2^53 + 2 number and do some operation with it
+ */
+
+var x = 9007199254740994.0; /* 2^53 + 2 */
+var y = 1.0 - 1/65536.0;
+var z = x + y;
+var d = z - x;
+
+if (d !== 0){
+ $ERROR('#1: var x = 9007199254740994.0; var y = 1.0 - 1/65536.0; var z = x + y; var d = z - x; d === 0. Actual: ' + (d));
+}
+
diff --git a/js/src/tests/test262/ch08/8.5/S8.5_A2.2.js b/js/src/tests/test262/ch08/8.5/S8.5_A2.2.js
new file mode 100644
index 000000000..eec062201
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.5/S8.5_A2.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.
+
+/**
+ * Number type represented as the extended precision 64-bit format IEEE 754
+ *
+ * @path ch08/8.5/S8.5_A2.2.js
+ * @description Use 2^53 + 2 number and do some operation with it
+ */
+
+var x = 9007199254740994.0; /* 2^53 + 2 */
+var y = 1.0 - 1/65536.0;
+var z = x + y;
+var d = z - x;
+
+if (d === 2){
+ $ERROR('#1: var x = 9007199254740994.0; var y = 1.0 - 1/65536.0; var z = x + y; var d = z - x; d !== 2');
+}
+
diff --git a/js/src/tests/test262/ch08/8.5/S8.5_A3.js b/js/src/tests/test262/ch08/8.5/S8.5_A3.js
new file mode 100644
index 000000000..89f1299a6
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.5/S8.5_A3.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.
+
+/**
+ * NaN expression has a type Number
+ *
+ * @path ch08/8.5/S8.5_A3.js
+ * @description Check type of NaN
+ */
+
+var x=NaN;
+
+///////////////////////////////////////////////////////
+// CHECK#1
+if (typeof(x) !== "number"){
+ $ERROR('#1: var x=NaN; typeof(x) === "number". Actual: ' + (typeof(x)));
+}
+//
+//////////////////////////////////////////////////////////
+
+///////////////////////////////////////////////////////
+// CHECK#2
+if (typeof(NaN) !== "number"){
+ $ERROR('#2: typeof(NaN) === "number". Actual: ' + (typeof(NaN)));
+}
+//
+//////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch08/8.5/S8.5_A4.js b/js/src/tests/test262/ch08/8.5/S8.5_A4.js
new file mode 100644
index 000000000..b54f8dbef
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.5/S8.5_A4.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.
+
+/**
+ * NaN is not a keyword
+ *
+ * @path ch08/8.5/S8.5_A4.js
+ * @description Create variable entitled NaN
+ */
+
+var NaN=1.0;
+NaN='asdf';
+NaN=true;
+NaN=Number.NaN;
+
diff --git a/js/src/tests/test262/ch08/8.5/S8.5_A5.js b/js/src/tests/test262/ch08/8.5/S8.5_A5.js
new file mode 100644
index 000000000..6587609c2
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.5/S8.5_A5.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.
+
+/**
+ * NaN not greater or equal zero
+ *
+ * @path ch08/8.5/S8.5_A5.js
+ * @description Compare NaN with zero
+ */
+
+var x = NaN;
+var x_geq_0=(x >= 0.0);
+var x_leq_0=(x <= 0.0);
+var x_leq_0_OR_geq_0=(x <= 0.0)||(x >= 0.0);
+var x_geq_0_ADD_leq_0=(x >= 0.0) + (x <= 0.0);
+
+
+///////////////////////////////////////////////////
+// CHECK#1
+if (x_geq_0){
+ $ERROR('#1: NaN not greater or equal zero');
+} else {
+ $PRINT('#1: NaN not greater or equal zero');
+}
+//
+///////////////////////////////////////////////////
+
+///////////////////////////////////////////////////
+// CHECK#2
+if (x_leq_0){
+ $ERROR('#2: NaN not less or equal zero');
+} else {
+ $PRINT('#2: NaN not less or equal zero');
+}
+//
+///////////////////////////////////////////////////
+
+///////////////////////////////////////////////////
+// CHECK#3
+if (x_leq_0_OR_geq_0){
+ $ERROR('#3: NaN not less or equal zero OR greater or equal zero');
+} else {
+ $PRINT('#3: NaN not less or equal zero OR greater or equal zero');
+}
+//
+///////////////////////////////////////////////////
+
+///////////////////////////////////////////////////
+// CHECK#4
+if (x_geq_0_ADD_leq_0){
+ $ERROR('#4: NaN not less or equal zero ADD greater or equal zero');
+} else {
+ $PRINT('#4: NaN not less or equal zero ADD greater or equal zero');
+}
+//
+///////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch08/8.5/S8.5_A6.js b/js/src/tests/test262/ch08/8.5/S8.5_A6.js
new file mode 100644
index 000000000..e621f7563
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.5/S8.5_A6.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.
+
+/**
+ * -Infinity expression has a type Number
+ *
+ * @path ch08/8.5/S8.5_A6.js
+ * @description Check type of -Infinity
+ */
+
+var x=-Infinity;
+
+///////////////////////////////////////////////////////
+// CHECK#1
+if (typeof(x) !== "number"){
+ $ERROR('#1: var x=-Infinity; typeof(x) === "number". Actual: ' + (typeof(x)));
+}
+//
+//////////////////////////////////////////////////////////
+
+///////////////////////////////////////////////////////
+// CHECK#2
+if (typeof(-Infinity) !== "number"){
+ $ERROR('#2: typeof(-Infinity) === "number". Actual: ' + (typeof(-Infinity)));
+}
+//
+//////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch08/8.5/S8.5_A7.js b/js/src/tests/test262/ch08/8.5/S8.5_A7.js
new file mode 100644
index 000000000..0f17e85f0
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.5/S8.5_A7.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.
+
+/**
+ * +Infinity expression has a type Number
+ *
+ * @path ch08/8.5/S8.5_A7.js
+ * @description Check type of +Infinity
+ */
+
+var x=+Infinity;
+
+///////////////////////////////////////////////////////
+// CHECK#1
+if (typeof(x) !== "number"){
+ $ERROR('#1: var x=+Infinity; typeof(x) === "number". Actual: ' + (typeof(x)));
+}
+//
+//////////////////////////////////////////////////////////
+
+///////////////////////////////////////////////////////
+// CHECK#2
+if (typeof(+Infinity) !== "number"){
+ $ERROR('#2: typeof(+Infinity) === "number". Actual: ' + (typeof(+Infinity)));
+}
+//
+//////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch08/8.5/S8.5_A8.js b/js/src/tests/test262/ch08/8.5/S8.5_A8.js
new file mode 100644
index 000000000..95c87824b
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.5/S8.5_A8.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.
+
+/**
+ * Infinity is the same as +Infinity
+ *
+ * @path ch08/8.5/S8.5_A8.js
+ * @description Compare Infinity and +Infinity
+ */
+
+var p_inf=+Infinity;
+var inf=Infinity;
+
+///////////////////////////////////////////////////////
+//
+if (p_inf!==inf){
+ $ERROR('#1: Infinity is the same as +Infinity');
+}
+//
+//////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch08/8.5/S8.5_A9.js b/js/src/tests/test262/ch08/8.5/S8.5_A9.js
new file mode 100644
index 000000000..ff783d50f
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.5/S8.5_A9.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.
+
+/**
+ * Globally defined variable NaN has not been altered by program execution
+ *
+ * @path ch08/8.5/S8.5_A9.js
+ * @description Try alter globally defined variable NaN
+ * @noStrict
+ */
+
+Number.NaN = 1;
+
+if (Number.NaN === 1) {
+ $ERROR('#1: Globally defined variable NaN has not been altered by program execution');
+}
+
diff --git a/js/src/tests/test262/ch08/8.5/browser.js b/js/src/tests/test262/ch08/8.5/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.5/browser.js
diff --git a/js/src/tests/test262/ch08/8.5/shell.js b/js/src/tests/test262/ch08/8.5/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.5/shell.js
diff --git a/js/src/tests/test262/ch08/8.6/8.6.1/S8.6.1_A1.js b/js/src/tests/test262/ch08/8.6/8.6.1/S8.6.1_A1.js
new file mode 100644
index 000000000..df5609b38
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.6/8.6.1/S8.6.1_A1.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.
+
+/**
+ * A property can have attribute ReadOnly like E in Math
+ *
+ * @path ch08/8.6/8.6.1/S8.6.1_A1.js
+ * @description Try change Math.E property
+ * @noStrict
+ */
+
+var __e = Math.E;
+Math.E=1;
+if (Math.E !==__e){
+ $ERROR('#1: __e = Math.E; Math.E=1; Math.E ===__e');
+}
+
diff --git a/js/src/tests/test262/ch08/8.6/8.6.1/S8.6.1_A2.js b/js/src/tests/test262/ch08/8.6/8.6.1/S8.6.1_A2.js
new file mode 100644
index 000000000..c8fe932c5
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.6/8.6.1/S8.6.1_A2.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.
+
+/**
+ * A property can have attribute DontEnum like all properties of Number
+ *
+ * @path ch08/8.6/8.6.1/S8.6.1_A2.js
+ * @description Try to enumerate properties of Number
+ */
+
+//CHECK#1
+var count=0;
+for (p in Number) count++;
+if (count > 0){
+ $ERROR('#1: count=0; for (p in Number) count++; count > 0. Actual: ' + (count));
+}
+
diff --git a/js/src/tests/test262/ch08/8.6/8.6.1/S8.6.1_A3.js b/js/src/tests/test262/ch08/8.6/8.6.1/S8.6.1_A3.js
new file mode 100644
index 000000000..099dc46c9
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.6/8.6.1/S8.6.1_A3.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.
+
+/**
+ * A property can have attribute DontDelete like NaN propertie of Number object
+ *
+ * @path ch08/8.6/8.6.1/S8.6.1_A3.js
+ * @description Try to delete Number.NaN
+ * @noStrict
+ */
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (delete Number.NaN !== false){
+ $ERROR('#1: delete Number.NaN === false. Actual: ' + (delete Number.NaN));
+};
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (typeof(Number.NaN) === "undefined"){
+ $ERROR('#2: delete Number.NaN; typeof(Number.NaN) !== "undefined" ');
+};
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch08/8.6/8.6.1/browser.js b/js/src/tests/test262/ch08/8.6/8.6.1/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.6/8.6.1/browser.js
diff --git a/js/src/tests/test262/ch08/8.6/8.6.1/shell.js b/js/src/tests/test262/ch08/8.6/8.6.1/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.6/8.6.1/shell.js
diff --git a/js/src/tests/test262/ch08/8.6/8.6.2/S8.6.2_A1.js b/js/src/tests/test262/ch08/8.6/8.6.2/S8.6.2_A1.js
new file mode 100644
index 000000000..371d16848
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.6/8.6.2/S8.6.2_A1.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.
+
+/**
+ * Native ECMAScript objects have an internal property called [[Prototype]]. The value of this property is
+ * either null or an object and is used for implementing inheritance
+ *
+ * @path ch08/8.6/8.6.2/S8.6.2_A1.js
+ * @description Check [[Prototype]] property of object
+ */
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+var __obj={};
+if (!Object.prototype.isPrototypeOf(__obj)){
+ $ERROR('#1: Native ECMAScript objects have an internal property called [[Prototype]]. ');
+};
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//Establish proto (base) object
+/*function ProtoObj(){
+
+};*/
+var protoObj={};
+//Establish foo object
+function FooObj(){};
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+// Invoke instance of foo object
+var obj__= new FooObj;
+
+if (!Object.prototype.isPrototypeOf(obj__)){
+ $ERROR('#2.1: protoObj={}; function FooObj(){}; var obj__= new FooObj; Object.prototype.isPrototypeOf(obj__) === true. Actual: ' + (Object.prototype.isPrototypeOf(obj__)));
+};
+
+if (!FooObj.prototype.isPrototypeOf(obj__)){
+ $ERROR('#2.2: protoObj={}; function FooObj(){}; var obj__= new FooObj; FooObj.prototype.isPrototypeOf(obj__) === true. Actual: ' + (FooObj.prototype.isPrototypeOf(obj__)));
+};
+
+if (protoObj.isPrototypeOf(obj__)){
+ $ERROR('#2.3: protoObj={}; function FooObj(){}; var obj__= new FooObj; protoObj.isPrototypeOf(obj__) === false. Actual: ' + (protoObj.isPrototypeOf(obj__)));
+};
+// Establish inheritance from proto object
+FooObj.prototype=protoObj;
+
+if (protoObj.isPrototypeOf(obj__)){
+ $ERROR('#2.4: protoObj={}; function FooObj(){}; var obj__= new FooObj; FooObj.prototype=protoObj; protoObj.isPrototypeOf(obj__) === false. Actual: ' + (protoObj.isPrototypeOf(obj__)));
+};
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+
+// Invoke instance of foo object
+var __foo=new FooObj;
+
+if (!Object.prototype.isPrototypeOf(__foo)){
+ $ERROR('#3.1: protoObj={}; function FooObj(){}; var obj__= new FooObj; FooObj.prototype=protoObj; var __foo=new FooObj; Object.prototype.isPrototypeOf(__foo) === true. Actual: ' + (Object.prototype.isPrototypeOf(__foo)));
+};
+
+if (!FooObj.prototype.isPrototypeOf(__foo)){
+ $ERROR('#3.2: protoObj={}; function FooObj(){}; var obj__= new FooObj; FooObj.prototype=protoObj; var __foo=new FooObj; FooObj.prototype.isPrototypeOf(__foo) === true. Actual: ' + (FooObj.prototype.isPrototypeOf(__foo)));
+};
+
+if (!protoObj.isPrototypeOf(__foo)){
+ $ERROR('#3.3: protoObj={}; function FooObj(){}; var obj__= new FooObj; FooObj.prototype=protoObj; var __foo=new FooObj; protoObj.isPrototypeOf(__foo) === true. Actual: ' + (protoObj.isPrototypeOf(__foo)));
+};
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch08/8.6/8.6.2/S8.6.2_A2.js b/js/src/tests/test262/ch08/8.6/8.6.2/S8.6.2_A2.js
new file mode 100644
index 000000000..5d4ccbd3e
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.6/8.6.2/S8.6.2_A2.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.
+
+/**
+ * Properties of the [[Prototype]] object
+ * are visible as properties of the child object for the purposes of get access, but not for put access
+ *
+ * @path ch08/8.6/8.6.2/S8.6.2_A2.js
+ * @description Check visibility properties of the child object for the purposes of get access, but not for put access
+ */
+
+//Establish foo object
+function FooObj(){};
+FooObj.prototype.prop="some";
+
+// Invoke instance of foo object
+var foo= new FooObj;
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (foo.prop !== "some"){
+ $ERROR('#1: function FooObj(){}; FooObj.prototype.prop="some"; var foo= new FooObj; foo.prop === "some". Actual: ' + (foo.prop));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+foo.prop=true;
+// Invoke another instance of foo object
+var foo__ = new FooObj;
+if (foo__.prop !== "some"){
+ $ERROR('#2: function FooObj(){}; FooObj.prototype.prop="some"; var foo= new FooObj; foo.prop=true; var foo__ = new FooObj; foo__.prop === "some". Actual: ' + (foo__.prop));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch08/8.6/8.6.2/S8.6.2_A3.js b/js/src/tests/test262/ch08/8.6/8.6.2/S8.6.2_A3.js
new file mode 100644
index 000000000..506471148
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.6/8.6.2/S8.6.2_A3.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.
+
+/**
+ * The specification does not provide any means for a program to access [[class]] value except through Object.prototype.toString
+ *
+ * @path ch08/8.6/8.6.2/S8.6.2_A3.js
+ * @description Get [[class]] value except through Object.prototype.toString
+ */
+
+var __obj={};
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__obj.toString() !== "[object " + 'Object' + "]"){
+ $ERROR('#1: var __obj={}; __obj.toString() === "[object " + \'Object\' + "]". Actual: ' + (__obj.toString()));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch08/8.6/8.6.2/S8.6.2_A4.js b/js/src/tests/test262/ch08/8.6/8.6.2/S8.6.2_A4.js
new file mode 100644
index 000000000..f147e6aaa
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.6/8.6.2/S8.6.2_A4.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.
+
+/**
+ * [[HasInstance]] returns a boolean value indicating whether Value delegates behaviour to this object
+ *
+ * @path ch08/8.6/8.6.2/S8.6.2_A4.js
+ * @description Check that the obj instance of Object, but not instance
+ * of Function, String, Number, Array
+ */
+
+var __obj={};
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (!(__obj instanceof Object)) {
+ $ERROR('#1: var __obj={}; (__obj instanceof Object) === true. Actual: ' + ((__obj instanceof Object)));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__obj instanceof Function) {
+ $ERROR('#2: var __obj={}; (__obj instanceof Function) === false. Actual: ' + ((__obj instanceof Function)));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if (__obj instanceof String) {
+ $ERROR('#3: var __obj={}; (__obj instanceof String) === false. Actual: ' + ((__obj instanceof String)));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#4
+if (__obj instanceof Number) {
+ $ERROR('#4: var __obj={}; (__obj instanceof Number) === false. Actual: ' + ((__obj instanceof Number)));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#5
+if (__obj instanceof Array) {
+ $ERROR('#5: var __obj={}; (__obj instanceof Array) === false. Actual: ' + ((__obj instanceof Array)));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch08/8.6/8.6.2/S8.6.2_A5_T1.js b/js/src/tests/test262/ch08/8.6/8.6.2/S8.6.2_A5_T1.js
new file mode 100644
index 000000000..47fa0ef6f
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.6/8.6.2/S8.6.2_A5_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.
+
+/**
+ * [[Call]] executes code associated with the object
+ *
+ * @path ch08/8.6/8.6.2/S8.6.2_A5_T1.js
+ * @description Call function-property of object, property defined
+ * as testScreen = {touch:function(){count++}}
+ */
+
+this.count=0;
+
+var testScreen = {touch:function(){count++}};
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+testScreen.touch();
+if (count !==1) {
+ $ERROR('#1: this.count=0; testScreen = {touch:function(){count++}}; testScreen.touch(); count === 1. Actual: ' + (count));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+testScreen['touch']();
+if (count !==2) {
+ $ERROR('#2: this.count=0; testScreen = {touch:function(){count++}}; testScreen.touch(); testScreen[\'touch\'](); count === 2. Actual: ' + (count));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch08/8.6/8.6.2/S8.6.2_A5_T2.js b/js/src/tests/test262/ch08/8.6/8.6.2/S8.6.2_A5_T2.js
new file mode 100644
index 000000000..391122473
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.6/8.6.2/S8.6.2_A5_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.
+
+/**
+ * [[Call]] executes code associated with the object
+ *
+ * @path ch08/8.6/8.6.2/S8.6.2_A5_T2.js
+ * @description Call function-property of object, property defined
+ * as seat['move']=function(){position++}
+ */
+
+this.position=0;
+var seat = {};
+seat['move']=function(){position++};
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+seat.move();
+if (position !==1) {
+ $ERROR('#1: this.position=0; seat = {}; seat[\'move\']=function(){position++}; seat.move(); position === 1. Actual: ' + (position));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+seat['move']();
+if (position !==2) {
+ $ERROR('#2: this.position=0; seat = {}; seat[\'move\']=function(){position++}; seat.move(); seat[\'move\'](); position === 2. Actual: ' + (position));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch08/8.6/8.6.2/S8.6.2_A5_T3.js b/js/src/tests/test262/ch08/8.6/8.6.2/S8.6.2_A5_T3.js
new file mode 100644
index 000000000..bbd603e4c
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.6/8.6.2/S8.6.2_A5_T3.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.
+
+/**
+ * [[Call]] executes code associated with the object
+ *
+ * @path ch08/8.6/8.6.2/S8.6.2_A5_T3.js
+ * @description Call function-property of global object, property defined
+ * as knock=function(){count++}
+ */
+
+var count=0;
+var knock=function(){count++};
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+knock();
+if (count !==1) {
+ $ERROR('#1: count=0; knock=function(){count++}; knock(); count === 1. Actual: ' + (count));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+this['knock']();
+if (count !==2) {
+ $ERROR('#2: count=0; knock=function(){count++}; knock(); this[\'knock\'](); count === 2. Actual: ' + (count));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch08/8.6/8.6.2/S8.6.2_A5_T4.js b/js/src/tests/test262/ch08/8.6/8.6.2/S8.6.2_A5_T4.js
new file mode 100644
index 000000000..7f38b27a0
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.6/8.6.2/S8.6.2_A5_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.
+
+/**
+ * [[Call]] executes code associated with the object
+ *
+ * @path ch08/8.6/8.6.2/S8.6.2_A5_T4.js
+ * @description Call function-property of global object, property defined
+ * as this['beep']=function(){__count++}
+ */
+
+var __count=0;
+
+this["beep"]=function(){__count++};
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+beep();
+if (__count !==1) {
+ $ERROR('#1: __count=0; this["beep"]=function(){__count++}; beep(); __count === 1. Actual: ' + (__count));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+this["beep"]();
+if (__count !==2) {
+ $ERROR('#2: __count=0; this["beep"]=function(){__count++}; beep(); this["beep"](); __count === 2. Actual: ' + (__count));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch08/8.6/8.6.2/S8.6.2_A6.js b/js/src/tests/test262/ch08/8.6/8.6.2/S8.6.2_A6.js
new file mode 100644
index 000000000..d62d34b47
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.6/8.6.2/S8.6.2_A6.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.
+
+/**
+ * [[Construct]] constructs an object. Invoked via the new operator. Objects that implement this internal method are called constructors
+ *
+ * @path ch08/8.6/8.6.2/S8.6.2_A6.js
+ * @description Create a few Objects via the new operator
+ */
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+var objInstance=new Object;
+if (objInstance.constructor !== Object){
+ $ERROR('#1: var objInstance=new Object; objInstance.constructor === Object. Actual: ' + (objInstance.constructor));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+var numInstance=new Number;
+if (numInstance.constructor !== Number){
+ $ERROR('#2: var numInstance=new Number; numInstance.constructor === Number. Actual: ' + (numInstance.constructor));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch08/8.6/8.6.2/S8.6.2_A7.js b/js/src/tests/test262/ch08/8.6/8.6.2/S8.6.2_A7.js
new file mode 100644
index 000000000..6e996d779
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.6/8.6.2/S8.6.2_A7.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.
+
+/**
+ * Objects that implement internal method [[Construct]] are called constructors. Math object is NOT constructor
+ *
+ * @path ch08/8.6/8.6.2/S8.6.2_A7.js
+ * @description Checking if execution of "var objMath=new Math" passes
+ * @negative
+ */
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+var objMath=new Math;
+
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch08/8.6/8.6.2/S8.6.2_A8.js b/js/src/tests/test262/ch08/8.6/8.6.2/S8.6.2_A8.js
new file mode 100644
index 000000000..d57a56132
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.6/8.6.2/S8.6.2_A8.js
@@ -0,0 +1,22 @@
+// Copyright 2011 Google Inc. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @path ch08/8.6/8.6.2/S8.6.2_A8.js
+ * @description It should not be possible to change the [[Prototype]]
+ * of a non-extensible object
+ */
+
+var x = Object.preventExtensions({});
+var y = {};
+try {
+ x.__proto__ = y;
+} catch (err) {
+ // As far as this test is concerned, we allow the above assignment
+ // to fail. This failure does violate the spec and should probably
+ // be tested separately.
+}
+if (Object.getPrototypeOf(x) !== Object.prototype) {
+ $ERROR("Prototype of non-extensible object mutated");
+}
+
diff --git a/js/src/tests/test262/ch08/8.6/8.6.2/browser.js b/js/src/tests/test262/ch08/8.6/8.6.2/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.6/8.6.2/browser.js
diff --git a/js/src/tests/test262/ch08/8.6/8.6.2/shell.js b/js/src/tests/test262/ch08/8.6/8.6.2/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.6/8.6.2/shell.js
diff --git a/js/src/tests/test262/ch08/8.6/S8.6_A2_T1.js b/js/src/tests/test262/ch08/8.6/S8.6_A2_T1.js
new file mode 100644
index 000000000..4e13df667
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.6/S8.6_A2_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.
+
+/**
+ * Do not crash with postincrement custom property
+ *
+ * @path ch08/8.6/S8.6_A2_T1.js
+ * @description Try to implement postincrement for custom property
+ */
+
+var __map={foo:"bar"};
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+
+__map.foo++;
+if (!isNaN(__map.foo)) {
+ $ERROR('#1: var __map={foo:"bar"}; __map.foo++; __map.foo === Not-a-Number. Actual: ' + (__map.foo));
+}
+
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch08/8.6/S8.6_A2_T2.js b/js/src/tests/test262/ch08/8.6/S8.6_A2_T2.js
new file mode 100644
index 000000000..b96be42ad
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.6/S8.6_A2_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.
+
+/**
+ * Do not crash with postincrement custom property
+ *
+ * @path ch08/8.6/S8.6_A2_T2.js
+ * @description Try to implement postincrement for not declared custom property
+ */
+
+var __map={};
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (!isNaN(__map.foo++)) {
+ $ERROR('#1: var __map={}; __map.foo === Not-a-Number. Actual: ' + (__map.foo));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (!("foo" in __map)) {
+ $ERROR('#2: var __map={}; "foo" in __map');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch08/8.6/S8.6_A3_T1.js b/js/src/tests/test262/ch08/8.6/S8.6_A3_T1.js
new file mode 100644
index 000000000..431148520
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.6/S8.6_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.
+
+/**
+ * Do not crash with pefixincrement custom property
+ *
+ * @path ch08/8.6/S8.6_A3_T1.js
+ * @description Try to implement pefixincrement for custom property
+ */
+
+var __map={foo:'bar'};
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+
+++__map.foo;
+if (!isNaN(__map.foo)) {
+ $ERROR('#1: var __map={foo:"bar"}; ++__map.foo; __map.foo === Not-a-Number. Actual: ' + (__map.foo));
+}
+
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch08/8.6/S8.6_A3_T2.js b/js/src/tests/test262/ch08/8.6/S8.6_A3_T2.js
new file mode 100644
index 000000000..08a425a13
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.6/S8.6_A3_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.
+
+/**
+ * Do not crash with pefixincrement custom property
+ *
+ * @path ch08/8.6/S8.6_A3_T2.js
+ * @description Try to implement pefixincrement for not declared custom property
+ */
+
+var __map={};
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (!isNaN(++__map.foo)) {
+ $ERROR('#1: var __map={}; __map.foo++; __map.foo === Not-a-Number. Actual: ' + (__map.foo));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (!("foo" in __map)) {
+ $ERROR('#2: var __map={}; "foo" in __map');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch08/8.6/S8.6_A4_T1.js b/js/src/tests/test262/ch08/8.6/S8.6_A4_T1.js
new file mode 100644
index 000000000..94424118a
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.6/S8.6_A4_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.
+
+/**
+ * An Object is an unordered collection of properties
+ *
+ * @path ch08/8.6/S8.6_A4_T1.js
+ * @description Simple using a few custom properties
+ */
+
+///////////////////////////////////////////////////////
+// CHECK#1
+var obj = {bar:true, some:1, foo:"a"};
+
+var count=0;
+
+for (property in obj) count++;
+
+if (count !== 3){
+ $ERROR('#1: obj = {bar:true, some:1, foo:"a"}; count=0; for (property in obj) count++; count === 3. Actual: ' + (count));
+}
+//
+////////////////////////////////////////////////////////
+
+///////////////////////////////////////////////////////
+// CHECK#2
+var obj_ = {bar:true};
+obj_.some = 1;
+obj_.foo = "a";
+
+count=0;
+
+for (property in obj_) count++;
+
+if (count !== 3){
+ $ERROR('#2: obj_ = {bar:true}; obj_.some = 1; obj_.foo = "a"; count=0; for (property in obj_) count++; count === 3. Actual: ' + (count));
+}
+//
+////////////////////////////////////////////////////////
+
+///////////////////////////////////////////////////////
+// CHECK#3
+var obj__ = new Object();
+obj__.bar = true;
+obj__.some = 1;
+obj__.foo = "a";
+
+count=0;
+
+for (property in obj__) count++;
+
+if (count !== 3){
+ $ERROR('#3: obj__ = new Object(); obj__.bar = true; obj__.some = 1; obj__.foo = "a"; for (property in obj__) count++; count === 3. Actual: ' + (count));
+}
+//
+////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch08/8.6/browser.js b/js/src/tests/test262/ch08/8.6/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.6/browser.js
diff --git a/js/src/tests/test262/ch08/8.6/shell.js b/js/src/tests/test262/ch08/8.6/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.6/shell.js
diff --git a/js/src/tests/test262/ch08/8.7/8.7.2/8.7.2-1-s.js b/js/src/tests/test262/ch08/8.7/8.7.2/8.7.2-1-s.js
new file mode 100644
index 000000000..a7f5f5b2c
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.7/8.7.2/8.7.2-1-s.js
@@ -0,0 +1,22 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch08/8.7/8.7.2/8.7.2-1-s.js
+ * @description Strict Mode - ReferenceError is thrown if LeftHandSide evaluates to an unresolvable Reference
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+ try {
+ eval("_8_7_2_1 = 11;");
+ return false;
+ } catch (e) {
+ return e instanceof ReferenceError;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch08/8.7/8.7.2/8.7.2-2-s.js b/js/src/tests/test262/ch08/8.7/8.7.2/8.7.2-2-s.js
new file mode 100644
index 000000000..abbfbc7fe
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.7/8.7.2/8.7.2-2-s.js
@@ -0,0 +1,18 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch08/8.7/8.7.2/8.7.2-2-s.js
+ * @description Strict Mode - ReferenceError isn't thrown if LeftHandSide evaluates to a resolvable Reference
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+ var b = 11;
+ return b === 11;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch08/8.7/8.7.2/8.7.2-3-1-s.js b/js/src/tests/test262/ch08/8.7/8.7.2/8.7.2-3-1-s.js
new file mode 100644
index 000000000..7695a3cb8
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.7/8.7.2/8.7.2-3-1-s.js
@@ -0,0 +1,19 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch08/8.7/8.7.2/8.7.2-3-1-s.js
+ * @description eval - a property named 'eval' is permitted
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ 'use strict';
+
+ var o = { eval: 42};
+ return true;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch08/8.7/8.7.2/8.7.2-3-a-1gs.js b/js/src/tests/test262/ch08/8.7/8.7.2/8.7.2-3-a-1gs.js
new file mode 100644
index 000000000..88dc77f61
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.7/8.7.2/8.7.2-3-a-1gs.js
@@ -0,0 +1,15 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+
+/**
+ * @path ch08/8.7/8.7.2/8.7.2-3-a-1gs.js
+ * @description Strict Mode - ReferenceError is thrown if LeftHandSide evaluate to an unresolvable Reference
+ * @onlyStrict
+ * @negative .
+ */
+
+"use strict";
+b = 11;
diff --git a/js/src/tests/test262/ch08/8.7/8.7.2/8.7.2-3-a-2gs.js b/js/src/tests/test262/ch08/8.7/8.7.2/8.7.2-3-a-2gs.js
new file mode 100644
index 000000000..402e7dcfb
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.7/8.7.2/8.7.2-3-a-2gs.js
@@ -0,0 +1,16 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+
+/**
+ * @path ch08/8.7/8.7.2/8.7.2-3-a-2gs.js
+ * @description Strict Mode - 'runtime' error is thrown before LeftHandSide evaluates to an unresolvable Reference
+ * @onlyStrict
+ * @negative NotEarlyError
+ */
+
+"use strict";
+throw NotEarlyError;
+b = 11;
diff --git a/js/src/tests/test262/ch08/8.7/8.7.2/8.7.2-3-s.js b/js/src/tests/test262/ch08/8.7/8.7.2/8.7.2-3-s.js
new file mode 100644
index 000000000..b61a53046
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.7/8.7.2/8.7.2-3-s.js
@@ -0,0 +1,27 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch08/8.7/8.7.2/8.7.2-3-s.js
+ * @description Strict Mode - TypeError is thrown if LeftHandSide is a reference to a non-writable data property
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+ var _8_7_2_3 = {};
+ Object.defineProperty(_8_7_2_3, "b", {
+ writable: false
+ });
+
+ try {
+ _8_7_2_3.b = 11;
+ return false;
+ } catch (e) {
+ return e instanceof TypeError;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch08/8.7/8.7.2/8.7.2-4-s.js b/js/src/tests/test262/ch08/8.7/8.7.2/8.7.2-4-s.js
new file mode 100644
index 000000000..f8bb3cfc2
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.7/8.7.2/8.7.2-4-s.js
@@ -0,0 +1,28 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch08/8.7/8.7.2/8.7.2-4-s.js
+ * @description Strict Mode - TypeError is thrown if LeftHandSide is a reference to an accessor property with no setter
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+ var _8_7_2_4 = {};
+ var _8_7_2_4_bValue = 1;
+ Object.defineProperty(_8_7_2_4, "b", {
+ get: function () { return _8_7_2_4_bValue; }
+ });
+
+ try {
+ _8_7_2_4.b = 11;
+ return false;
+ } catch (e) {
+ return e instanceof TypeError;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch08/8.7/8.7.2/8.7.2-5-s.js b/js/src/tests/test262/ch08/8.7/8.7.2/8.7.2-5-s.js
new file mode 100644
index 000000000..ece372934
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.7/8.7.2/8.7.2-5-s.js
@@ -0,0 +1,25 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch08/8.7/8.7.2/8.7.2-5-s.js
+ * @description Strict Mode - TypeError is thrown if LeftHandSide is a reference to a non-existent property of an non-extensible object
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+ var _8_7_2_5 = {};
+ Object.preventExtensions(_8_7_2_5);
+
+ try {
+ _8_7_2_5.b = 11;
+ return false;
+ } catch (e) {
+ return e instanceof TypeError;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch08/8.7/8.7.2/8.7.2-6-s.js b/js/src/tests/test262/ch08/8.7/8.7.2/8.7.2-6-s.js
new file mode 100644
index 000000000..298485f94
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.7/8.7.2/8.7.2-6-s.js
@@ -0,0 +1,24 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch08/8.7/8.7.2/8.7.2-6-s.js
+ * @description Strict Mode - TypeError isn't thrown if LeftHandSide is a reference to a writable data property
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+ var _8_7_2_6 = {};
+ Object.defineProperty(_8_7_2_6, "b", {
+ writable: true
+ });
+
+ _8_7_2_6.b = 11;
+
+ return _8_7_2_6.b === 11;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch08/8.7/8.7.2/8.7.2-7-s.js b/js/src/tests/test262/ch08/8.7/8.7.2/8.7.2-7-s.js
new file mode 100644
index 000000000..bc2f19543
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.7/8.7.2/8.7.2-7-s.js
@@ -0,0 +1,25 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch08/8.7/8.7.2/8.7.2-7-s.js
+ * @description Strict Mode - TypeError isn't thrown if LeftHandSide is a reference to an accessor property with setter
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+ var _8_7_2_7 = {};
+ var _8_7_2_7_bValue = 1;
+ Object.defineProperty(_8_7_2_7, "b", {
+ get: function () { return _8_7_2_7_bValue; },
+ set: function (value) { _8_7_2_7_bValue = value; }
+ });
+
+ _8_7_2_7.b = 11;
+ return _8_7_2_7.b === 11;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch08/8.7/8.7.2/8.7.2-8-s.js b/js/src/tests/test262/ch08/8.7/8.7.2/8.7.2-8-s.js
new file mode 100644
index 000000000..1e69c3305
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.7/8.7.2/8.7.2-8-s.js
@@ -0,0 +1,21 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch08/8.7/8.7.2/8.7.2-8-s.js
+ * @description Strict Mode - TypeError isn't thrown if LeftHandSide is a reference to a property of an extensible object
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+ var _8_7_2_8 = {};
+
+ _8_7_2_8.b = 11;
+
+ return _8_7_2_8.b === 11;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch08/8.7/8.7.2/browser.js b/js/src/tests/test262/ch08/8.7/8.7.2/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.7/8.7.2/browser.js
diff --git a/js/src/tests/test262/ch08/8.7/8.7.2/shell.js b/js/src/tests/test262/ch08/8.7/8.7.2/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.7/8.7.2/shell.js
diff --git a/js/src/tests/test262/ch08/8.7/S8.7.1_A1.js b/js/src/tests/test262/ch08/8.7/S8.7.1_A1.js
new file mode 100644
index 000000000..624b2d71f
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.7/S8.7.1_A1.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.
+
+/**
+ * Delete operator deletes pure property, so it returns true to be applyed to this.property
+ *
+ * @path ch08/8.7/S8.7.1_A1.js
+ * @description Try to delete this.y, where y is this.y=1
+ */
+
+this.y = 1;
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if((delete this.y) !== true){
+ $ERROR('#1: this.y = 1; (delete this.y) === true. Actual: ' + ((delete this.y)));
+};
+//
+//////////////////////////////////////////////////////////////////////////////
+
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (this.y !== undefined){
+ $ERROR('#2: this.y = 1; (delete this.y) === true; this.y === undefined. Actual: ' + (this.y));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch08/8.7/S8.7.1_A2.js b/js/src/tests/test262/ch08/8.7/S8.7.1_A2.js
new file mode 100644
index 000000000..eb9c4caff
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.7/S8.7.1_A2.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.
+
+/**
+ * Delete operator can't delete reference, so it returns false to be applyed to reference
+ *
+ * @path ch08/8.7/S8.7.1_A2.js
+ * @description Try to delete y, where y is var y=1
+ * @noStrict
+ */
+
+var y = 1;
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if(delete y){
+ $ERROR('#1: y = 1; (delete y) === false. Actual: ' + ((delete y)));
+};
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (y !== 1) {
+ $ERROR('#2: y = 1; delete y; y === 1. Actual: ' + (y));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch08/8.7/S8.7.2_A1_T1.js b/js/src/tests/test262/ch08/8.7/S8.7.2_A1_T1.js
new file mode 100644
index 000000000..c7908106d
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.7/S8.7.2_A1_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.
+
+/**
+ * GetValue(V) mast fail
+ *
+ * @path ch08/8.7/S8.7.2_A1_T1.js
+ * @description Checking if execution of "'litera'=1;" fails
+ * @negative
+ */
+
+'litera'=1;
+
diff --git a/js/src/tests/test262/ch08/8.7/S8.7.2_A1_T2.js b/js/src/tests/test262/ch08/8.7/S8.7.2_A1_T2.js
new file mode 100644
index 000000000..97a38cc0b
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.7/S8.7.2_A1_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.
+
+/**
+ * GetValue(V) mast fail
+ *
+ * @path ch08/8.7/S8.7.2_A1_T2.js
+ * @description Checking if execution of "1=1" fails
+ * @negative
+ */
+
+1=1;
+
diff --git a/js/src/tests/test262/ch08/8.7/S8.7.2_A2.js b/js/src/tests/test262/ch08/8.7/S8.7.2_A2.js
new file mode 100644
index 000000000..53f3a8d5b
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.7/S8.7.2_A2.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.
+
+/**
+ * x++ calls GetValue then PutValue so after applying postfix increment(actually conrete operator type is unimportant)
+ * we must have reference to defined value
+ *
+ * @path ch08/8.7/S8.7.2_A2.js
+ * @description Execute x++, where x is var x
+ */
+
+var x;
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (x !== undefined) {
+ $ERROR('#1: var x; x === undefined. Actual: ' + (x));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+x++;
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (x === undefined) {
+ $ERROR('#2: var x; x++; x !== undefined');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch08/8.7/S8.7.2_A3.js b/js/src/tests/test262/ch08/8.7/S8.7.2_A3.js
new file mode 100644
index 000000000..7877e4e2b
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.7/S8.7.2_A3.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.
+
+/**
+ * this.x++ calls GetValue then PutValue so after applying postfix increment(actually conrete operator type is unimportan)
+ * we must have reference to defined value
+ *
+ * @path ch08/8.7/S8.7.2_A3.js
+ * @description Execute this.x++, where this.x is undefined
+ */
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (this.x !== undefined) {
+ $ERROR('#1: this.x === undefined. Actual: ' + (this.x));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+this.x++;
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (x === undefined) {
+ $ERROR('#2: this.x; this.x++; x !== undefined');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch08/8.7/S8.7_A1.js b/js/src/tests/test262/ch08/8.7/S8.7_A1.js
new file mode 100644
index 000000000..7743600bb
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.7/S8.7_A1.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.
+
+/**
+ * Multiple Variables should Referring to a Single Object
+ *
+ * @path ch08/8.7/S8.7_A1.js
+ * @description Create object and refers to the other object, modify a property in the original object.
+ * We now see that that change is represented in both variables
+ */
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#
+// Set obj to an empty object
+//
+var obj = new Object();
+// objRef now refers to the other object
+//
+var objRef = obj;
+// Modify a property in the original object
+objRef.oneProperty = -1;
+obj.oneProperty = true;
+// We now see that that change is represented in both variables
+// (Since they both refer to the same object)
+if(objRef.oneProperty !== true){
+ $ERROR('#1: var obj = new Object(); var objRef = obj; objRef.oneProperty = -1; obj.oneProperty = true; objRef.oneProperty === true. Actual: ' + (objRef.oneProperty));
+};
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch08/8.7/S8.7_A2.js b/js/src/tests/test262/ch08/8.7/S8.7_A2.js
new file mode 100644
index 000000000..8e1e1e933
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.7/S8.7_A2.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.
+
+/**
+ * Reference to Self-Modifying Object remain the integrity
+ *
+ * @path ch08/8.7/S8.7_A2.js
+ * @description Create a reference to the array, and change original array
+ */
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+// Create an array of items
+var items = new Array( "one", "two", "three" );
+// Create a reference to the array of items
+var itemsRef = items;
+// Add an item to the original array
+items.push( "four" );var itemsRef = items;
+// The length of each array should be the same,
+// since they both point to the same array object
+if( itemsRef.length !== 4){
+ $ERROR('#1: var items = new Array( "one", "two", "three" ); var itemsRef = items; items.push( "four" );var itemsRef = items; itemsRef.length !== 4');
+};
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#
+// Create an array of items
+var items = new Array( "one", "two", "three" );
+// Create a reference to the array of items
+var itemsRef = items;
+// Add an item to the original array
+items[1]="duo";
+// The length of each array should be the same,
+// since they both point to the same array object
+if( itemsRef[1] !== "duo"){
+ $ERROR('#2: var items = new Array( "one", "two", "three" ); var itemsRef = items; items[1]="duo"; itemsRef[1] === "duo". Actual: ' + (itemsRef[1]));
+};
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch08/8.7/S8.7_A3.js b/js/src/tests/test262/ch08/8.7/S8.7_A3.js
new file mode 100644
index 000000000..b7266bee7
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.7/S8.7_A3.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.
+
+/**
+ * Changing the Reference of an Object While Maintaining Integrity
+ *
+ * @path ch08/8.7/S8.7_A3.js
+ * @description Create a reference to the array, and redefine original array with new array
+ */
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#
+// Set items to an array (object) of strings
+var items = new Array( "one", "two", "three" );
+// Set itemsRef to a reference to items
+//
+var itemsRef = items;
+// Set items to equal a new object
+//
+items = new Array( "new", "array" );
+// items and itemsRef now point to different objects.
+// items points to new Array( "new", "array" )
+// itemsRef points to new Array( "one", "two", "three" )
+if( items == itemsRef ){
+ $ERROR('#1: var items = new Array( "one", "two", "three" ); var itemsRef = items; items = new Array( "new", "array" ); items != itemsRef');
+};
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch08/8.7/S8.7_A4.js b/js/src/tests/test262/ch08/8.7/S8.7_A4.js
new file mode 100644
index 000000000..f2c7b4562
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.7/S8.7_A4.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.
+
+/**
+ * Object Modification Resulting in a New Object for Not a Self-Modified Object leads to loss of integrity
+ *
+ * @path ch08/8.7/S8.7_A4.js
+ * @description Create a reference to the string, and Concatenate some new text onto the string object
+ */
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#
+// Set item equal to a new string object
+var item = new String("test");
+// itemRef now refers to the same string object
+var itemRef = item;
+// Concatenate some new text onto the string object
+// NOTE: This creates a new object, and does not modify
+// the original object.
+item += "ing";
+// The values of item and itemRef are NOT equal, as a whole
+// new string object has been created
+if( item == itemRef ){
+ $ERROR('#1: var item = new String("test"); var itemRef = item; item += "ing"; item != itemRef');
+};
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch08/8.7/S8.7_A5_T1.js b/js/src/tests/test262/ch08/8.7/S8.7_A5_T1.js
new file mode 100644
index 000000000..32796bdd3
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.7/S8.7_A5_T1.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.
+
+/**
+ * Delete unary operator can't delete object to be referenced
+ *
+ * @path ch08/8.7/S8.7_A5_T1.js
+ * @description Delete referenced object, var __ref = obj
+ * @noStrict
+ */
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (typeof(__ref) !== "undefined"){
+ $ERROR('#1: typeof(__ref) === "undefined". Actual: ' + (typeof(__ref)));
+};
+//
+//////////////////////////////////////////////////////////////////////////////
+
+var obj = new Object();
+var __ref = obj;
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (typeof(__ref) === "undefined"){
+ $ERROR('#2: obj = new Object(); var __ref = obj; typeof(__ref) !== "undefined"');
+};
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if (delete __ref !== false){
+ $ERROR('#3: obj = new Object(); var __ref = obj; delete __ref === false. Actual: ' + (delete __ref));
+};
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#4
+if (typeof(__ref) !== "object"){
+ $ERROR('#4: obj = new Object(); var __ref = obj; delete __ref; typeof(__ref) === "object". Actual: ' + (typeof(__ref)));
+};
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#5
+if (typeof(obj) !== "object"){
+ $ERROR('#5: obj = new Object(); var __ref = obj; delete __ref; typeof(obj) === "object". Actual: ' + (typeof(obj)));
+};
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch08/8.7/S8.7_A5_T2.js b/js/src/tests/test262/ch08/8.7/S8.7_A5_T2.js
new file mode 100644
index 000000000..a76b36c19
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.7/S8.7_A5_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.
+
+/**
+ * Delete unary operator can't delete object to be referenced
+ *
+ * @path ch08/8.7/S8.7_A5_T2.js
+ * @description Delete referenced object, __ref = obj
+ * @noStrict
+ */
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (typeof(__ref) !== "undefined"){
+ $ERROR('#1: typeof(__ref) === "undefined". Actual: ' + (typeof(__ref)));
+};
+//
+//////////////////////////////////////////////////////////////////////////////
+
+var obj = new Object();
+__ref = obj;
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (typeof(__ref) === "undefined"){
+ $ERROR('#2: obj = new Object(); __ref = obj; typeof(__ref) !== "undefined"');
+};
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if (delete __ref !== true){
+ $ERROR('#3: obj = new Object(); __ref = obj; delete __ref === true. Actual: ' + (delete __ref));
+};
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#4
+if (typeof(__ref) !== "undefined"){
+ $ERROR('#4: obj = new Object(); __ref = obj; delete __ref; typeof(__ref) === "undefined". Actual: ' + (typeof(__ref)));
+};
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#5
+if (typeof(obj) !== "object"){
+ $ERROR('#5: obj = new Object(); __ref = obj; delete __ref; typeof(obj) === "object". Actual: ' + (typeof(obj)));
+};
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch08/8.7/S8.7_A6.js b/js/src/tests/test262/ch08/8.7/S8.7_A6.js
new file mode 100644
index 000000000..40882f1a5
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.7/S8.7_A6.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.
+
+/**
+ * Passing arguments by value differs from by reference and do not change values to be passed
+ *
+ * @path ch08/8.7/S8.7_A6.js
+ * @description Adding original variable with referenced one inside function
+ */
+
+var n = 1;
+var m = n;
+
+function addFirst2Second(first, second){first += second;}
+
+addFirst2Second(n, m);
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (m !== 1) {
+ $ERROR('#1: var n = 1; var m = n; function addFirst2Second(first, second){first += second;} addFirst2Second(n, m); m === 1. Actual: ' + (m));
+}
+
+//
+//////////////////////////////////////////////////////////////////////////////
+
+
diff --git a/js/src/tests/test262/ch08/8.7/S8.7_A7.js b/js/src/tests/test262/ch08/8.7/S8.7_A7.js
new file mode 100644
index 000000000..17e8eb59c
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.7/S8.7_A7.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.
+
+/**
+ * Passing arguments by reference do change values of reference to be passed
+ *
+ * @path ch08/8.7/S8.7_A7.js
+ * @description Add new property to original variable inside function
+ */
+
+var n = {};
+var m = n;
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (typeof m !== "object") {
+ $ERROR('#1: var n = {}; var m = n; typeof m === "object". Actual: ' + (typeof m));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+function populateAge(person){person.age = 50;}
+
+populateAge(m);
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (n.age !== 50) {
+ $ERROR('#2: var n = {}; var m = n; function populateAge(person){person.age = 50;} populateAge(m); n.age === 50. Actual: ' + (n.age));
+}
+
+//
+//////////////////////////////////////////////////////////////////////////////
+
+
diff --git a/js/src/tests/test262/ch08/8.7/browser.js b/js/src/tests/test262/ch08/8.7/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.7/browser.js
diff --git a/js/src/tests/test262/ch08/8.7/shell.js b/js/src/tests/test262/ch08/8.7/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.7/shell.js
diff --git a/js/src/tests/test262/ch08/8.8/S8.8_A2_T1.js b/js/src/tests/test262/ch08/8.8/S8.8_A2_T1.js
new file mode 100644
index 000000000..ed9f8c10d
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.8/S8.8_A2_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.
+
+/**
+ * Values of the List type are simply ordered sequences of values
+ *
+ * @path ch08/8.8/S8.8_A2_T1.js
+ * @description Call function __mFunc(1,2,3) with 3 arguments
+ */
+
+function __mFunc(){return arguments.length;};
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__mFunc(1,2,3) !== 3){
+ $ERROR('#1: function __mFunc(){return arguments.length;}; __mFunc(1,2,3) === 3. Actual: ' + (__mFunc(1,2,3)));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch08/8.8/S8.8_A2_T2.js b/js/src/tests/test262/ch08/8.8/S8.8_A2_T2.js
new file mode 100644
index 000000000..4ab032de0
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.8/S8.8_A2_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.
+
+/**
+ * Values of the List type are simply ordered sequences of values
+ *
+ * @path ch08/8.8/S8.8_A2_T2.js
+ * @description Call function __mFunc([,,]) with 1 arguments
+ */
+
+function __mFunc(){return arguments.length;};
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__mFunc([,,]) !== 1){
+ $ERROR('#1: function __mFunc(){return arguments.length;}; __mFunc([,,]) === 1. Actual: ' + (__mFunc([,,])));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch08/8.8/S8.8_A2_T3.js b/js/src/tests/test262/ch08/8.8/S8.8_A2_T3.js
new file mode 100644
index 000000000..281c0397c
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.8/S8.8_A2_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.
+
+/**
+ * Values of the List type are simply ordered sequences of values
+ *
+ * @path ch08/8.8/S8.8_A2_T3.js
+ * @description Call function, that concatenate all it`s arguments
+ */
+
+function __mFunc(){var __accum=""; for (var i = 0; i < arguments.length; ++i){__accum += arguments[i]};return __accum;};
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__mFunc("A","B","C","D","E","F") !== "ABCDEF"){
+ $ERROR('#1: function __mFunc(){var __accum=""; for (var i = 0; i < arguments.length; ++i){__accum += arguments[i]};return __accum;}; __mFunc("A","B","C","D","E","F") === "ABCDEF". Actual: ' + (__mFunc("A","B","C","D","E","F")));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch08/8.8/browser.js b/js/src/tests/test262/ch08/8.8/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.8/browser.js
diff --git a/js/src/tests/test262/ch08/8.8/shell.js b/js/src/tests/test262/ch08/8.8/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch08/8.8/shell.js
diff --git a/js/src/tests/test262/ch08/browser.js b/js/src/tests/test262/ch08/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch08/browser.js
diff --git a/js/src/tests/test262/ch08/shell.js b/js/src/tests/test262/ch08/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch08/shell.js
diff --git a/js/src/tests/test262/ch09/9.1/S9.1_A1_T1.js b/js/src/tests/test262/ch09/9.1/S9.1_A1_T1.js
new file mode 100644
index 000000000..662591054
--- /dev/null
+++ b/js/src/tests/test262/ch09/9.1/S9.1_A1_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.
+
+/**
+ * Result of primitive conversion from object is a default value for the Object
+ *
+ * @path ch09/9.1/S9.1_A1_T1.js
+ * @description Using operator Number. The operator calls ToPrimitive with hint Number
+ */
+
+// CHECK#1
+var object = {valueOf: function() {return "1"}, toString: function() {return 0}};
+if (Number(object) !== 1) {
+ $ERROR('#1: var object = {valueOf: function() {return "1"}, toString: function() {return 0}}; Number(object) === 1. Actual: ' + (Number(object)));
+}
+
+// CHECK#2
+var object = {valueOf: function() {return {}}, toString: function() {return "0"}};
+if (Number(object) !== 0) {
+ $ERROR('#2: var object = {valueOf: function() {return {}}, toString: function() {return "0"}}; Number(object) === 0. Actual: ' + (Number(object)));
+}
+
+
diff --git a/js/src/tests/test262/ch09/9.1/S9.1_A1_T2.js b/js/src/tests/test262/ch09/9.1/S9.1_A1_T2.js
new file mode 100644
index 000000000..636591dab
--- /dev/null
+++ b/js/src/tests/test262/ch09/9.1/S9.1_A1_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.
+
+/**
+ * Result of primitive conversion from object is a default value for the Object
+ *
+ * @path ch09/9.1/S9.1_A1_T2.js
+ * @description Using operator Number. This operator calls ToPrimitive with hint Number
+ */
+
+// CHECK#1
+var object = {valueOf: function() {return 0}, toString: function() {return 1}};
+if (String(object) !== "1") {
+ $ERROR('#1: var object = {valueOf: function() {return 0}, toString: function() {return 1}}; String(object) === "1". Actual: ' + (String(object)));
+}
+
+// CHECK#2
+var object = {valueOf: function() {return 0}, toString: function() {return {}}};
+if (String(object) !== "0") {
+ $ERROR('#2: var object = {valueOf: function() {return 0}, toString: function() {return {}}}; String(object) === "0". Actual: ' + (String(object)));
+}
+
+
diff --git a/js/src/tests/test262/ch09/9.1/S9.1_A1_T3.js b/js/src/tests/test262/ch09/9.1/S9.1_A1_T3.js
new file mode 100644
index 000000000..cf418eeef
--- /dev/null
+++ b/js/src/tests/test262/ch09/9.1/S9.1_A1_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.
+
+/**
+ * Result of primitive conversion from object is a default value for the Object
+ *
+ * @path ch09/9.1/S9.1_A1_T3.js
+ * @description Using operator "+". This operator firstly calls ToPrimitive and then calls ToString or ToNumber
+ */
+
+// CHECK#1
+var object = {valueOf: function() {return 1}, toString: function() {return 0}};
+if (object + "" !== "1") {
+ $ERROR('#1: var object = {valueOf: function() {return 1}, toString: function() {return 0}}; object + "" === "1". Actual: ' + (object + ""));
+}
+
+// CHECK#2
+var object = {valueOf: function() {return "1"}, toString: function() {return 0}};
+if (object + 0 !== "10") {
+ $ERROR('#2: var object = {valueOf: function() {return "1"}, toString: function() {return 0}}; object + 0 === "10". Actual: ' + (object + 0));
+}
+
+
diff --git a/js/src/tests/test262/ch09/9.1/S9.1_A1_T4.js b/js/src/tests/test262/ch09/9.1/S9.1_A1_T4.js
new file mode 100644
index 000000000..9dcd88f50
--- /dev/null
+++ b/js/src/tests/test262/ch09/9.1/S9.1_A1_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.
+
+/**
+ * Result of primitive conversion from object is a default value for the Object
+ *
+ * @path ch09/9.1/S9.1_A1_T4.js
+ * @description Using operator "<". The operator firstly calls ToPrimitive and then calls ToString or ToNumber
+ */
+
+// CHECK#1
+var object = {valueOf: function() {return -2}, toString: function() {return "-2"}};
+if ("-1" < object) {
+ $ERROR('#1: var object = {valueOf: function() {return -2}, toString: function() {return "-2"}}; "-1" < object');
+}
+
+// CHECK#2
+var object = {valueOf: function() {return "-2"}, toString: function() {return -2}};
+if (object < "-1") {
+ $ERROR('#2: var object = {valueOf: function() {return "-2"}, toString: function() {return -2}}; object < "-1"');
+}
+
+
diff --git a/js/src/tests/test262/ch09/9.1/browser.js b/js/src/tests/test262/ch09/9.1/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch09/9.1/browser.js
diff --git a/js/src/tests/test262/ch09/9.1/shell.js b/js/src/tests/test262/ch09/9.1/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch09/9.1/shell.js
diff --git a/js/src/tests/test262/ch09/9.2/S9.2_A1_T1.js b/js/src/tests/test262/ch09/9.2/S9.2_A1_T1.js
new file mode 100644
index 000000000..44bbaae6a
--- /dev/null
+++ b/js/src/tests/test262/ch09/9.2/S9.2_A1_T1.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.
+
+/**
+ * Result of boolean conversion from undefined value is false
+ *
+ * @path ch09/9.2/S9.2_A1_T1.js
+ * @description Undefined, void and others are converted to Boolean by explicit transformation
+ */
+
+// CHECK#1
+if (Boolean(undefined) !== false) {
+ $ERROR('#1: Boolean(undefined) === false. Actual: ' + (Boolean(undefined)));
+}
+
+// CHECK#2
+if (Boolean(void 0) !== false) {
+ $ERROR('#2: Boolean(undefined) === false. Actual: ' + (Boolean(undefined)));
+}
+
+// CHECK#3
+if (Boolean(eval("var x")) !== false) {
+ $ERROR('#3: Boolean(eval("var x")) === false. Actual: ' + (Boolean(eval("var x"))));
+}
+
+// CHECK#4
+if (Boolean() !== false) {
+ $ERROR('#4: Boolean() === false. Actual: ' + (Boolean()));
+}
+
diff --git a/js/src/tests/test262/ch09/9.2/S9.2_A1_T2.js b/js/src/tests/test262/ch09/9.2/S9.2_A1_T2.js
new file mode 100644
index 000000000..0700b8da6
--- /dev/null
+++ b/js/src/tests/test262/ch09/9.2/S9.2_A1_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.
+
+/**
+ * Result of boolean conversion from undefined value is false
+ *
+ * @path ch09/9.2/S9.2_A1_T2.js
+ * @description Undefined, void and others are converted to Boolean by implicit transformation
+ */
+
+// CHECK#1
+if (!(undefined) !== true) {
+ $ERROR('#1: !(undefined) === true. Actual: ' + (!(undefined)));
+}
+
+// CHECK#2
+if (!(void 0) !== true) {
+ $ERROR('#2: !(undefined) === true. Actual: ' + (!(undefined)));
+}
+
+// CHECK#3
+if (!(eval("var x")) !== true) {
+ $ERROR('#3: !(eval("var x")) === true. Actual: ' + (!(eval("var x"))));
+}
+
diff --git a/js/src/tests/test262/ch09/9.2/S9.2_A2_T1.js b/js/src/tests/test262/ch09/9.2/S9.2_A2_T1.js
new file mode 100644
index 000000000..c53da91bf
--- /dev/null
+++ b/js/src/tests/test262/ch09/9.2/S9.2_A2_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.
+
+/**
+ * Result of boolean conversion from null value is false
+ *
+ * @path ch09/9.2/S9.2_A2_T1.js
+ * @description null convert to Boolean by explicit transformation
+ */
+
+// CHECK#1
+if (Boolean(null) !== false) {
+ $ERROR('#1: Boolean(null) === false. Actual: ' + (Boolean(null)));
+}
+
diff --git a/js/src/tests/test262/ch09/9.2/S9.2_A2_T2.js b/js/src/tests/test262/ch09/9.2/S9.2_A2_T2.js
new file mode 100644
index 000000000..ffd391b90
--- /dev/null
+++ b/js/src/tests/test262/ch09/9.2/S9.2_A2_T2.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.
+
+/**
+ * Result of boolean conversion from null value is false
+ *
+ * @path ch09/9.2/S9.2_A2_T2.js
+ * @description null convert to Boolean by implicit transformation
+ */
+
+// CHECK#1
+if (!(null) !== true) {
+ $ERROR('#1: !(null) === true. Actual: ' + (!(null)));
+}
+
diff --git a/js/src/tests/test262/ch09/9.2/S9.2_A3_T1.js b/js/src/tests/test262/ch09/9.2/S9.2_A3_T1.js
new file mode 100644
index 000000000..103f4eab3
--- /dev/null
+++ b/js/src/tests/test262/ch09/9.2/S9.2_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.
+
+/**
+ * Result of boolean conversion from boolean value is no conversion
+ *
+ * @path ch09/9.2/S9.2_A3_T1.js
+ * @description true and false convert to Boolean by explicit transformation
+ */
+
+// CHECK#1
+if (Boolean(true) !== true) {
+ $ERROR('#1: Boolean(true) === true. Actual: ' + (Boolean(true)));
+}
+
+// CHECK#2
+if (Boolean(false) !== false) {
+ $ERROR('#2: Boolean(false) === false. Actual: ' + (Boolean(false)));
+}
+
diff --git a/js/src/tests/test262/ch09/9.2/S9.2_A3_T2.js b/js/src/tests/test262/ch09/9.2/S9.2_A3_T2.js
new file mode 100644
index 000000000..d1ede1c6d
--- /dev/null
+++ b/js/src/tests/test262/ch09/9.2/S9.2_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.
+
+/**
+ * Result of boolean conversion from boolean value is no conversion
+ *
+ * @path ch09/9.2/S9.2_A3_T2.js
+ * @description true and false convert to Boolean by implicit transformation
+ */
+
+// CHECK#1
+if (!(true) !== false) {
+ $ERROR('#1: !(true) === false. Actual: ' + (!(true)));
+}
+
+// CHECK#2
+if (!(false) !== true) {
+ $ERROR('#2: !(false) === true. Actual: ' + (!(false)));
+}
+
diff --git a/js/src/tests/test262/ch09/9.2/S9.2_A4_T1.js b/js/src/tests/test262/ch09/9.2/S9.2_A4_T1.js
new file mode 100644
index 000000000..71860cac8
--- /dev/null
+++ b/js/src/tests/test262/ch09/9.2/S9.2_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.
+
+/**
+ * Result of boolean conversion from number value is false if the argument is +0, -0, or NaN; otherwise, is true
+ *
+ * @path ch09/9.2/S9.2_A4_T1.js
+ * @description +0, -0 and NaN convert to Boolean by explicit transformation
+ */
+
+// CHECK#1
+if (Boolean(+0) !== false) {
+ $ERROR('#1: Boolean(+0) === false. Actual: ' + (Boolean(+0)));
+}
+
+// CHECK#2
+if (Boolean(-0) !== false) {
+ $ERROR('#2: Boolean(-0) === false. Actual: ' + (Boolean(-0)));
+}
+
+// CHECK#3
+if (Boolean(Number.NaN) !== false) {
+ $ERROR('#3: Boolean(Number.NaN) === false. Actual: ' + (Boolean(Number.NaN)));
+}
+
diff --git a/js/src/tests/test262/ch09/9.2/S9.2_A4_T2.js b/js/src/tests/test262/ch09/9.2/S9.2_A4_T2.js
new file mode 100644
index 000000000..66047bea5
--- /dev/null
+++ b/js/src/tests/test262/ch09/9.2/S9.2_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.
+
+/**
+ * Result of boolean conversion from number value is false if the argument is +0, -0, or NaN; otherwise, is true
+ *
+ * @path ch09/9.2/S9.2_A4_T2.js
+ * @description +0, -0 and NaN convert to Boolean by implicit transformation
+ */
+
+// CHECK#1
+if (!(+0) !== true) {
+ $ERROR('#1: !(+0) === true. Actual: ' + (!(+0)));
+}
+
+// CHECK#2
+if (!(-0) !== true) {
+ $ERROR('#2: !(-0) === true. Actual: ' + (!(-0)));
+}
+
+// CHECK#3
+if (!(Number.NaN) !== true) {
+ $ERROR('#3: !(Number.NaN) === true. Actual: ' + (!(Number.NaN)));
+}
+
diff --git a/js/src/tests/test262/ch09/9.2/S9.2_A4_T3.js b/js/src/tests/test262/ch09/9.2/S9.2_A4_T3.js
new file mode 100644
index 000000000..9a16966d6
--- /dev/null
+++ b/js/src/tests/test262/ch09/9.2/S9.2_A4_T3.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.
+
+/**
+ * Result of boolean conversion from number value is false if the argument is +0, -0, or NaN; otherwise, is true
+ *
+ * @path ch09/9.2/S9.2_A4_T3.js
+ * @description Number.POSITIVE_INFINITY, Number.NEGATIVE_INFINITY,
+ * Number.MAX_VALUE, Number.MIN_VALUE and some numbers convert to Boolean by explicit transformation
+ */
+
+// CHECK#1
+if (Boolean(Number.POSITIVE_INFINITY) !== true) {
+ $ERROR('#1: Boolean(+Infinity) === true. Actual: ' + (Boolean(+Infinity)));
+}
+
+// CHECK#2;
+if (Boolean(Number.NEGATIVE_INFINITY) !== true) {
+ $ERROR('#2: Boolean(-Infinity) === true. Actual: ' + (Boolean(-Infinity)));
+}
+
+// CHECK#3
+if (Boolean(Number.MAX_VALUE) !== true) {
+ $ERROR('#3: Boolean(Number.MAX_VALUE) === true. Actual: ' + (Boolean(Number.MAX_VALUE)));
+}
+
+// CHECK#4
+if (Boolean(Number.MIN_VALUE) !== true) {
+ $ERROR('#4: Boolean(Number.MIN_VALUE) === true. Actual: ' + (Boolean(Number.MIN_VALUE)));
+}
+
+// CHECK#5
+if (Boolean(13) !== true) {
+ $ERROR('#5: Boolean(13) === true. Actual: ' + (Boolean(13)));
+}
+
+// CHECK#6
+if (Boolean(-13) !== true) {
+ $ERROR('#6: Boolean(-13) === true. Actual: ' + (Boolean(-13)));
+}
+
+// CHECK#7
+if (Boolean(1.3) !== true) {
+ $ERROR('#7: Boolean(1.3) === true. Actual: ' + (Boolean(1.3)));
+}
+
+// CHECK#8
+if (Boolean(-1.3) !== true) {
+ $ERROR('#8: Boolean(-1.3) === true. Actual: ' + (Boolean(-1.3)));
+}
+
diff --git a/js/src/tests/test262/ch09/9.2/S9.2_A4_T4.js b/js/src/tests/test262/ch09/9.2/S9.2_A4_T4.js
new file mode 100644
index 000000000..692ab77bf
--- /dev/null
+++ b/js/src/tests/test262/ch09/9.2/S9.2_A4_T4.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.
+
+/**
+ * Result of boolean conversion from number value is false if the argument is +0, -0, or NaN; otherwise, is true
+ *
+ * @path ch09/9.2/S9.2_A4_T4.js
+ * @description Number.POSITIVE_INFINITY, Number.NEGATIVE_INFINITY,
+ * Number.MAX_VALUE, Number.MIN_VALUE and some other numbers are converted to Boolean by implicit transformation
+ */
+
+// CHECK#1
+if (!(Number.POSITIVE_INFINITY) !== false) {
+ $ERROR('#1: !(+Infinity) === false. Actual: ' + (!(+Infinity)));
+}
+
+// CHECK#2;
+if (!(Number.NEGATIVE_INFINITY) !== false) {
+ $ERROR('#2: !(-Infinity) === false. Actual: ' + (!(-Infinity)));
+}
+
+// CHECK#3
+if (!(Number.MAX_VALUE) !== false) {
+ $ERROR('#3: !(Number.MAX_VALUE) === false. Actual: ' + (!(Number.MAX_VALUE)));
+}
+
+// CHECK#4
+if (!(Number.MIN_VALUE) !== false) {
+ $ERROR('#4: !(Number.MIN_VALUE) === false. Actual: ' + (!(Number.MIN_VALUE)));
+}
+
+// CHECK#5
+if (!(13) !== false) {
+ $ERROR('#5: !(13) === false. Actual: ' + (!(13)));
+}
+
+// CHECK#6
+if (!(-13) !== false) {
+ $ERROR('#6: !(-13) === false. Actual: ' + (!(-13)));
+}
+
+// CHECK#7
+if (!(1.3) !== false) {
+ $ERROR('#7: !(1.3) === false. Actual: ' + (!(1.3)));
+}
+
+// CHECK#8
+if (!(-1.3) !== false) {
+ $ERROR('#8: !(-1.3) === false. Actual: ' + (!(-1.3)));
+}
+
diff --git a/js/src/tests/test262/ch09/9.2/S9.2_A5_T1.js b/js/src/tests/test262/ch09/9.2/S9.2_A5_T1.js
new file mode 100644
index 000000000..293ee2375
--- /dev/null
+++ b/js/src/tests/test262/ch09/9.2/S9.2_A5_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.
+
+/**
+ * Result of boolean conversion from nonempty string value (length is not zero) is true; from empty String (length is zero) is false
+ *
+ * @path ch09/9.2/S9.2_A5_T1.js
+ * @description "" is converted to Boolean by explicit transformation
+ */
+
+// CHECK#1
+if (Boolean("") !== false) {
+ $ERROR('#1: Boolean("") === false. Actual: ' + (Boolean("")));
+}
+
diff --git a/js/src/tests/test262/ch09/9.2/S9.2_A5_T2.js b/js/src/tests/test262/ch09/9.2/S9.2_A5_T2.js
new file mode 100644
index 000000000..de391a329
--- /dev/null
+++ b/js/src/tests/test262/ch09/9.2/S9.2_A5_T2.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.
+
+/**
+ * Result of boolean conversion from nonempty string value (length is not zero) is true; from empty String (length is zero) is false
+ *
+ * @path ch09/9.2/S9.2_A5_T2.js
+ * @description "" convert to Boolean by implicit transformation
+ */
+
+// CHECK#1
+if (!("") !== true) {
+ $ERROR('#1: !("") === true. Actual: ' + (!("")));
+}
+
diff --git a/js/src/tests/test262/ch09/9.2/S9.2_A5_T3.js b/js/src/tests/test262/ch09/9.2/S9.2_A5_T3.js
new file mode 100644
index 000000000..f8f185c59
--- /dev/null
+++ b/js/src/tests/test262/ch09/9.2/S9.2_A5_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.
+
+/**
+ * Result of boolean conversion from nonempty string value (length is not zero) is true; from empty String (length is zero) is false
+ *
+ * @path ch09/9.2/S9.2_A5_T3.js
+ * @description Any nonempty string convert to Boolean by explicit transformation
+ */
+
+// CHECK#1
+if (Boolean(" ") !== true) {
+ $ERROR('#1: Boolean(" ") === true. Actual: ' + (Boolean(" ")));
+}
+
+// CHECK#2
+if (Boolean("Nonempty String") !== true) {
+ $ERROR('#2: Boolean("Nonempty String") === true. Actual: ' + (Boolean("Nonempty String")));
+}
+
diff --git a/js/src/tests/test262/ch09/9.2/S9.2_A5_T4.js b/js/src/tests/test262/ch09/9.2/S9.2_A5_T4.js
new file mode 100644
index 000000000..c8ea44e9d
--- /dev/null
+++ b/js/src/tests/test262/ch09/9.2/S9.2_A5_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.
+
+/**
+ * Result of boolean conversion from nonempty string value (length is not zero) is true; from empty String (length is zero) is false
+ *
+ * @path ch09/9.2/S9.2_A5_T4.js
+ * @description Any nonempty string convert to Boolean by implicit transformation
+ */
+
+// CHECK#1
+if (!(" ") !== false) {
+ $ERROR('#1: !(" ") === false. Actual: ' + (!(" ")));
+}
+
+// CHECK#2
+if (!("Nonempty String") !== false) {
+ $ERROR('#2: !("Nonempty String") === false. Actual: ' + (!("Nonempty String")));
+}
+
diff --git a/js/src/tests/test262/ch09/9.2/S9.2_A6_T1.js b/js/src/tests/test262/ch09/9.2/S9.2_A6_T1.js
new file mode 100644
index 000000000..72bb34e26
--- /dev/null
+++ b/js/src/tests/test262/ch09/9.2/S9.2_A6_T1.js
@@ -0,0 +1,105 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * Result of boolean conversion from object is true
+ *
+ * @path ch09/9.2/S9.2_A6_T1.js
+ * @description Different objects convert to Boolean by explicit transformation
+ */
+
+// CHECK#1
+if (Boolean(new Object()) !== true) {
+ $ERROR('#1: Boolean(new Object()) === true. Actual: ' + (Boolean(new Object())));
+}
+
+// CHECK#2
+if (Boolean(new String("")) !== true) {
+ $ERROR('#2: Boolean(new String("")) === true. Actual: ' + (Boolean(new String(""))));
+}
+
+// CHECK#3
+if (Boolean(new String()) !== true) {
+ $ERROR('#3: Boolean(new String()) === true. Actual: ' + (Boolean(new String())));
+}
+
+// CHECK#4
+if (Boolean(new Boolean(true)) !== true) {
+ $ERROR('#4: Boolean(new Boolean(true)) === true. Actual: ' + (Boolean(new Boolean(true))));
+}
+
+// CHECK#5
+if (Boolean(new Boolean(false)) !== true) {
+ $ERROR('#5: Boolean(new Boolean(false)) === true. Actual: ' + (Boolean(new Boolean(false))));
+}
+
+// CHECK#6
+if (Boolean(new Boolean()) !== true) {
+ $ERROR('#6: Boolean(new Boolean()) === true. Actual: ' + (Boolean(new Boolean())));
+}
+
+// CHECK#7
+if (Boolean(new Array()) !== true) {
+ $ERROR('#7: Boolean(new Array()) === true. Actual: ' + (Boolean(new Array())));
+}
+
+// CHECK#8
+if (Boolean(new Number()) !== true) {
+ $ERROR('#8: Boolean(new Number()) === true. Actual: ' + (Boolean(new Number())));
+}
+
+// CHECK#9
+if (Boolean(new Number(-0)) !== true) {
+ $ERROR('#9: Boolean(new Number(-0)) === true. Actual: ' + (Boolean(new Number(-0))));
+}
+
+// CHECK#10
+if (Boolean(new Number(0)) !== true) {
+ $ERROR('#10: Boolean(new Number(0)) === true. Actual: ' + (Boolean(new Number(0))));
+}
+
+// CHECK#11
+if (Boolean(new Number()) !== true) {
+ $ERROR('#11: Boolean(new Number()) === true. Actual: ' + (Boolean(new Number())));
+}
+
+// CHECK#12
+if (Boolean(new Number(Number.NaN)) !== true) {
+ $ERROR('#12: Boolean(new Number(Number.NaN)) === true. Actual: ' + (Boolean(new Number(Number.NaN))));
+}
+
+// CHECK#13
+if (Boolean(new Number(-1)) !== true) {
+ $ERROR('#13: Boolean(new Number(-1)) === true. Actual: ' + (Boolean(new Number(-1))));
+}
+
+// CHECK#14
+if (Boolean(new Number(1)) !== true) {
+ $ERROR('#14: Boolean(new Number(1)) === true. Actual: ' + (Boolean(new Number(1))));
+}
+
+// CHECK#15
+if (Boolean(new Number(Number.POSITIVE_INFINITY)) !== true) {
+ $ERROR('#15: Boolean(new Number(Number.POSITIVE_INFINITY)) === true. Actual: ' + (Boolean(new Number(Number.POSITIVE_INFINITY))));
+}
+
+// CHECK#16
+if (Boolean(new Number(Number.NEGATIVE_INFINITY)) !== true) {
+ $ERROR('#16: Boolean(new Number(Number.NEGATIVE_INFINITY)) === true. Actual: ' + (Boolean(new Number(Number.NEGATIVE_INFINITY))));
+}
+
+// CHECK#17
+if (Boolean(new Function()) !== true) {
+ $ERROR('#17: Boolean(new Function()) === true. Actual: ' + (Boolean(new Function())));
+}
+
+// CHECK#18
+if (Boolean(new Date()) !== true) {
+ $ERROR('#18: Boolean(new Date()) === true. Actual: ' + (Boolean(new Date())));
+}
+
+// CHECK#19
+if (Boolean(new Date(0)) !== true) {
+ $ERROR('#19: Boolean(new Date(0)) === true. Actual: ' + (Boolean(new Date(0))));
+}
+
diff --git a/js/src/tests/test262/ch09/9.2/S9.2_A6_T2.js b/js/src/tests/test262/ch09/9.2/S9.2_A6_T2.js
new file mode 100644
index 000000000..54dbbb6f3
--- /dev/null
+++ b/js/src/tests/test262/ch09/9.2/S9.2_A6_T2.js
@@ -0,0 +1,105 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * Result of boolean conversion from object is true
+ *
+ * @path ch09/9.2/S9.2_A6_T2.js
+ * @description Different objects convert to Boolean by implicit transformation
+ */
+
+// CHECK#1
+if (!(new Object()) !== false) {
+ $ERROR('#1: !(new Object()) === false. Actual: ' + (!(new Object())));
+}
+
+// CHECK#2
+if (!(new String("")) !== false) {
+ $ERROR('#2: !(new String("")) === false. Actual: ' + (!(new String(""))));
+}
+
+// CHECK#3
+if (!(new String()) !== false) {
+ $ERROR('#3: !(new String()) === false. Actual: ' + (!(new String())));
+}
+
+// CHECK#4
+if (!(new Boolean(true)) !== false) {
+ $ERROR('#4: !(new Boolean(true)) === false. Actual: ' + (!(new Boolean(true))));
+}
+
+// CHECK#5
+if (!(new Boolean(false)) !== false) {
+ $ERROR('#5: !(new Boolean(false)) === false. Actual: ' + (!(new Boolean(false))));
+}
+
+// CHECK#6
+if (!(new Boolean()) !== false) {
+ $ERROR('#6: !(new Boolean()) === false. Actual: ' + (!(new Boolean())));
+}
+
+// CHECK#7
+if (!(new Array()) !== false) {
+ $ERROR('#7: !(new Array()) === false. Actual: ' + (!(new Array())));
+}
+
+// CHECK#8
+if (!(new Number()) !== false) {
+ $ERROR('#8: !(new Number()) === false. Actual: ' + (!(new Number())));
+}
+
+// CHECK#9
+if (!(new Number(-0)) !== false) {
+ $ERROR('#9: !(new Number(-0)) === false. Actual: ' + (!(new Number(-0))));
+}
+
+// CHECK#10
+if (!(new Number(0)) !== false) {
+ $ERROR('#10: !(new Number(0)) === false. Actual: ' + (!(new Number(0))));
+}
+
+// CHECK#11
+if (!(new Number()) !== false) {
+ $ERROR('#11: !(new Number()) === false. Actual: ' + (!(new Number())));
+}
+
+// CHECK#12
+if (!(new Number(Number.NaN)) !== false) {
+ $ERROR('#12: !(new Number(Number.NaN)) === false. Actual: ' + (!(new Number(Number.NaN))));
+}
+
+// CHECK#13
+if (!(new Number(-1)) !== false) {
+ $ERROR('#13: !(new Number(-1)) === false. Actual: ' + (!(new Number(-1))));
+}
+
+// CHECK#14
+if (!(new Number(1)) !== false) {
+ $ERROR('#14: !(new Number(1)) === false. Actual: ' + (!(new Number(1))));
+}
+
+// CHECK#15
+if (!(new Number(Number.POSITIVE_INFINITY)) !== false) {
+ $ERROR('#15: !(new Number(Number.POSITIVE_INFINITY)) === false. Actual: ' + (!(new Number(Number.POSITIVE_INFINITY))));
+}
+
+// CHECK#16
+if (!(new Number(Number.NEGATIVE_INFINITY)) !== false) {
+ $ERROR('#16: !(new Number(Number.NEGATIVE_INFINITY)) === false. Actual: ' + (!(new Number(Number.NEGATIVE_INFINITY))));
+}
+
+// CHECK#17
+if (!(new Function()) !== false) {
+ $ERROR('#17: !(new Function()) === false. Actual: ' + (!(new Function())));
+}
+
+// CHECK#18
+if (!(new Date()) !== false) {
+ $ERROR('#18: !(new Date()) === false. Actual: ' + (!(new Date())));
+}
+
+// CHECK#19
+if (!(new Date(0)) !== false) {
+ $ERROR('#19: !(new Date(0)) === false. Actual: ' + (!(new Date(0))));
+}
+
diff --git a/js/src/tests/test262/ch09/9.2/browser.js b/js/src/tests/test262/ch09/9.2/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch09/9.2/browser.js
diff --git a/js/src/tests/test262/ch09/9.2/shell.js b/js/src/tests/test262/ch09/9.2/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch09/9.2/shell.js
diff --git a/js/src/tests/test262/ch09/9.3/9.3.1/S9.3.1_A1.js b/js/src/tests/test262/ch09/9.3/9.3.1/S9.3.1_A1.js
new file mode 100644
index 000000000..35b235fa3
--- /dev/null
+++ b/js/src/tests/test262/ch09/9.3/9.3.1/S9.3.1_A1.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.
+
+/**
+ * The MV of StringNumericLiteral ::: [empty] is 0
+ *
+ * @path ch09/9.3/9.3.1/S9.3.1_A1.js
+ * @description Number('') convert to Number by explicit transformation
+ */
+
+// CHECK#1
+if (Number("") !== 0) {
+ $ERROR('#1.1: Number("") === 0. Actual: ' + (Number("")));
+} else {
+ if (1/Number("") !== Number.POSITIVE_INFINITY) {
+ $ERROR('#1.2: Number("") == +0. Actual: -0');
+ }
+}
+
diff --git a/js/src/tests/test262/ch09/9.3/9.3.1/S9.3.1_A10.js b/js/src/tests/test262/ch09/9.3/9.3.1/S9.3.1_A10.js
new file mode 100644
index 000000000..1f7d3f958
--- /dev/null
+++ b/js/src/tests/test262/ch09/9.3/9.3.1/S9.3.1_A10.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.
+
+/**
+ * The MV of StrUnsignedDecimalLiteral:::. DecimalDigits is the
+ * MV of DecimalDigits times 10<sup><small>-n</small></sup>, where n is the
+ * number of characters in DecimalDigits
+ *
+ * @path ch09/9.3/9.3.1/S9.3.1_A10.js
+ * @description Compare Number('.12345') with +('12345')*1e-5
+ */
+
+// CHECK#1
+if (Number(".12345") !== +("12345")*1e-5) {
+ $ERROR('#1: Number(".12345") === +("12345")*1e-5');
+}
+
diff --git a/js/src/tests/test262/ch09/9.3/9.3.1/S9.3.1_A11.js b/js/src/tests/test262/ch09/9.3/9.3.1/S9.3.1_A11.js
new file mode 100644
index 000000000..9f58e16f2
--- /dev/null
+++ b/js/src/tests/test262/ch09/9.3/9.3.1/S9.3.1_A11.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.
+
+/**
+ * The MV of StrUnsignedDecimalLiteral:::. DecimalDigits ExponentPart
+ * is the MV of DecimalDigits times 10<sup><small>e-n</small></sup>, where n is
+ * the number of characters in DecimalDigits and e is the MV of ExponentPart
+ *
+ * @path ch09/9.3/9.3.1/S9.3.1_A11.js
+ * @description Compare Number('.12345e6') with +('12345')*1e1,
+ * and Number('.12345e-3') !== Number('12345')*1e-8
+ */
+
+// CHECK#1
+if (Number(".12345e6") !== +("12345")*1e1) {
+ $ERROR('#1: Number(".12345e6") === +("12345")*1e1');
+}
+
+// CHECK#2
+if (Number(".12345e-3") !== Number("12345")*1e-8) {
+ $ERROR('#2: Number(".12345e-3") === Number("12345")*1e-8');
+}
+
diff --git a/js/src/tests/test262/ch09/9.3/9.3.1/S9.3.1_A12.js b/js/src/tests/test262/ch09/9.3/9.3.1/S9.3.1_A12.js
new file mode 100644
index 000000000..201040946
--- /dev/null
+++ b/js/src/tests/test262/ch09/9.3/9.3.1/S9.3.1_A12.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.
+
+/**
+ * The MV of StrUnsignedDecimalLiteral::: DecimalDigits ExponentPart
+ * is the MV of DecimalDigits times 10<sup><small>e</small></sup>, where e is the MV of ExponentPart
+ *
+ * @path ch09/9.3/9.3.1/S9.3.1_A12.js
+ * @description Compare Number('12345e6') with +('12345')*1e1,
+ * and Number('12345e-6') !== Number('12345')*1e-6
+ */
+
+// CHECK#1
+if (Number("12345e6") !== +("12345")*1e6) {
+ $ERROR('#1: Number("12345e6") === +("12345")*1e6');
+}
+
+// CHECK#2
+if (Number("12345e-6") !== Number("12345")*1e-6) {
+ $ERROR('#2: Number("12345e-6") === Number("12345")*1e-6');
+}
+
diff --git a/js/src/tests/test262/ch09/9.3/9.3.1/S9.3.1_A13.js b/js/src/tests/test262/ch09/9.3/9.3.1/S9.3.1_A13.js
new file mode 100644
index 000000000..8d51f4b02
--- /dev/null
+++ b/js/src/tests/test262/ch09/9.3/9.3.1/S9.3.1_A13.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.
+
+/**
+ * The MV of DecimalDigits ::: DecimalDigits DecimalDigit is
+ * (the MV of DecimalDigits times 10) plus the MV of DecimalDigit
+ *
+ * @path ch09/9.3/9.3.1/S9.3.1_A13.js
+ * @description Compare '12' with Number("1")*10+Number("2") and analogous
+ */
+
+// CHECK#1
+if (+("12") !== Number("1")*10+Number("2")) {
+ $ERROR('#1: +("12") === Number("1")*10+Number("2")');
+}
+
+// CHECK#2
+if (Number("123") !== Number("12")*10+Number("3")) {
+ $ERROR('#2: Number("123") === Number("12")*10+Number("3")');
+}
+
+// CHECK#2
+if (Number("1234") !== Number("123")*10+Number("4")) {
+ $ERROR('#2: Number("1234") === Number("123")*10+Number("4")');
+}
+
diff --git a/js/src/tests/test262/ch09/9.3/9.3.1/S9.3.1_A14.js b/js/src/tests/test262/ch09/9.3/9.3.1/S9.3.1_A14.js
new file mode 100644
index 000000000..4ed80b082
--- /dev/null
+++ b/js/src/tests/test262/ch09/9.3/9.3.1/S9.3.1_A14.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.
+
+/**
+ * The MV of SignedInteger ::: + DecimalDigits is the MV of DecimalDigits
+ *
+ * @path ch09/9.3/9.3.1/S9.3.1_A14.js
+ * @description Compare Number('+1234567890') with +('1234567890')
+ */
+
+// CHECK#1
+if (Number("+1234567890") !== +("1234567890")) {
+ $ERROR('#1: Number("+1234567890") === +("1234567890")');
+}
+
diff --git a/js/src/tests/test262/ch09/9.3/9.3.1/S9.3.1_A15.js b/js/src/tests/test262/ch09/9.3/9.3.1/S9.3.1_A15.js
new file mode 100644
index 000000000..d0ba80b6e
--- /dev/null
+++ b/js/src/tests/test262/ch09/9.3/9.3.1/S9.3.1_A15.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.
+
+/**
+ * The MV of SignedInteger ::: - DecimalDigits is the negative of the MV of DecimalDigits
+ *
+ * @path ch09/9.3/9.3.1/S9.3.1_A15.js
+ * @description Compare -Number('1234567890') with ('-1234567890')
+ */
+
+// CHECK#1
+if (+("-1234567890") !== -Number("1234567890")) {
+ $ERROR('#1: +("-1234567890") === -Number("1234567890")');
+}
+
diff --git a/js/src/tests/test262/ch09/9.3/9.3.1/S9.3.1_A16.js b/js/src/tests/test262/ch09/9.3/9.3.1/S9.3.1_A16.js
new file mode 100644
index 000000000..6163fbb4a
--- /dev/null
+++ b/js/src/tests/test262/ch09/9.3/9.3.1/S9.3.1_A16.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.
+
+/**
+ * The MV of DecimalDigit ::: 0 or of HexDigit ::: 0 is 0
+ *
+ * @path ch09/9.3/9.3.1/S9.3.1_A16.js
+ * @description Compare Number('0x0') and Number('0X0') with 0
+ */
+
+// CHECK#1
+if (Number("0") !== 0) {
+ $ERROR('#1: Number("0") === 0. Actual: ' + (Number("0")));
+}
+
+// CHECK#2
+if (+("0x0") !== 0) {
+ $ERROR('#2: +("0x0") === 0. Actual: ' + (+("0x0")));
+}
+
+// CHECK#3
+if (Number("0X0") !== 0) {
+ $ERROR('#3: Number("0X0") === 0. Actual: ' + (Number("0X0")));
+}
+
diff --git a/js/src/tests/test262/ch09/9.3/9.3.1/S9.3.1_A17.js b/js/src/tests/test262/ch09/9.3/9.3.1/S9.3.1_A17.js
new file mode 100644
index 000000000..d4b72bbf5
--- /dev/null
+++ b/js/src/tests/test262/ch09/9.3/9.3.1/S9.3.1_A17.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.
+
+/**
+ * The MV of DecimalDigit ::: 1 or of HexDigit ::: 1 is 1
+ *
+ * @path ch09/9.3/9.3.1/S9.3.1_A17.js
+ * @description Compare Number('0x1') and Number('0X1') with 1
+ */
+
+// CHECK#1
+if (Number("1") !== 1) {
+ $ERROR('#1: Number("1") === 1. Actual: ' + (Number("1")));
+}
+
+// CHECK#2
+if (Number("0x1") !== 1) {
+ $ERROR('#2: Number("0x1") === 1. Actual: ' + (Number("0x1")));
+}
+
+// CHECK#3
+if (+("0X1") !== 1) {
+ $ERROR('#3: +("0X1") === 1. Actual: ' + (+("0X1")));
+}
+
diff --git a/js/src/tests/test262/ch09/9.3/9.3.1/S9.3.1_A18.js b/js/src/tests/test262/ch09/9.3/9.3.1/S9.3.1_A18.js
new file mode 100644
index 000000000..b4375494c
--- /dev/null
+++ b/js/src/tests/test262/ch09/9.3/9.3.1/S9.3.1_A18.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.
+
+/**
+ * The MV of DecimalDigit ::: 2 or of HexDigit ::: 2 is 2
+ *
+ * @path ch09/9.3/9.3.1/S9.3.1_A18.js
+ * @description Compare Number('0x2') and Number('0X2') with 2
+ */
+
+// CHECK#1
+if (+("2") !== 2) {
+ $ERROR('#1: +("2") === 2. Actual: ' + (+("2")));
+}
+
+// CHECK#2
+if (Number("0x2") !== 2) {
+ $ERROR('#2: Number("0x2") === 2. Actual: ' + (Number("0x2")));
+}
+
+// CHECK#3
+if (Number("0X2") !== 2) {
+ $ERROR('#3: Number("0X2") === 2. Actual: ' + (Number("0X2")));
+}
+
diff --git a/js/src/tests/test262/ch09/9.3/9.3.1/S9.3.1_A19.js b/js/src/tests/test262/ch09/9.3/9.3.1/S9.3.1_A19.js
new file mode 100644
index 000000000..0abc0200a
--- /dev/null
+++ b/js/src/tests/test262/ch09/9.3/9.3.1/S9.3.1_A19.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.
+
+/**
+ * The MV of DecimalDigit ::: 3 or of HexDigit ::: 3 is 3
+ *
+ * @path ch09/9.3/9.3.1/S9.3.1_A19.js
+ * @description Compare Number('0x3') and Number('0X3') with 3
+ */
+
+// CHECK#1
+if (Number("3") !== 3) {
+ $ERROR('#1: Number("3") === 3. Actual: ' + (Number("3")));
+}
+
+// CHECK#2
+if (+("0x3") !== 3) {
+ $ERROR('#2: +("0x3") === 3. Actual: ' + (+("0x3")));
+}
+
+// CHECK#3
+if (Number("0X3") !== 3) {
+ $ERROR('#3: Number("0X3") === 3. Actual: ' + (Number("0X3")));
+}
+
diff --git a/js/src/tests/test262/ch09/9.3/9.3.1/S9.3.1_A2.js b/js/src/tests/test262/ch09/9.3/9.3.1/S9.3.1_A2.js
new file mode 100644
index 000000000..f9bb01465
--- /dev/null
+++ b/js/src/tests/test262/ch09/9.3/9.3.1/S9.3.1_A2.js
@@ -0,0 +1,289 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * The MV of StringNumericLiteral ::: StrWhiteSpace is 0
+ *
+ * @path ch09/9.3/9.3.1/S9.3.1_A2.js
+ * @description Strings with various WhiteSpaces convert to Number by explicit transformation
+ */
+
+// CHECK#1
+if (Number("\u0009\u000C\u0020\u00A0\u000B\u000A\u000D\u2028\u2029\u1680\u180E\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000") !== 0) {
+ $ERROR('#1.1: Number("\\u0009\\u000C\\u0020\\u00A0\\u000B\\u000A\\u000D\\u2028\\u2029\\u1680\\u180E\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000") === 0. Actual: ' + (Number("\u0009\u000C\u0020\u00A0\u000B\u000A\u000D\u2028\u2029\u1680\u180E\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000")));
+} else {
+ if (1/Number("\u0009\u000C\u0020\u00A0\u000B\u000A\u000D\u2028\u2029\u1680\u180E\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000") !== Number.POSITIVE_INFINITY) {
+ $ERROR('#1.2: Number("\\u0009\\u000C\\u0020\\u00A0\\u000B\\u000A\\u000D\\u2028\\u2029\\u1680\\u180E\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000") === +0. Actual: -0');
+ }
+}
+
+// CHECK#2
+if (Number(" ") !== 0) {
+ $ERROR('#2.1: Number(" ") === 0. Actual: ' + (Number(" ")));
+} else {
+ if (1/Number(" ") !== Number.POSITIVE_INFINITY) {
+ $ERROR('#2.2: Number(" ") === +0. Actual: -0');
+ }
+}
+
+// CHECK#3
+if (Number("\t") !== 0) {
+ $ERROR('#3.1: Number("\\t") === 0. Actual: ' + (Number("\t")));
+} else {
+ if (1/Number("\t") !== Number.POSITIVE_INFINITY) {
+ $ERROR('#3.2: Number("\\t") === +0. Actual: -0');
+ }
+}
+
+// CHECK#4
+if (Number("\r") !== 0) {
+ $ERROR('#4.1: Number("\\r") === 0. Actual: ' + (Number("\r")));
+} else {
+ if (1/Number("\r") !== Number.POSITIVE_INFINITY) {
+ $ERROR('#4.2: Number("\\r") === +0. Actual: -0');
+ }
+}
+
+// CHECK#5
+if (Number("\n") !== 0) {
+ $ERROR('#5.1: Number("\\n") === 0. Actual: ' + (Number("\n")));
+} else {
+ if (1/Number("\n") !== Number.POSITIVE_INFINITY) {
+ $ERROR('#5.2: Number("\\n") === +0. Actual: -0');
+ }
+}
+
+// CHECK#6
+if (Number("\f") !== 0) {
+ $ERROR('#6.1: Number("\\f") === 0. Actual: ' + (Number("\f")));
+} else {
+ if (1/Number("\f") !== Number.POSITIVE_INFINITY) {
+ $ERROR('#6.2: Number("\\f") === +0. Actual: -0');
+ }
+}
+
+// CHECK#7
+if (Number("\u0009") !== 0) {
+ $ERROR('#7.1: Number("\\u0009") === 0. Actual: ' + (Number("\u0009")));
+} else {
+ if (1/Number("\u0009") !== Number.POSITIVE_INFINITY) {
+ $ERROR('#7.2: Number("\\u0009") === +0. Actual: -0');
+ }
+}
+
+// CHECK#8
+if (Number("\u000A") !== 0) {
+ $ERROR('#8.1: Number("\\u000A") === 0. Actual: ' + (Number("\u000A")));
+} else {
+ if (1/Number("\u000A") !== Number.POSITIVE_INFINITY) {
+ $ERROR('#8.2: Number("\\u000A") === +0. Actual: -0');
+ }
+}
+
+// CHECK#9
+if (Number("\u000B") !== 0) {
+ $ERROR('#9.1: Number("\\u000B") === 0. Actual: ' + (Number("\u000B")));
+} else {
+ if (1/Number("\u000B") !== Number.POSITIVE_INFINITY) {
+ $ERROR('#9.1.2: Number("\\u000B") === +0. Actual: -0');
+ }
+}
+
+// CHECK#10
+if (Number("\u000C") !== 0) {
+ $ERROR('#10.1: Number("\\u000C") === 0. Actual: ' + (Number("\u000C")));
+} else {
+ if (1/Number("\u000C") !== Number.POSITIVE_INFINITY) {
+ $ERROR('#10.2: Number("\\u000C") === +0. Actual: -0');
+ }
+}
+
+// CHECK#11
+if (Number("\u000D") !== 0) {
+ $ERROR('#11.1: Number("\\u000D") === 0. Actual: ' + (Number("\u000D")));
+} else {
+ if (1/Number("\u000D") !== Number.POSITIVE_INFINITY) {
+ $ERROR('#11.2: Number("\\u000D") === +0. Actual: -0');
+ }
+}
+
+// CHECK#12
+if (Number("\u00A0") !== 0) {
+ $ERROR('#12.1: Number("\\u00A0") === 0. Actual: ' + (Number("\u00A0")));
+} else {
+ if (1/Number("\u00A0") !== Number.POSITIVE_INFINITY) {
+ $ERROR('#12.2: Number("\\u00A0") === +0. Actual: -0');
+ }
+}
+
+// CHECK#13
+if (Number("\u0020") !== 0) {
+ $ERROR('#13.1: Number("\\u0020") === 0. Actual: ' + (Number("\u0020")));
+} else {
+ if (1/Number("\u0020") !== Number.POSITIVE_INFINITY) {
+ $ERROR('#13.2: Number("\\u0020") === +0. Actual: -0');
+ }
+}
+
+// CHECK#14
+if (Number("\u2028") !== 0) {
+ $ERROR('#14.1: Number("\\u2028") === 0. Actual: ' + (Number("\u2028")));
+} else {
+ if (1/Number("\u2028") !== Number.POSITIVE_INFINITY) {
+ $ERROR('#14.2: Number("\\u2028") === +0. Actual: -0');
+ }
+}
+
+// CHECK#15
+if (Number("\u2029") !== 0) {
+ $ERROR('#15.1: Number("\\u2029") === 0. Actual: ' + (Number("\u2029")));
+} else {
+ if (1/Number("\u2029") !== Number.POSITIVE_INFINITY) {
+ $ERROR('#15.2: Number("\\u2029") === +0. Actual: -0');
+ }
+}
+
+// CHECK#16
+if (Number("\u1680") !== 0) {
+ $ERROR('#16.1: Number("\\u1680") === 0. Actual: ' + (Number("\u1680")));
+} else {
+ if (1/Number("\u1680") !== Number.POSITIVE_INFINITY) {
+ $ERROR('#16.2: Number("\\u1680") === +0. Actual: -0');
+ }
+}
+
+// CHECK#17
+if (Number("\u180E") !== 0) {
+ $ERROR('#17.1: Number("\\u180E") === 0. Actual: ' + (Number("\u180E")));
+} else {
+ if (1/Number("\u180E") !== Number.POSITIVE_INFINITY) {
+ $ERROR('#17.2: Number("\\u180E") === +0. Actual: -0');
+ }
+}
+
+// CHECK#18
+if (Number("\u2000") !== 0) {
+ $ERROR('#18.1: Number("\\u2000") === 0. Actual: ' + (Number("\u2000")));
+} else {
+ if (1/Number("\u2000") !== Number.POSITIVE_INFINITY) {
+ $ERROR('#18.2: Number("\\u2000") === +0. Actual: -0');
+ }
+}
+
+// CHECK#19
+if (Number("\u2001") !== 0) {
+ $ERROR('#19.1: Number("\\u2001") === 0. Actual: ' + (Number("\u2001")));
+} else {
+ if (1/Number("\u2001") !== Number.POSITIVE_INFINITY) {
+ $ERROR('#19.2: Number("\\u2001") === +0. Actual: -0');
+ }
+}
+
+// CHECK#20
+if (Number("\u2002") !== 0) {
+ $ERROR('#20.1: Number("\\u2002") === 0. Actual: ' + (Number("\u2002")));
+} else {
+ if (1/Number("\u2002") !== Number.POSITIVE_INFINITY) {
+ $ERROR('#20.2: Number("\\u2002") === +0. Actual: -0');
+ }
+}
+
+// CHECK#21
+if (Number("\u2003") !== 0) {
+ $ERROR('#21.1: Number("\\u2003") === 0. Actual: ' + (Number("\u2003")));
+} else {
+ if (1/Number("\u2003") !== Number.POSITIVE_INFINITY) {
+ $ERROR('#21.2: Number("\\u2003") === +0. Actual: -0');
+ }
+}
+
+// CHECK#22
+if (Number("\u2004") !== 0) {
+ $ERROR('#22.1: Number("\\u2004") === 0. Actual: ' + (Number("\u2004")));
+} else {
+ if (1/Number("\u2004") !== Number.POSITIVE_INFINITY) {
+ $ERROR('#22.2: Number("\\u2004") === +0. Actual: -0');
+ }
+}
+
+// CHECK#23
+if (Number("\u2005") !== 0) {
+ $ERROR('#23.1: Number("\\u2005") === 0. Actual: ' + (Number("\u2005")));
+} else {
+ if (1/Number("\u2005") !== Number.POSITIVE_INFINITY) {
+ $ERROR('#23.2: Number("\\u2005") === +0. Actual: -0');
+ }
+}
+
+// CHECK#24
+if (Number("\u2006") !== 0) {
+ $ERROR('#24.1: Number("\\u2006") === 0. Actual: ' + (Number("\u2006")));
+} else {
+ if (1/Number("\u2006") !== Number.POSITIVE_INFINITY) {
+ $ERROR('#24.2: Number("\\u2006") === +0. Actual: -0');
+ }
+}
+
+// CHECK#25
+if (Number("\u2007") !== 0) {
+ $ERROR('#25.1: Number("\\u2007") === 0. Actual: ' + (Number("\u2007")));
+} else {
+ if (1/Number("\u2007") !== Number.POSITIVE_INFINITY) {
+ $ERROR('#25.2: Number("\\u2007") === +0. Actual: -0');
+ }
+}
+
+// CHECK#26
+if (Number("\u2008") !== 0) {
+ $ERROR('#26.1: Number("\\u2008") === 0. Actual: ' + (Number("\u2008")));
+} else {
+ if (1/Number("\u2008") !== Number.POSITIVE_INFINITY) {
+ $ERROR('#26.2: Number("\\u2008") === +0. Actual: -0');
+ }
+}
+
+// CHECK#27
+if (Number("\u2009") !== 0) {
+ $ERROR('#27.1: Number("\\u2009") === 0. Actual: ' + (Number("\u2009")));
+} else {
+ if (1/Number("\u2009") !== Number.POSITIVE_INFINITY) {
+ $ERROR('#27.2: Number("\\u2009") === +0. Actual: -0');
+ }
+}
+
+// CHECK#28
+if (Number("\u200A") !== 0) {
+ $ERROR('#28.1: Number("\\u200A") === 0. Actual: ' + (Number("\u200A")));
+} else {
+ if (1/Number("\u200A") !== Number.POSITIVE_INFINITY) {
+ $ERROR('#28.2: Number("\\u200A") === +0. Actual: -0');
+ }
+}
+
+// CHECK#29
+if (Number("\u202F") !== 0) {
+ $ERROR('#29.1: Number("\\u202F") === 0. Actual: ' + (Number("\u202F")));
+} else {
+ if (1/Number("\u202F") !== Number.POSITIVE_INFINITY) {
+ $ERROR('#29.2: Number("\\u202F") === +0. Actual: -0');
+ }
+}
+
+// CHECK#30
+if (Number("\u205F") !== 0) {
+ $ERROR('#30.1: Number("\\u205F") === 0. Actual: ' + (Number("\u205F")));
+} else {
+ if (1/Number("\u205F") !== Number.POSITIVE_INFINITY) {
+ $ERROR('#30.2: Number("\\u205F") === +0. Actual: -0');
+ }
+}
+
+// CHECK#31
+if (Number("\u3000") !== 0) {
+ $ERROR('#31.1: Number("\\u3000") === 0. Actual: ' + (Number("\u3000")));
+} else {
+ if (1/Number("\u3000") !== Number.POSITIVE_INFINITY) {
+ $ERROR('#31.2: Number("\\u3000") === +0. Actual: -0');
+ }
+}
+
diff --git a/js/src/tests/test262/ch09/9.3/9.3.1/S9.3.1_A20.js b/js/src/tests/test262/ch09/9.3/9.3.1/S9.3.1_A20.js
new file mode 100644
index 000000000..78689d42d
--- /dev/null
+++ b/js/src/tests/test262/ch09/9.3/9.3.1/S9.3.1_A20.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.
+
+/**
+ * The MV of DecimalDigit ::: 4 or of HexDigit ::: 4 is 4
+ *
+ * @path ch09/9.3/9.3.1/S9.3.1_A20.js
+ * @description Compare Number('0x4') and Number('0X4') with 4
+ */
+
+// CHECK#1
+if (Number("4") !== 4) {
+ $ERROR('#1: Number("4") === 4. Actual: ' + (Number("4")));
+}
+
+// CHECK#2
+if (Number("0x4") !== 4) {
+ $ERROR('#2: Number("0x4") === 4. Actual: ' + (Number("0x4")));
+}
+
+// CHECK#3
+if (+("0X4") !== 4) {
+ $ERROR('#3: +("0X4") === 4. Actual: ' + (+("0X4")));
+}
+
diff --git a/js/src/tests/test262/ch09/9.3/9.3.1/S9.3.1_A21.js b/js/src/tests/test262/ch09/9.3/9.3.1/S9.3.1_A21.js
new file mode 100644
index 000000000..de8fe9fe1
--- /dev/null
+++ b/js/src/tests/test262/ch09/9.3/9.3.1/S9.3.1_A21.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.
+
+/**
+ * The MV of DecimalDigit ::: 5 or of HexDigit ::: 5 is 5
+ *
+ * @path ch09/9.3/9.3.1/S9.3.1_A21.js
+ * @description Compare Number('0x5') and Number('0X5') with 5
+ */
+
+// CHECK#1
+if (+("5") !== 5) {
+ $ERROR('#1: +("5") === 5. Actual: ' + (+("5")));
+}
+
+// CHECK#2
+if (Number("0x5") !== 5) {
+ $ERROR('#2: Number("0x5") === 5. Actual: ' + (Number("0x5")));
+}
+
+// CHECK#3
+if (Number("0X5") !== 5) {
+ $ERROR('#3: Number("0X5") === 5. Actual: ' + (Number("0X5")));
+}
+
diff --git a/js/src/tests/test262/ch09/9.3/9.3.1/S9.3.1_A22.js b/js/src/tests/test262/ch09/9.3/9.3.1/S9.3.1_A22.js
new file mode 100644
index 000000000..02aa703a3
--- /dev/null
+++ b/js/src/tests/test262/ch09/9.3/9.3.1/S9.3.1_A22.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.
+
+/**
+ * The MV of DecimalDigit ::: 6 or of HexDigit ::: 6 is 6
+ *
+ * @path ch09/9.3/9.3.1/S9.3.1_A22.js
+ * @description Compare Number('0x6') and Number('0X6') with 6
+ */
+
+// CHECK#1
+if (Number("6") !== 6) {
+ $ERROR('#1: Number("6") === 6. Actual: ' + (Number("6")));
+}
+
+// CHECK#2
+if (+("0x6") !== 6) {
+ $ERROR('#2: +("0x6") === 6. Actual: ' + (+("0x6")));
+}
+
+// CHECK#3
+if (Number("0X6") !== 6) {
+ $ERROR('#3: Number("0X6") === 6. Actual: ' + (Number("0X6")));
+}
+
diff --git a/js/src/tests/test262/ch09/9.3/9.3.1/S9.3.1_A23.js b/js/src/tests/test262/ch09/9.3/9.3.1/S9.3.1_A23.js
new file mode 100644
index 000000000..d1745156d
--- /dev/null
+++ b/js/src/tests/test262/ch09/9.3/9.3.1/S9.3.1_A23.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.
+
+/**
+ * The MV of DecimalDigit ::: 7 or of HexDigit ::: 7 is 7
+ *
+ * @path ch09/9.3/9.3.1/S9.3.1_A23.js
+ * @description Compare Number('0x7') and Number('0X7') with 7
+ */
+
+// CHECK#1
+if (Number("7") !== 7) {
+ $ERROR('#1: Number("7") === 7. Actual: ' + (Number("7")));
+}
+
+// CHECK#2
+if (Number("0x7") !== 7) {
+ $ERROR('#2: Number("0x7") === 7. Actual: ' + (Number("0x7")));
+}
+
+// CHECK#3
+if (+("0X7") !== 7) {
+ $ERROR('#3: +("0X7") === 7. Actual: ' + (+("0X7")));
+}
+
diff --git a/js/src/tests/test262/ch09/9.3/9.3.1/S9.3.1_A24.js b/js/src/tests/test262/ch09/9.3/9.3.1/S9.3.1_A24.js
new file mode 100644
index 000000000..91409bead
--- /dev/null
+++ b/js/src/tests/test262/ch09/9.3/9.3.1/S9.3.1_A24.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.
+
+/**
+ * The MV of DecimalDigit ::: 8 or of HexDigit ::: 8 is 8
+ *
+ * @path ch09/9.3/9.3.1/S9.3.1_A24.js
+ * @description Compare Number('0x8') and Number('0X8') with 8
+ */
+
+// CHECK#1
+if (+("8") !== 8) {
+ $ERROR('#1: +("8") === 8. Actual: ' + (+("8")));
+}
+
+// CHECK#2
+if (Number("0x8") !== 8) {
+ $ERROR('#2: Number("0x8") === 8. Actual: ' + (Number("0x8")));
+}
+
+// CHECK#3
+if (Number("0X8") !== 8) {
+ $ERROR('#3: Number("0X8") === 8. Actual: ' + (Number("0X8")));
+}
+
diff --git a/js/src/tests/test262/ch09/9.3/9.3.1/S9.3.1_A25.js b/js/src/tests/test262/ch09/9.3/9.3.1/S9.3.1_A25.js
new file mode 100644
index 000000000..761ceb443
--- /dev/null
+++ b/js/src/tests/test262/ch09/9.3/9.3.1/S9.3.1_A25.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.
+
+/**
+ * The MV of DecimalDigit ::: 9 or of HexDigit ::: 9 is 9
+ *
+ * @path ch09/9.3/9.3.1/S9.3.1_A25.js
+ * @description Compare Number('0x9') and Number('0X9') with 9
+ */
+
+// CHECK#1
+if (Number("9") !== 9) {
+ $ERROR('#1: Number("9") === 9. Actual: ' + (Number("9")));
+}
+
+// CHECK#2
+if (+("0x9") !== 9) {
+ $ERROR('#2: +("0x9") === 9. Actual: ' + (+("0x9")));
+}
+
+// CHECK#3
+if (Number("0X9") !== 9) {
+ $ERROR('#3: Number("0X9") === 9. Actual: ' + (Number("0X9")));
+}
+
diff --git a/js/src/tests/test262/ch09/9.3/9.3.1/S9.3.1_A26.js b/js/src/tests/test262/ch09/9.3/9.3.1/S9.3.1_A26.js
new file mode 100644
index 000000000..404203f59
--- /dev/null
+++ b/js/src/tests/test262/ch09/9.3/9.3.1/S9.3.1_A26.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.
+
+/**
+ * The MV of HexDigit ::: a or of HexDigit ::: A is 10
+ *
+ * @path ch09/9.3/9.3.1/S9.3.1_A26.js
+ * @description Compare Number('0xA'), Number('0XA'), Number('0xa') and Number('0Xa') with 10
+ */
+
+// CHECK#1
+if (Number("0xa") !== 10) {
+ $ERROR('#1: Number("0xa") === 10. Actual: ' + (Number("0xa")));
+}
+
+// CHECK#2
+if (Number("0xA") !== 10) {
+ $ERROR('#2: Number("0xA") === 10. Actual: ' + (Number("0xA")));
+}
+
+// CHECK#3
+if (Number("0Xa") !== 10) {
+ $ERROR('#3: Number("0Xa") === 10. Actual: ' + (Number("0Xa")));
+}
+
+// CHECK#4
+if (+("0XA") !== 10) {
+ $ERROR('#4: +("0XA") === 10. Actual: ' + (+("0XA")));
+}
+
diff --git a/js/src/tests/test262/ch09/9.3/9.3.1/S9.3.1_A27.js b/js/src/tests/test262/ch09/9.3/9.3.1/S9.3.1_A27.js
new file mode 100644
index 000000000..67e6a6e5f
--- /dev/null
+++ b/js/src/tests/test262/ch09/9.3/9.3.1/S9.3.1_A27.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.
+
+/**
+ * The MV of HexDigit ::: b or of HexDigit ::: B is 11
+ *
+ * @path ch09/9.3/9.3.1/S9.3.1_A27.js
+ * @description Compare Number('0xB'), Number('0XB'), Number('0xb') and Number('0Xb') with 11
+ */
+
+// CHECK#1
+if (Number("0xb") !== 11) {
+ $ERROR('#1: Number("0xb") === 11. Actual: ' + (Number("0xb")));
+}
+
+// CHECK#2
+if (Number("0xB") !== 11) {
+ $ERROR('#2: Number("0xB") === 11. Actual: ' + (Number("0xB")));
+}
+
+// CHECK#3
+if (+("0Xb") !== 11) {
+ $ERROR('#3: +("0Xb") === 11. Actual: ' + (+("0Xb")));
+}
+
+// CHECK#4
+if (Number("0XB") !== 11) {
+ $ERROR('#4: Number("0XB") === 11. Actual: ' + (Number("0XB")));
+}
+
diff --git a/js/src/tests/test262/ch09/9.3/9.3.1/S9.3.1_A28.js b/js/src/tests/test262/ch09/9.3/9.3.1/S9.3.1_A28.js
new file mode 100644
index 000000000..d29b8c289
--- /dev/null
+++ b/js/src/tests/test262/ch09/9.3/9.3.1/S9.3.1_A28.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.
+
+/**
+ * The MV of HexDigit ::: c or of HexDigit ::: C is 12
+ *
+ * @path ch09/9.3/9.3.1/S9.3.1_A28.js
+ * @description Compare Number('0xC'), Number('0XC'), Number('0xc') and Number('0Xc') with 12
+ */
+
+// CHECK#1
+if (Number("0xc") !== 12) {
+ $ERROR('#1: Number("0xc") === 12. Actual: ' + (Number("0xc")));
+}
+
+// CHECK#2
+if (+("0xC") !== 12) {
+ $ERROR('#2: +("0xC") === 12. Actual: ' + (+("0xC")));
+}
+
+// CHECK#3
+if (Number("0Xc") !== 12) {
+ $ERROR('#3: Number("0Xc") === 12. Actual: ' + (Number("0Xc")));
+}
+
+// CHECK#4
+if (Number("0XC") !== 12) {
+ $ERROR('#4: Number("0XC") === 12. Actual: ' + (Number("0XC")));
+}
+
diff --git a/js/src/tests/test262/ch09/9.3/9.3.1/S9.3.1_A29.js b/js/src/tests/test262/ch09/9.3/9.3.1/S9.3.1_A29.js
new file mode 100644
index 000000000..88473af85
--- /dev/null
+++ b/js/src/tests/test262/ch09/9.3/9.3.1/S9.3.1_A29.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.
+
+/**
+ * The MV of HexDigit ::: d or of HexDigit ::: D is 13
+ *
+ * @path ch09/9.3/9.3.1/S9.3.1_A29.js
+ * @description Compare Number('0xD'), Number('0XD'), Number('0xd') and Number('0Xd') with 13
+ */
+
+// CHECK#1
+if (+("0xd") !== 13) {
+ $ERROR('#1: +("0xd") === 13. Actual: ' + (+("0xd")));
+}
+
+// CHECK#2
+if (Number("0xD") !== 13) {
+ $ERROR('#2: Number("0xD") === 13. Actual: ' + (Number("0xD")));
+}
+
+// CHECK#3
+if (Number("0Xd") !== 13) {
+ $ERROR('#3: Number("0Xd") === 13. Actual: ' + (Number("0Xd")));
+}
+
+// CHECK#4
+if (Number("0XD") !== 13) {
+ $ERROR('#4: Number("0XD") === 13. Actual: ' + (Number("0XD")));
+}
+
diff --git a/js/src/tests/test262/ch09/9.3/9.3.1/S9.3.1_A30.js b/js/src/tests/test262/ch09/9.3/9.3.1/S9.3.1_A30.js
new file mode 100644
index 000000000..b94bacbd7
--- /dev/null
+++ b/js/src/tests/test262/ch09/9.3/9.3.1/S9.3.1_A30.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.
+
+/**
+ * The MV of HexDigit ::: e or of HexDigit ::: E is 14
+ *
+ * @path ch09/9.3/9.3.1/S9.3.1_A30.js
+ * @description Compare Number('0xE'), Number('0XE'), Number('0xe') and Number('0Xe') with 14
+ */
+
+// CHECK#1
+if (Number("0xe") !== 14) {
+ $ERROR('#1: Number("0xe") === 14. Actual: ' + (Number("0xe")));
+}
+
+// CHECK#2
+if (Number("0xE") !== 14) {
+ $ERROR('#2: Number("0xE") === 14. Actual: ' + (Number("0xE")));
+}
+
+// CHECK#3
+if (Number("0Xe") !== 14) {
+ $ERROR('#3: Number("0Xe") === 14. Actual: ' + (Number("0Xe")));
+}
+
+// CHECK#4
+if (+("0XE") !== 14) {
+ $ERROR('#4: +("0XE") === 14. Actual: ' + (+("0XE")));
+}
+
diff --git a/js/src/tests/test262/ch09/9.3/9.3.1/S9.3.1_A31.js b/js/src/tests/test262/ch09/9.3/9.3.1/S9.3.1_A31.js
new file mode 100644
index 000000000..f5f151b76
--- /dev/null
+++ b/js/src/tests/test262/ch09/9.3/9.3.1/S9.3.1_A31.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.
+
+/**
+ * The MV of HexDigit ::: f or of HexDigit ::: F is 15
+ *
+ * @path ch09/9.3/9.3.1/S9.3.1_A31.js
+ * @description Compare Number('0xF'), Number('0XF'), Number('0xf') and Number('0Xf') with 15
+ */
+
+// CHECK#1
+if (Number("0xf") !== 15) {
+ $ERROR('#1: Number("0xf") === 15. Actual: ' + (Number("0xf")));
+}
+
+// CHECK#2
+if (Number("0xF") !== 15) {
+ $ERROR('#2: Number("0xF") === 15. Actual: ' + (Number("0xF")));
+}
+
+// CHECK#3
+if (+("0Xf") !== 15) {
+ $ERROR('#3: +("0Xf") === 15. Actual: ' + (+("0Xf")));
+}
+
+// CHECK#4
+if (Number("0XF") !== 15) {
+ $ERROR('#4: Number("0XF") === 15. Actual: ' + (Number("0XF")));
+}
+
diff --git a/js/src/tests/test262/ch09/9.3/9.3.1/S9.3.1_A32.js b/js/src/tests/test262/ch09/9.3/9.3.1/S9.3.1_A32.js
new file mode 100644
index 000000000..700feb717
--- /dev/null
+++ b/js/src/tests/test262/ch09/9.3/9.3.1/S9.3.1_A32.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.
+
+/**
+ * Once the exact MV for a string numeric literal has been
+ * determined, it is then rounded to a value of the Number type with 20
+ * significant digits by replacing each significant digit after the 20th
+ * with a 0 digit or the number value
+ *
+ * @path ch09/9.3/9.3.1/S9.3.1_A32.js
+ * @description Use various long numbers, for example, 1234567890.1234567890
+ */
+
+// CHECK#1
+if (Number("1234567890.1234567890") !== 1234567890.1234567890) {
+ $ERROR('#1: Number("1234567890.1234567890") === 1234567890.1234567890. Actual: ' + (Number("1234567890.1234567890")));
+}
+
+// CHECK#2
+if (Number("1234567890.1234567890") !== 1234567890.1234567000) {
+ $ERROR('#2: Number("1234567890.1234567890") === 1234567890.1234567000. Actual: ' + (Number("1234567890.1234567890")));
+}
+
+// CHECK#3
+if (+("1234567890.1234567890") === 1234567890.123456) {
+ $ERROR('#3: +("1234567890.1234567890") !== 1234567890.123456');
+}
+
+// CHECK#4
+if (Number("0.12345678901234567890") !== 0.123456789012345678) {
+ $ERROR('#4: Number("0.12345678901234567890") === 0.123456789012345678. Actual: ' + (Number("0.12345678901234567890")));
+}
+
+// CHECK#4
+if (Number("00.12345678901234567890") !== 0.123456789012345678) {
+ $ERROR('#4: Number("00.12345678901234567890") === 0.123456789012345678. Actual: ' + (Number("00.12345678901234567890")));
+}
+
diff --git a/js/src/tests/test262/ch09/9.3/9.3.1/S9.3.1_A3_T1.js b/js/src/tests/test262/ch09/9.3/9.3.1/S9.3.1_A3_T1.js
new file mode 100644
index 000000000..304f5ba4e
--- /dev/null
+++ b/js/src/tests/test262/ch09/9.3/9.3.1/S9.3.1_A3_T1.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.
+
+/**
+ * The MV of StringNumericLiteral ::: StrWhiteSpaceopt StrNumericLiteral StrWhiteSpaceopt is the MV of StrNumericLiteral, no matter whether white space is present or not
+ *
+ * @path ch09/9.3/9.3.1/S9.3.1_A3_T1.js
+ * @description static string
+ */
+
+// CHECK#1
+if (Number("\u0009\u000C\u0020\u00A0\u000B\u000A\u000D\u2028\u2029\u1680\u180E\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000") !== Number("")) {
+ $ERROR('#1: Number("\\u0009\\u000C\\u0020\\u00A0\\u000B\\u000A\\u000D\\u2028\\u2029\\u1680\\u180E\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000") === Number("")');
+}
+
+// CHECK#2
+if (Number("\u0009\u000C\u0020\u00A0\u000A\u000D\u2028\u2029\u000B\u1680\u180E\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u30001234567890\u0009\u000C\u0020\u00A0\u000B\u000A\u000D\u2028\u2029\u1680\u180E\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000") !== Number("1234567890")) {
+ $ERROR('#2: Number("\\u0009\\u000C\\u0020\\u00A0\\u000A\\u000D\\u2028\\u2029\\u000B\\u1680\\u180E\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u30001234567890\\u0009\\u000C\\u0020\\u00A0\\u000B\\u000A\\u000D\\u2028\\u2029\\u1680\\u180E\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000") === Number("1234567890")');
+}
+
+// CHECK#3
+if (!(+("\u0009\u000C\u0020\u00A0\u000B\u000A\u000D\u2028\u2029\u1680\u180E\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000Infinity\u0009\u000C\u0020\u00A0\u000B\u000A\u000D\u2028\u2029\u1680\u180E\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000") == Number("Infinity"))) {
+ $ERROR('#3: +("\\u0009\\u000C\\u0020\\u00A0\\u000B\\u000A\\u000D\\u2028\\u2029\\u1680\\u180E\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000Infinity\\u0009\\u000C\\u0020\\u00A0\\u000B\\u000A\\u000D\\u2028\\u2029\\u1680\\u180E\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000") == Number("Infinity")');
+}
+
+// CHECK#4
+if (!(Number("\u0009\u000C\u0020\u00A0\u000B\u000A\u000D\u2028\u2029\u1680\u180E\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000-Infinity\u0009\u000C\u0020\u00A0\u000B\u000A\u000D\u2028\u2029\u1680\u180E\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000") == Number(-"Infinity"))) {
+ $ERROR('#4: Number("\\u0009\\u000C\\u0020\\u00A0\\u000B\\u000A\\u000D\\u2028\\u2029\\u1680\\u180E\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000-Infinity\\u0009\\u000C\\u0020\\u00A0\\u000B\\u000A\\u000D\\u2028\\u2029\\u1680\\u180E\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000") == Number("-Infinity")');
+}
+
diff --git a/js/src/tests/test262/ch09/9.3/9.3.1/S9.3.1_A3_T2.js b/js/src/tests/test262/ch09/9.3/9.3.1/S9.3.1_A3_T2.js
new file mode 100644
index 000000000..0969dd9bb
--- /dev/null
+++ b/js/src/tests/test262/ch09/9.3/9.3.1/S9.3.1_A3_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.
+
+/**
+ * The MV of StringNumericLiteral ::: StrWhiteSpaceopt StrNumericLiteral StrWhiteSpaceopt is the MV of StrNumericLiteral, no matter whether white space is present or not
+ *
+ * @path ch09/9.3/9.3.1/S9.3.1_A3_T2.js
+ * @description dynamic string
+ */
+
+function dynaString(s1, s2){
+ return String(s1)+String(s2);
+}
+
+// CHECK#1
+if (Number(dynaString("\u0009\u000C\u0020\u00A0\u000B", "\u000A\u000D\u2028\u2029\u1680\u180E\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000")) !== Number("")) {
+ $ERROR('#1: Number("\\u0009\\u000C\\u0020\\u00A0\\u000B"+"\\u000A\\u000D\\u2028\\u2029\\u1680\\u180E\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000") === Number("")');
+}
+
+// CHECK#2
+if (+(dynaString("\u0009\u000C\u0020\u00A0\u000A\u000D\u2028\u2029\u000B12345", "67890\u0009\u000C\u0020\u00A0\u000B\u000A\u000D\u2028\u2029\u1680\u180E\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000")) !== Number("1234567890")) {
+ $ERROR('#2: +("\\u0009\\u000C\\u0020\\u00A0\\u000A\\u000D\\u2028\\u2029\\u000B12345"+"67890\\u0009\\u000C\\u0020\\u00A0\\u000B\\u000A\\u000D\\u2028\\u2029\\u1680\\u180E\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000") === Number("1234567890")');
+}
+
+// CHECK#3
+if (!(Number(dynaString("\u0009\u000C\u0020\u00A0\u000B\u000A\u000D\u2028\u2029Infi", "nity\u0009\u000C\u0020\u00A0\u000B\u000A\u000D\u2028\u2029\u1680\u180E\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000")) == Number("Infinity"))) {
+ $ERROR('#3: Number("\\u0009\\u000C\\u0020\\u00A0\\u000B\\u000A\\u000D\\u2028\\u2029Infi"+"nity\\u0009\\u000C\\u0020\\u00A0\\u000B\\u000A\\u000D\\u2028\\u2029\\u1680\\u180E\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000") == Number("Infinity")');
+}
+
+// CHECK#4
+if (!(Number(dynaString("\u0009\u000C\u0020\u00A0\u000B\u000A\u000D\u2028\u2029-Infi", "nity\u0009\u000C\u0020\u00A0\u000B\u000A\u000D\u2028\u2029\u1680\u180E\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000")) == Number(-"Infinity"))) {
+ $ERROR('#4: Number("\\u0009\\u000C\\u0020\\u00A0\\u000B\\u000A\\u000D\\u2028\\u2029-Infi"+"nity\\u0009\\u000C\\u0020\\u00A0\\u000B\\u000A\\u000D\\u2028\\u2029\\u1680\\u180E\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000") == Number("-Infinity")');
+}
+
diff --git a/js/src/tests/test262/ch09/9.3/9.3.1/S9.3.1_A4_T1.js b/js/src/tests/test262/ch09/9.3/9.3.1/S9.3.1_A4_T1.js
new file mode 100644
index 000000000..8d2051140
--- /dev/null
+++ b/js/src/tests/test262/ch09/9.3/9.3.1/S9.3.1_A4_T1.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.
+
+/**
+ * The MV of StrDecimalLiteral::: + StrUnsignedDecimalLiteral is the MV of StrUnsignedDecimalLiteral
+ *
+ * @path ch09/9.3/9.3.1/S9.3.1_A4_T1.js
+ * @description Compare Number('+any_number') with Number('any_number')
+ */
+
+// CHECK#1
+if (Number("+0") !== Number("0")) {
+ $ERROR('#1.1: Number("+0") === Number("0")');
+} else {
+ // CHECK#2
+ if (1/Number("+0") !== 1/Number("0")) {
+ $ERROR('#2.2: 1/Number("+0") === 1/Number("0")');
+ }
+}
+
+// CHECK#3
+if (Number("+Infinity") !== Number("Infinity")) {
+ $ERROR('#3: Number("+Infinity") === Number("Infinity")');
+}
+
+// CHECK#4
+if (Number("+1234.5678") !== Number("1234.5678")) {
+ $ERROR('#4: Number("+1234.5678") === Number("1234.5678")');
+}
+
+// CHECK#5
+if (Number("+1234.5678e90") !== Number("1234.5678e90")) {
+ $ERROR('#5: Number("+1234.5678e90") === Number("1234.5678e90")');
+}
+
+// CHECK#6
+if (Number("+1234.5678E90") !== Number("1234.5678E90")) {
+ $ERROR('#6: Number("+1234.5678E90") === Number("1234.5678E90")');
+}
+
+// CHECK#7
+if (Number("+1234.5678e-90") !== Number("1234.5678e-90")) {
+ $ERROR('#7: Number("+1234.5678e-90") === Number("1234.5678e-90")');
+}
+
+// CHECK#8
+if (Number("+1234.5678E-90") !== Number("1234.5678E-90")) {
+ $ERROR('#8: Number("+1234.5678E-90") === Number("1234.5678E-90")');
+}
+
diff --git a/js/src/tests/test262/ch09/9.3/9.3.1/S9.3.1_A4_T2.js b/js/src/tests/test262/ch09/9.3/9.3.1/S9.3.1_A4_T2.js
new file mode 100644
index 000000000..e10d517ce
--- /dev/null
+++ b/js/src/tests/test262/ch09/9.3/9.3.1/S9.3.1_A4_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.
+
+/**
+ * The MV of StrDecimalLiteral::: + StrUnsignedDecimalLiteral is the MV of StrUnsignedDecimalLiteral
+ *
+ * @path ch09/9.3/9.3.1/S9.3.1_A4_T2.js
+ * @description Compare Number('+' + 'any_number') with Number('any_number')
+ */
+
+function dynaString(s1, s2){
+ return String(s1)+String(s2);
+}
+
+// CHECK#1
+if (Number(dynaString("+", "0")) !== Number("0")) {
+ $ERROR('#1: Number("+"+"0") === Number("0")');
+} else {
+ // CHECK#2
+ if (1/Number(dynaString("+", "0")) !== 1/Number("0")) {
+ $ERROR('#2: 1/Number("+"+"0") === 1/Number("0")');
+ }
+}
+
+// CHECK#3
+if (Number(dynaString("+Infi", "nity")) !== Number("Infinity")) {
+ $ERROR('#3: Number("+Infin"+"ity") === Number("Infinity")');
+}
+
+// CHECK#4
+if (Number(dynaString("+1234.", "5678")) !== Number("1234.5678")) {
+ $ERROR('#4: Number("+1234."+"5678") === Number("1234.5678")');
+}
+
+// CHECK#5
+if (Number(dynaString("+1234.", "5678e90")) !== Number("1234.5678e90")) {
+ $ERROR('#5: Number("+1234."+"5678e90") === Number("1234.5678e90")');
+}
+
+// CHECK#6
+if (Number(dynaString("+1234.", "5678E90")) !== Number("1234.5678E90")) {
+ $ERROR('#6: Number("+1234."+"5678E90") === Number("1234.5678E90")');
+}
+
+// CHECK#7
+if (Number(dynaString("+1234.", "5678e-90")) !== Number("1234.5678e-90")) {
+ $ERROR('#7: Number("+1234."+"5678e-90") === Number("1234.5678e-90")');
+}
+
+// CHECK#8
+if (Number(dynaString("+1234.", "5678E-90")) !== Number("1234.5678E-90")) {
+ $ERROR('#8: Number("+1234."+"5678E-90") === Number("1234.5678E-90")');
+}
+
diff --git a/js/src/tests/test262/ch09/9.3/9.3.1/S9.3.1_A5_T1.js b/js/src/tests/test262/ch09/9.3/9.3.1/S9.3.1_A5_T1.js
new file mode 100644
index 000000000..b6bb8137d
--- /dev/null
+++ b/js/src/tests/test262/ch09/9.3/9.3.1/S9.3.1_A5_T1.js
@@ -0,0 +1,61 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * The MV of StrDecimalLiteral::: - StrUnsignedDecimalLiteral is the negative
+ * of the MV of StrUnsignedDecimalLiteral. (the negative of this 0 is also 0)
+ *
+ * @path ch09/9.3/9.3.1/S9.3.1_A5_T1.js
+ * @description Compare Number('-any_number') with -Number('any_number')
+ */
+
+// CHECK#1
+if (Number("-0") !== -Number("0")) {
+ $ERROR('#1: Number("-0") === -Number("0")');
+} else {
+ // CHECK#2
+ if (1/Number("-0") !== -1/Number("0")) {
+ $ERROR('#2: 1/Number("-0") === -1/Number("0")');
+ }
+}
+
+// CHECK#3
+if (Number("-Infinity") !== -Number("Infinity")) {
+ $ERROR('#3: Number("-Infinity") === -Number("Infinity")');
+}
+
+// CHECK#4
+if (Number("-1234567890") !== -Number("1234567890")) {
+ $ERROR('#4: Number("-1234567890") === -Number("1234567890")');
+}
+
+// CHECK#5
+if (Number("-1234.5678") !== -Number("1234.5678")) {
+ $ERROR('#5: Number("-1234.5678") === -Number("1234.5678")');
+}
+
+// CHECK#6
+if (Number("-1234.5678e90") !== -Number("1234.5678e90")) {
+ $ERROR('#6: Number("-1234.5678e90") === -Number("1234.5678e90")');
+}
+
+// CHECK#7
+if (Number("-1234.5678E90") !== -Number("1234.5678E90")) {
+ $ERROR('#6: Number("-1234.5678E90") === -Number("1234.5678E90")');
+}
+
+// CHECK#8
+if (Number("-1234.5678e-90") !== -Number("1234.5678e-90")) {
+ $ERROR('#6: Number("-1234.5678e-90") === -Number("1234.5678e-90")');
+}
+
+// CHECK#9
+if (Number("-1234.5678E-90") !== -Number("1234.5678E-90")) {
+ $ERROR('#6: Number("-1234.5678E-90") === -Number("1234.5678E-90")');
+}
+
+// CHECK#10
+if (Number("-Infinity") !== Number.NEGATIVE_INFINITY) {
+ $ERROR('#3: Number("-Infinity") === Number.NEGATIVE_INFINITY');
+}
+
diff --git a/js/src/tests/test262/ch09/9.3/9.3.1/S9.3.1_A5_T2.js b/js/src/tests/test262/ch09/9.3/9.3.1/S9.3.1_A5_T2.js
new file mode 100644
index 000000000..47bc6549e
--- /dev/null
+++ b/js/src/tests/test262/ch09/9.3/9.3.1/S9.3.1_A5_T2.js
@@ -0,0 +1,146 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * The MV of StrDecimalLiteral::: - StrUnsignedDecimalLiteral is the negative
+ * of the MV of StrUnsignedDecimalLiteral. (the negative of this 0 is also 0)
+ *
+ * @path ch09/9.3/9.3.1/S9.3.1_A5_T2.js
+ * @description Compare Number('-[or +]any_number') with -[or without -]any_number)
+ */
+
+// CHECK#1
+if (Number("1") !== 1) {
+ $ERROR('#1: Number("1") === 1');
+}
+
+// CHECK#2
+if (Number("+1") !== 1) {
+ $ERROR('#3: Number("+1") === 1');
+}
+
+// CHECK#3
+if (Number("-1") !== -1) {
+ $ERROR('#3: Number("-1") === -1');
+}
+
+// CHECK#4
+if (Number("2") !== 2) {
+ $ERROR('#4: Number("2") === 2');
+}
+
+// CHECK#5
+if (Number("+2") !== 2) {
+ $ERROR('#5: Number("+2") === 2');
+}
+
+// CHECK#6
+if (Number("-2") !== -2) {
+ $ERROR('#6: Number("-2") === -2');
+}
+
+// CHECK#7
+if (Number("3") !== 3) {
+ $ERROR('#7: Number("3") === 3');
+}
+
+// CHECK#8
+if (Number("+3") !== 3) {
+ $ERROR('#8: Number("+3") === 3');
+}
+
+// CHECK#9
+if (Number("-3") !== -3) {
+ $ERROR('#9: Number("-3") === -3');
+}
+
+// CHECK#10
+if (Number("4") !== 4) {
+ $ERROR('#10: Number("4") === 4');
+}
+
+// CHECK#11
+if (Number("+4") !== 4) {
+ $ERROR('#11: Number("+4") === 4');
+}
+
+// CHECK#12
+if (Number("-4") !== -4) {
+ $ERROR('#12: Number("-4") === -4');
+}
+
+// CHECK#13
+if (Number("5") !== 5) {
+ $ERROR('#13: Number("5") === 5');
+}
+
+// CHECK#14
+if (Number("+5") !== 5) {
+ $ERROR('#14: Number("+5") === 5');
+}
+
+// CHECK#15
+if (Number("-5") !== -5) {
+ $ERROR('#15: Number("-5") === -5');
+}
+
+// CHECK#16
+if (Number("6") !== 6) {
+ $ERROR('#16: Number("6") === 6');
+}
+
+// CHECK#17
+if (Number("+6") !== 6) {
+ $ERROR('#17: Number("+6") === 6');
+}
+
+// CHECK#18
+if (Number("-6") !== -6) {
+ $ERROR('#18: Number("-6") === -6');
+}
+
+// CHECK#19
+if (Number("7") !== 7) {
+ $ERROR('#19: Number("7") === 7');
+}
+
+// CHECK#20
+if (Number("+7") !== 7) {
+ $ERROR('#20: Number("+7") === 7');
+}
+
+// CHECK#21
+if (Number("-7") !== -7) {
+ $ERROR('#21: Number("-7") === -7');
+}
+
+// CHECK#22
+if (Number("8") !== 8) {
+ $ERROR('#22: Number("8") === 8');
+}
+
+// CHECK#23
+if (Number("+8") !== 8) {
+ $ERROR('#23: Number("+8") === 8');
+}
+
+// CHECK#24
+if (Number("-8") !== -8) {
+ $ERROR('#24: Number("-8") === -8');
+}
+
+// CHECK#25
+if (Number("9") !== 9) {
+ $ERROR('#25: Number("9") === 9');
+}
+
+// CHECK#26
+if (Number("+9") !== 9) {
+ $ERROR('#26: Number("+9") === 9');
+}
+
+// CHECK#27
+if (Number("-9") !== -9) {
+ $ERROR('#27: Number("-9") === -9');
+}
+
diff --git a/js/src/tests/test262/ch09/9.3/9.3.1/S9.3.1_A5_T3.js b/js/src/tests/test262/ch09/9.3/9.3.1/S9.3.1_A5_T3.js
new file mode 100644
index 000000000..c062e198f
--- /dev/null
+++ b/js/src/tests/test262/ch09/9.3/9.3.1/S9.3.1_A5_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.
+
+/**
+ * The MV of StrDecimalLiteral::: - StrUnsignedDecimalLiteral is the negative
+ * of the MV of StrUnsignedDecimalLiteral. (the negative of this 0 is also 0)
+ *
+ * @path ch09/9.3/9.3.1/S9.3.1_A5_T3.js
+ * @description Compare Number('-' + 'any_number') with -Number('any_number')
+ */
+
+function dynaString(s1, s2){
+ return String(s1)+String(s2);
+}
+
+// CHECK#1
+if (Number(dynaString("-", "0")) !== -Number("0")) {
+ $ERROR('#1: Number("-"+"0") === -Number("0")');
+} else {
+ // CHECK#2
+ if (1/Number(dynaString("-", "0")) !== -1/Number("0")) {
+ $ERROR('#2: 1/Number("-"+"0") === -1/Number("0")');
+ }
+}
+
+// CHECK#3
+if (Number(dynaString("-Infi", "nity")) !== -Number("Infinity")) {
+ $ERROR('#3: Number("-Infi"+"nity") === -Number("Infinity")');
+}
+
+// CHECK#4
+if (Number(dynaString("-12345", "67890")) !== -Number("1234567890")) {
+ $ERROR('#4: Number("-12345"+"67890") === -Number("1234567890")');
+}
+
+// CHECK#5
+if (Number(dynaString("-1234.", "5678")) !== -Number("1234.5678")) {
+ $ERROR('#5: Number("-1234."+"5678") === -Number("1234.5678")');
+}
+
+// CHECK#6
+if (Number(dynaString("-1234.", "5678e90")) !== -Number("1234.5678e90")) {
+ $ERROR('#6: Number("-1234."+"5678e90") === -Number("1234.5678e90")');
+}
+
+// CHECK#7
+if (Number(dynaString("-1234.", "5678E90")) !== -Number("1234.5678E90")) {
+ $ERROR('#6: Number("-1234."+"5678E90") === -Number("1234.5678E90")');
+}
+
+// CHECK#8
+if (Number(dynaString("-1234.", "5678e-90")) !== -Number("1234.5678e-90")) {
+ $ERROR('#6: Number("-1234."+"5678e-90") === -Number("1234.5678e-90")');
+}
+
+// CHECK#9
+if (Number(dynaString("-1234.", "5678E-90")) !== -Number("1234.5678E-90")) {
+ $ERROR('#6: Number("-1234."+"5678E-90") === -Number("1234.5678E-90")');
+}
+
+// CHECK#10
+if (Number(dynaString("-Infi", "nity")) !== Number.NEGATIVE_INFINITY) {
+ $ERROR('#3: Number("-Infi"+"nity") === Number.NEGATIVE_INFINITY');
+}
+
diff --git a/js/src/tests/test262/ch09/9.3/9.3.1/S9.3.1_A6_T1.js b/js/src/tests/test262/ch09/9.3/9.3.1/S9.3.1_A6_T1.js
new file mode 100644
index 000000000..6aeeef242
--- /dev/null
+++ b/js/src/tests/test262/ch09/9.3/9.3.1/S9.3.1_A6_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.
+
+/**
+ * The MV of StrUnsignedDecimalLiteral::: Infinity is 10<sup><small>10000</small></sup>
+ * (a value so large that it will round to <b><tt>+&infin;</tt></b>)
+ *
+ * @path ch09/9.3/9.3.1/S9.3.1_A6_T1.js
+ * @description Compare Number('Infinity') with Number.POSITIVE_INFINITY, 10e10000, 10E10000 and Number("10e10000")
+ */
+
+// CHECK#1
+if (Number("Infinity") !== Number.POSITIVE_INFINITY) {
+ $ERROR('#1: Number("Infinity") === Number.POSITIVE_INFINITY');
+}
+
+// CHECK#2
+if (Number("Infinity") !== 10e10000) {
+ $ERROR('#2: Number("Infinity") === 10e10000');
+}
+
+// CHECK#3
+if (Number("Infinity") !== 10E10000) {
+ $ERROR('#3: Number("Infinity") === 10E10000');
+}
+
+// CHECK#4
+if (Number("Infinity") !== Number("10e10000")) {
+ $ERROR('#4: Number("Infinity") === Number("10e10000")');
+}
+
diff --git a/js/src/tests/test262/ch09/9.3/9.3.1/S9.3.1_A6_T2.js b/js/src/tests/test262/ch09/9.3/9.3.1/S9.3.1_A6_T2.js
new file mode 100644
index 000000000..9e4659873
--- /dev/null
+++ b/js/src/tests/test262/ch09/9.3/9.3.1/S9.3.1_A6_T2.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.
+
+/**
+ * The MV of StrUnsignedDecimalLiteral::: Infinity is 10<sup><small>10000</small></sup>
+ * (a value so large that it will round to <b><tt>+&infin;</tt></b>)
+ *
+ * @path ch09/9.3/9.3.1/S9.3.1_A6_T2.js
+ * @description Compare Number('Infi'+'nity') with Number.POSITIVE_INFINITY, 10e10000, 10E10000 and Number("10e10000")
+ */
+
+function dynaString(s1, s2){
+ return String(s1)+String(s2);
+}
+
+
+// CHECK#1
+if (Number(dynaString("Infi", "nity")) !== Number.POSITIVE_INFINITY) {
+ $ERROR('#1: Number("Infi"+"nity") === Number.POSITIVE_INFINITY');
+}
+
+// CHECK#2
+if (Number(dynaString("Infi", "nity")) !== 10e10000) {
+ $ERROR('#2: Number("Infi"+"nity") === 10e10000');
+}
+
+// CHECK#3
+if (Number(dynaString("Infi", "nity")) !== 10E10000) {
+ $ERROR('#3: Number("Infi"+"nity") === 10E10000');
+}
+
+// CHECK#4
+if (Number(dynaString("Infi", "nity")) !== Number("10e10000")) {
+ $ERROR('#4: Number("Infi"+"nity") === Number("10e10000")');
+}
+
diff --git a/js/src/tests/test262/ch09/9.3/9.3.1/S9.3.1_A7.js b/js/src/tests/test262/ch09/9.3/9.3.1/S9.3.1_A7.js
new file mode 100644
index 000000000..50a7f357f
--- /dev/null
+++ b/js/src/tests/test262/ch09/9.3/9.3.1/S9.3.1_A7.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.
+
+/**
+ * The MV of StrUnsignedDecimalLiteral::: DecimalDigits. DecimalDigits
+ * is the MV of the first DecimalDigits plus the MV of the second DecimalDigits times
+ * 10<sup><small>-n</small></sup>, where n is the number of characters in the second DecimalDigits
+ *
+ * @path ch09/9.3/9.3.1/S9.3.1_A7.js
+ * @description Compare Number('1234.5678') with Number('1234')+(+('5678')*1e-4)
+ */
+
+// CHECK#1
+if (Number("1234.5678") !== Number("1234")+(+("5678")*1e-4)) {
+ $ERROR('#1: Number("1234.5678") === Number("1234")+(+("5678")*1e-4)');
+}
+
diff --git a/js/src/tests/test262/ch09/9.3/9.3.1/S9.3.1_A8.js b/js/src/tests/test262/ch09/9.3/9.3.1/S9.3.1_A8.js
new file mode 100644
index 000000000..6b7a5d4a3
--- /dev/null
+++ b/js/src/tests/test262/ch09/9.3/9.3.1/S9.3.1_A8.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.
+
+/**
+ * The MV of StrUnsignedDecimalLiteral::: DecimalDigits. ExponentPart
+ * is the MV of DecimalDigits times 10<sup><small>e</small></sup> , where e is the MV of ExponentPart
+ *
+ * @path ch09/9.3/9.3.1/S9.3.1_A8.js
+ * @description Compare Number('1234e5') and Number('1234.e5') with Number('1234')*1e5
+ */
+
+// CHECK#1
+if (Number("1234e5") !== Number("1234")*1e5) {
+ $ERROR('#1: Number("1234e5") === Number("1234")*1e5');
+}
+
+// CHECK#2
+if (Number("1234.e5") !== +("1234")*1e5) {
+ $ERROR('#2: Number("1234.e5") === +("1234")*1e5');
+}
+
diff --git a/js/src/tests/test262/ch09/9.3/9.3.1/S9.3.1_A9.js b/js/src/tests/test262/ch09/9.3/9.3.1/S9.3.1_A9.js
new file mode 100644
index 000000000..1c88a5322
--- /dev/null
+++ b/js/src/tests/test262/ch09/9.3/9.3.1/S9.3.1_A9.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.
+
+/**
+ * The MV of StrUnsignedDecimalLiteral::: DecimalDigits. DecimalDigits ExponentPart
+ * is (the MV of the first DecimalDigits plus (the MV of the second DecimalDigits times
+ * 10<sup><small>-n</small></sup>)) times 10<sup><small>e</small></sup>, where n is the number
+ * of characters in the second DecimalDigits and e is the MV of ExponentPart
+ *
+ * @path ch09/9.3/9.3.1/S9.3.1_A9.js
+ * @description Compare Number('1234.5678e9') with (Number('1234')+(Number('5678')*1e-4))*1e9,
+ * and +('1234.5678e-9') with (Number('1234')+(Number('5678')*1e-4))*1e-9
+ */
+
+// CHECK#1
+if (Number("1234.5678e9") !== (Number("1234")+(Number("5678")*1e-4))*1e9) {
+ $ERROR('#1: Number("1234.5678e9") === (Number("1234")+(Number("5678")*1e-4))*1e9');
+}
+
+// CHECK#2
+if (+("1234.5678e-9") !== (Number("1234")+(Number("5678")*1e-4))*1e-9) {
+ $ERROR('#2: +("1234.5678e-9") === (Number("1234")+(Number("5678")*1e-4))*1e-9');
+}
+
diff --git a/js/src/tests/test262/ch09/9.3/9.3.1/browser.js b/js/src/tests/test262/ch09/9.3/9.3.1/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch09/9.3/9.3.1/browser.js
diff --git a/js/src/tests/test262/ch09/9.3/9.3.1/shell.js b/js/src/tests/test262/ch09/9.3/9.3.1/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch09/9.3/9.3.1/shell.js
diff --git a/js/src/tests/test262/ch09/9.3/S9.3_A1_T1.js b/js/src/tests/test262/ch09/9.3/S9.3_A1_T1.js
new file mode 100644
index 000000000..bd7869f1e
--- /dev/null
+++ b/js/src/tests/test262/ch09/9.3/S9.3_A1_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.
+
+/**
+ * Result of number conversion from undefined value is NaN
+ *
+ * @path ch09/9.3/S9.3_A1_T1.js
+ * @description Undefined convert to Number by explicit transformation
+ */
+
+// CHECK#1
+if (isNaN(Number(undefined)) !== true) {
+ $ERROR('#1: Number(undefined) === Not-a-Number. Actual: ' + (Number(undefined)));
+}
+
+// CHECK#2
+if (isNaN(Number(void 0)) !== true) {
+ $ERROR('#2: Number(void 0) === Not-a-Number. Actual: ' + (Number(void 0)));
+}
+
+// CHECK#3
+if (isNaN(Number(eval("var x"))) !== true) {
+ $ERROR('#3: Number(eval("var x")) === Not-a-Number. Actual: ' + (Number(eval("var x"))));
+}
+
diff --git a/js/src/tests/test262/ch09/9.3/S9.3_A1_T2.js b/js/src/tests/test262/ch09/9.3/S9.3_A1_T2.js
new file mode 100644
index 000000000..930e96919
--- /dev/null
+++ b/js/src/tests/test262/ch09/9.3/S9.3_A1_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.
+
+/**
+ * Result of number conversion from undefined value is NaN
+ *
+ * @path ch09/9.3/S9.3_A1_T2.js
+ * @description Undefined convert to Number by implicit transformation
+ */
+
+// CHECK#1
+if (isNaN(+(undefined)) !== true) {
+ $ERROR('#1: +(undefined) === Not-a-Number. Actual: ' + (+(undefined)));
+}
+
+// CHECK#2
+if (isNaN(+(void 0)) !== true) {
+ $ERROR('#2: +(void 0) === Not-a-Number. Actual: ' + (+(void 0)));
+}
+
+// CHECK#3
+if (isNaN(+(eval("var x"))) !== true) {
+ $ERROR('#3: +(eval("var x")) === Not-a-Number. Actual: ' + (+(eval("var x"))));
+}
+
diff --git a/js/src/tests/test262/ch09/9.3/S9.3_A2_T1.js b/js/src/tests/test262/ch09/9.3/S9.3_A2_T1.js
new file mode 100644
index 000000000..2be743bc7
--- /dev/null
+++ b/js/src/tests/test262/ch09/9.3/S9.3_A2_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.
+
+/**
+ * Result of number conversion from null value is +0
+ *
+ * @path ch09/9.3/S9.3_A2_T1.js
+ * @description null convert to Number by explicit transformation
+ */
+
+// CHECK #1
+if (Number(null) !== 0) {
+ $ERROR('#1.1: Number(null) === 0. Actual: ' + (Number(null)));
+} else {
+ if (1/Number(null) !== Number.POSITIVE_INFINITY) {
+ $ERROR('#1.2: Number(null) === +0. Actual: -0');
+ }
+}
+
diff --git a/js/src/tests/test262/ch09/9.3/S9.3_A2_T2.js b/js/src/tests/test262/ch09/9.3/S9.3_A2_T2.js
new file mode 100644
index 000000000..ce035b90a
--- /dev/null
+++ b/js/src/tests/test262/ch09/9.3/S9.3_A2_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.
+
+/**
+ * Result of number conversion from null value is +0
+ *
+ * @path ch09/9.3/S9.3_A2_T2.js
+ * @description null convert to Number by implicit transformation
+ */
+
+// CHECK #1
+if (+(null) !== 0) {
+ $ERROR('#1.1: +(null) === 0. Actual: ' + (+(null)));
+} else {
+ if (1/+(null) !== Number.POSITIVE_INFINITY) {
+ $ERROR('#1.2: +(null) === +0. Actual: -0');
+ }
+}
+
diff --git a/js/src/tests/test262/ch09/9.3/S9.3_A3_T1.js b/js/src/tests/test262/ch09/9.3/S9.3_A3_T1.js
new file mode 100644
index 000000000..1feee2b6b
--- /dev/null
+++ b/js/src/tests/test262/ch09/9.3/S9.3_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.
+
+/**
+ * Result of number conversion from boolean value is 1 if the argument is true, else is +0
+ *
+ * @path ch09/9.3/S9.3_A3_T1.js
+ * @description False and true convert to Number by explicit transformation
+ */
+
+// CHECK#1
+if (Number(false) !== +0) {
+ $ERROR('#1.1: Number(false) === 0. Actual: ' + (Number(false)));
+} else {
+ if (1/Number(false) !== Number.POSITIVE_INFINITY) {
+ $ERROR('#1.2: Number(false) === +0. Actual: -0');
+ }
+}
+
+// CHECK#2
+if (Number(true) !== 1) {
+ $ERROR('#2: Number(true) === 1. Actual: ' + (Number(true)));
+}
+
diff --git a/js/src/tests/test262/ch09/9.3/S9.3_A3_T2.js b/js/src/tests/test262/ch09/9.3/S9.3_A3_T2.js
new file mode 100644
index 000000000..4b7f30539
--- /dev/null
+++ b/js/src/tests/test262/ch09/9.3/S9.3_A3_T2.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.
+
+/**
+ * Result of number conversion from boolean value is 1 if the argument is true, else is +0
+ *
+ * @path ch09/9.3/S9.3_A3_T2.js
+ * @description False and true convert to Number by implicit transformation
+ */
+
+// CHECK#1
+if (+(false) !== +0) {
+ $ERROR('#1.1: +(false) === 0. Actual: ' + (+(false)));
+} else {
+ if (1/+(false) !== Number.POSITIVE_INFINITY) {
+ $ERROR('#1.2: +(false) === +0. Actual: -0');
+ }
+}
+
+// CHECK#2
+if (+(true) !== 1) {
+ $ERROR('#2: +(true) === 1. Actual: ' + (+(true)));
+}
+
diff --git a/js/src/tests/test262/ch09/9.3/S9.3_A4.1_T1.js b/js/src/tests/test262/ch09/9.3/S9.3_A4.1_T1.js
new file mode 100644
index 000000000..96d24be9f
--- /dev/null
+++ b/js/src/tests/test262/ch09/9.3/S9.3_A4.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.
+
+/**
+ * Result of number conversion from number value equals to the input argument (no conversion)
+ *
+ * @path ch09/9.3/S9.3_A4.1_T1.js
+ * @description Some numbers including Number.MAX_VALUE and Number.MIN_VALUE are converted to Number with explicit transformation
+ */
+
+// CHECK#1
+if (Number(13) !== 13) {
+ $ERROR('#1: Number(13) === 13. Actual: ' + (Number(13)));
+}
+
+// CHECK#2
+if (Number(-13) !== -13) {
+ $ERROR('#2: Number(-13) === -13. Actual: ' + (Number(-13)));
+}
+
+// CHECK#3
+if (Number(1.3) !== 1.3) {
+ $ERROR('#3: Number(1.3) === 1.3. Actual: ' + (Number(1.3)));
+}
+
+// CHECK#4
+if (Number(-1.3) !== -1.3) {
+ $ERROR('#4: Number(-1.3) === -1.3. Actual: ' + (Number(-1.3)));
+}
+
+// CHECK#5
+if (Number(Number.MAX_VALUE) !== 1.7976931348623157e308) {
+ $ERROR('#5: Number(Number.MAX_VALUE) === 1.7976931348623157e308. Actual: ' + (Number(Number.MAX_VALUE)));
+}
+
+// CHECK#6
+if (Number(Number.MIN_VALUE) !== 5e-324) {
+ $ERROR('#6: Number(Number.MIN_VALUE) === 5e-324. Actual: ' + (Number(Number.MIN_VALUE)));
+}
+
diff --git a/js/src/tests/test262/ch09/9.3/S9.3_A4.1_T2.js b/js/src/tests/test262/ch09/9.3/S9.3_A4.1_T2.js
new file mode 100644
index 000000000..6c1c28b3d
--- /dev/null
+++ b/js/src/tests/test262/ch09/9.3/S9.3_A4.1_T2.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.
+
+/**
+ * Result of number conversion from number value equals to the input argument (no conversion)
+ *
+ * @path ch09/9.3/S9.3_A4.1_T2.js
+ * @description Some numbers including Number.MAX_VALUE and Number.MIN_VALUE are converted to Number with implicit transformation
+ */
+
+// CHECK#1
+if (+(13) !== 13) {
+ $ERROR('#1: +(13) === 13. Actual: ' + (+(13)));
+}
+
+// CHECK#2
+if (+(-13) !== -13) {
+ $ERROR('#2: +(-13) === -13. Actual: ' + (+(-13)));
+}
+
+// CHECK#3
+if (+(1.3) !== 1.3) {
+ $ERROR('#3: +(1.3) === 1.3. Actual: ' + (+(1.3)));
+}
+
+// CHECK#4
+if (+(-1.3) !== -1.3) {
+ $ERROR('#4: +(-1.3) === -1.3. Actual: ' + (+(-1.3)));
+}
+
+// CHECK#5
+if (+(Number.MAX_VALUE) !== 1.7976931348623157e308) {
+ $ERROR('#5: +(Number.MAX_VALUE) === 1.7976931348623157e308. Actual: ' + (+(Number.MAX_VALUE)));
+}
+
+// CHECK#6
+if (+(Number.MIN_VALUE) !== 5e-324) {
+ $ERROR('#6: +(Number.MIN_VALUE) === 5e-324. Actual: ' + (+(Number.MIN_VALUE)));
+}
+
diff --git a/js/src/tests/test262/ch09/9.3/S9.3_A4.2_T1.js b/js/src/tests/test262/ch09/9.3/S9.3_A4.2_T1.js
new file mode 100644
index 000000000..788f20cb9
--- /dev/null
+++ b/js/src/tests/test262/ch09/9.3/S9.3_A4.2_T1.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.
+
+/**
+ * Result of number conversion from number value equals to the input argument (no conversion)
+ *
+ * @path ch09/9.3/S9.3_A4.2_T1.js
+ * @description Number.NaN, +0, -0, Number.POSITIVE_INFINITY, Number.NEGATIVE_INFINITY,
+ * Number.MAX_VALUE and Number.MIN_VALUE convert to Number by explicit transformation
+ */
+
+// CHECK#1
+if (isNaN(Number(Number.NaN)) !== true) {
+ $ERROR('#1: Number(NaN) === Not-a-Number. Actual: ' + (Number(NaN)));
+}
+
+// CHECK#2
+if (Number(+0) !== +0) {
+ $ERROR('#2.1: Number(+0) === 0. Actual: ' + (Number(+0)));
+} else {
+ if (1/Number(+0) !== Number.POSITIVE_INFINITY) {
+ $ERROR('#2.2: Number(+0) === +0. Actual: -0');
+ }
+}
+
+// CHECK#3
+if (Number(-0) !== -0) {
+ $ERROR('#3.1: Number(-0) === 0. Actual: ' + (Number(-0)));
+} else {
+ if (1/Number(-0) !== Number.NEGATIVE_INFINITY) {
+ $ERROR('#3.2: Number(-0) === -0. Actual: +0');
+ }
+}
+
+// CHECK#4
+if (Number(Number.POSITIVE_INFINITY) !== Number.POSITIVE_INFINITY) {
+ $ERROR('#4: Number(+Infinity) === +Infinity. Actual: ' + (Number(+Infinity)));
+}
+
+// CHECK#5
+if (Number(Number.NEGATIVE_INFINITY) !== Number.NEGATIVE_INFINITY) {
+ $ERROR('#5: Number(-Infinity) === -Infinity. Actual: ' + (Number(-Infinity)));
+}
+
+// CHECK#6
+if (Number(Number.MAX_VALUE) !== Number.MAX_VALUE) {
+ $ERROR('#6: Number(Number.MAX_VALUE) === Number.MAX_VALUE. Actual: ' + (Number(Number.MAX_VALUE)));
+}
+
+// CHECK#7
+if (Number(Number.MIN_VALUE) !== Number.MIN_VALUE) {
+ $ERROR('#7: Number(Number.MIN_VALUE) === Number.MIN_VALUE. Actual: ' + (Number(Number.MIN_VALUE)));
+}
+
diff --git a/js/src/tests/test262/ch09/9.3/S9.3_A4.2_T2.js b/js/src/tests/test262/ch09/9.3/S9.3_A4.2_T2.js
new file mode 100644
index 000000000..3e4d8ad4a
--- /dev/null
+++ b/js/src/tests/test262/ch09/9.3/S9.3_A4.2_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.
+
+/**
+ * Result of number conversion from number value equals to the input argument (no conversion)
+ *
+ * @path ch09/9.3/S9.3_A4.2_T2.js
+ * @description Number.NaN, +0, -0, Number.POSITIVE_INFINITY, Number.NEGATIVE_INFINITY,
+ * Number.MAX_VALUE and Number.MIN_VALUE convert to Number by implicit transformation
+ */
+
+// CHECK#1
+if (isNaN(+(Number.NaN)) !== true) {
+ $ERROR('#1: +(NaN) === Not-a-Number. Actual: ' + (+(NaN)));
+}
+
+// CHECK#2
+if (+(+0) !== +0) {
+ $ERROR('#2.1: +(+0) === 0. Actual: ' + (+(+0)));
+} else {
+ if (1/+(+0) !== Number.POSITIVE_INFINITY) {
+ $ERROR('#2.2: +(+0) === +0. Actual: -0');
+ }
+}
+
+// CHECK#3
+if (+(-0) !== -0) {
+ $ERROR('#3.1: +(-0) === 0. Actual: ' + (+(-0)));
+} else {
+ if (1/+(-0) !== Number.NEGATIVE_INFINITY) {
+ $ERROR('#3.2: +(-0) === -0. Actual: +0');
+ }
+}
+
+// CHECK#4
+if (+(Number.POSITIVE_INFINITY) !== Number.POSITIVE_INFINITY) {
+ $ERROR('#4: +(+Infinity) === +Infinity. Actual: ' + (+(+Infinity)));
+}
+
+// CHECK#5
+if (+(Number.NEGATIVE_INFINITY) !== Number.NEGATIVE_INFINITY) {
+ $ERROR('#5: +(-Infinity) === -Infinity. Actual: ' + (+(-Infinity)));
+}
+
+// CHECK#6
+if (+(Number.MAX_VALUE) !== Number.MAX_VALUE) {
+ $ERROR('#6: +(Number.MAX_VALUE) === Number.MAX_VALUE. Actual: ' + (+(Number.MAX_VALUE)));
+}
+
+// CHECK#7
+if (+(Number.MIN_VALUE) !== Number.MIN_VALUE) {
+ $ERROR('#7: +(Number.MIN_VALUE) === Number.MIN_VALUE. Actual: ' + (+(Number.MIN_VALUE)));
+}
+
diff --git a/js/src/tests/test262/ch09/9.3/S9.3_A5_T1.js b/js/src/tests/test262/ch09/9.3/S9.3_A5_T1.js
new file mode 100644
index 000000000..a76f65b1d
--- /dev/null
+++ b/js/src/tests/test262/ch09/9.3/S9.3_A5_T1.js
@@ -0,0 +1,126 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * Result of number conversion from object value is the result
+ * of conversion from primitive value
+ *
+ * @path ch09/9.3/S9.3_A5_T1.js
+ * @description new Number(), new Number(0), new Number(Number.NaN), new Number(null),
+ * new Number(void 0) and others convert to Number by explicit transformation
+ */
+
+// CHECK#1
+if (Number(new Number()) !== 0) {
+ $ERROR('#1: Number(new Number()) === 0. Actual: ' + (Number(new Number())));
+}
+
+// CHECK#2
+if (Number(new Number(0)) !== 0) {
+ $ERROR('#2: Number(new Number(0)) === 0. Actual: ' + (Number(new Number(0))));
+}
+
+// CHECK#3
+if (isNaN(Number(new Number(Number.NaN)) !== true)) {
+ $ERROR('#3: Number(new Number(Number.NaN)) === Not-a-Number. Actual: ' + (Number(new Number(Number.NaN))));
+}
+
+// CHECK#4
+if (Number(new Number(null)) !== 0) {
+ $ERROR('#4.1: Number(new Number(null)) === 0. Actual: ' + (Number(new Number(null))));
+} else {
+ if (1/Number(new Number(null)) !== Number.POSITIVE_INFINITY) {
+ $ERROR('#4.2: Number(new Number(null)) === +0. Actual: -0');
+ }
+}
+
+// CHECK#5
+if (isNaN(Number(new Number(void 0)) !== true)) {
+ $ERROR('#5: Number(new Number(void 0)) === Not-a-Number. Actual: ' + (Number(new Number(void 0))));
+}
+
+// CHECK#6
+if (Number(new Number(true)) !== 1) {
+ $ERROR('#6: Number(new Number(true)) === 1. Actual: ' + (Number(new Number(true))));
+}
+
+// CHECK#7
+if (Number(new Number(false)) !== +0) {
+ $ERROR('#7.1: Number(new Number(false)) === 0. Actual: ' + (Number(new Number(false))));
+} else {
+ if (1/Number(new Number(false)) !== Number.POSITIVE_INFINITY) {
+ $ERROR('#7.2: Number(new Number(false)) === +0. Actual: -0');
+ }
+}
+
+// CHECK#8
+if (Number(new Boolean(true)) !== 1) {
+ $ERROR('#8: Number(new Boolean(true)) === 1. Actual: ' + (Number(new Boolean(true))));
+}
+
+// CHECK#9
+if (Number(new Boolean(false)) !== +0) {
+ $ERROR('#9.1: Number(new Boolean(false)) === 0. Actual: ' + (Number(new Boolean(false))));
+} else {
+ if (1/Number(new Boolean(false)) !== Number.POSITIVE_INFINITY) {
+ $ERROR('#9.2: Number(new Boolean(false)) === +0. Actual: -0');
+ }
+}
+
+// CHECK#10
+if (isNaN(Number(new Array(2,4,8,16,32))) !== true) {
+ $ERROR('#10: Number(new Array(2,4,8,16,32)) === Not-a-Number. Actual: ' + (Number(new Array(2,4,8,16,32))));
+}
+
+// CHECK#11
+var myobj1 = {
+ ToNumber : function(){return 12345;},
+ toString : function(){return "67890";},
+ valueOf : function(){return "[object MyObj]";}
+ };
+
+if (isNaN(Number(myobj1)) !== true){
+ $ERROR("#11: Number(myobj1) calls ToPrimitive with hint Number. Actual: " + (Number(myobj1)));
+}
+
+// CHECK#12
+var myobj2 = {
+ ToNumber : function(){return 12345;},
+ toString : function(){return "67890";},
+ valueOf : function(){return "9876543210";}
+ };
+
+if (Number(myobj2) !== 9876543210){
+ $ERROR("#12: Number(myobj2) calls ToPrimitive with hint Number. Exptected: 9876543210. Actual: " + (Number(myobj2)));
+}
+
+
+// CHECK#13
+var myobj3 = {
+ ToNumber : function(){return 12345;},
+ toString : function(){return "[object MyObj]";}
+ };
+
+if (isNaN(Number(myobj3)) !== true){
+ $ERROR("#13: Number(myobj3) calls ToPrimitive with hint Number. Exptected: Not-a-Number. Actual: " + (Number(myobj3)));
+}
+
+// CHECK#14
+var myobj4 = {
+ ToNumber : function(){return 12345;},
+ toString : function(){return "67890";}
+ };
+
+if (Number(myobj4) !== 67890){
+ $ERROR("#14: Number(myobj4) calls ToPrimitive with hint Number. Exptected: 67890. Actual: " + (Number(myobj4)));
+}
+
+// CHECK#15
+var myobj5 = {
+ ToNumber : function(){return 12345;}
+ };
+
+if (isNaN(Number(myobj5)) !== true){
+ $ERROR("#15: Number(myobj5) calls ToPrimitive with hint Number. Exptected: Not-a-Number. Actual: " + (Number(myobj5)));
+}
+
diff --git a/js/src/tests/test262/ch09/9.3/S9.3_A5_T2.js b/js/src/tests/test262/ch09/9.3/S9.3_A5_T2.js
new file mode 100644
index 000000000..b4ebb5422
--- /dev/null
+++ b/js/src/tests/test262/ch09/9.3/S9.3_A5_T2.js
@@ -0,0 +1,126 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * Result of number conversion from object value is the result
+ * of conversion from primitive value
+ *
+ * @path ch09/9.3/S9.3_A5_T2.js
+ * @description new Number(), new Number(0), new Number(Number.NaN), new Number(null),
+ * new Number(void 0) and others convert to Number by implicit transformation
+ */
+
+// CHECK#1
+if (+(new Number()) !== 0) {
+ $ERROR('#1: +(new Number()) === 0. Actual: ' + (+(new Number())));
+}
+
+// CHECK#2
+if (+(new Number(0)) !== 0) {
+ $ERROR('#2: +(new Number(0)) === 0. Actual: ' + (+(new Number(0))));
+}
+
+// CHECK#3
+if (isNaN(+(new Number(Number.NaN)) !== true)) {
+ $ERROR('#3: +(new Number(Number.NaN)) === Not-a-Number. Actual: ' + (+(new Number(Number.NaN))));
+}
+
+// CHECK#4
+if (+(new Number(null)) !== 0) {
+ $ERROR('#4.1: +(new Number(null)) === 0. Actual: ' + (+(new Number(null))));
+} else {
+ if (1/+(new Number(null)) !== Number.POSITIVE_INFINITY) {
+ $ERROR('#4.2: +(new Number(null)) === +0. Actual: -0');
+ }
+}
+
+// CHECK#5
+if (isNaN(+(new Number(void 0)) !== true)) {
+ $ERROR('#5: +(new Number(void 0)) === Not-a-Number. Actual: ' + (+(new Number(void 0))));
+}
+
+// CHECK#6
+if (+(new Number(true)) !== 1) {
+ $ERROR('#6: +(new Number(true)) === 1. Actual: ' + (+(new Number(true))));
+}
+
+// CHECK#7
+if (+(new Number(false)) !== +0) {
+ $ERROR('#7.1: +(new Number(false)) === 0. Actual: ' + (+(new Number(false))));
+} else {
+ if (1/+(new Number(false)) !== Number.POSITIVE_INFINITY) {
+ $ERROR('#7.2: +(new Number(false)) === +0. Actual: -0');
+ }
+}
+
+// CHECK#8
+if (+(new Boolean(true)) !== 1) {
+ $ERROR('#8: +(new Boolean(true)) === 1. Actual: ' + (+(new Boolean(true))));
+}
+
+// CHECK#9
+if (+(new Boolean(false)) !== +0) {
+ $ERROR('#9.1: +(new Boolean(false)) === 0. Actual: ' + (+(new Boolean(false))));
+} else {
+ if (1/+(new Boolean(false)) !== Number.POSITIVE_INFINITY) {
+ $ERROR('#9.2: +(new Boolean(false)) === +0. Actual: -0');
+ }
+}
+
+// CHECK#10
+if (isNaN(+(new Array(2,4,8,16,32))) !== true) {
+ $ERROR('#10: +(new Array(2,4,8,16,32)) === Not-a-Number. Actual: ' + (+(new Array(2,4,8,16,32))));
+}
+
+// CHECK#11
+var myobj1 = {
+ ToNumber : function(){return 12345;},
+ toString : function(){return "67890";},
+ valueOf : function(){return "[object MyObj]";}
+ };
+
+if (isNaN(+(myobj1)) !== true){
+ $ERROR("#11: +(myobj1) calls ToPrimitive with hint +. Exptected: Not-a-Number. Actual: " + (+(myobj1)));
+}
+
+// CHECK#12
+var myobj2 = {
+ ToNumber : function(){return 12345;},
+ toString : function(){return "67890";},
+ valueOf : function(){return "9876543210";}
+ };
+
+if (+(myobj2) !== 9876543210){
+ $ERROR("#12: +(myobj2) calls ToPrimitive with hint +. Exptected: 9876543210. Actual: " + (+(myobj2)));
+}
+
+
+// CHECK#13
+var myobj3 = {
+ ToNumber : function(){return 12345;},
+ toString : function(){return "[object MyObj]";}
+ };
+
+if (isNaN(+(myobj3)) !== true){
+ $ERROR("#13: +(myobj3) calls ToPrimitive with hint +. Exptected: Not-a-Number. Actual: " + (+(myobj3)));
+}
+
+// CHECK#14
+var myobj4 = {
+ ToNumber : function(){return 12345;},
+ toString : function(){return "67890";}
+ };
+
+if (+(myobj4) !== 67890){
+ $ERROR("#14: +(myobj4) calls ToPrimitive with hint +. Exptected: 67890. Actual: " + (+(myobj4)));
+}
+
+// CHECK#15
+var myobj5 = {
+ ToNumber : function(){return 12345;}
+ };
+
+if (isNaN(+(myobj5)) !== true){
+ $ERROR("#15: +(myobj5) calls ToPrimitive with hint +. Exptected: 12345. Actual: " + (+(myobj5)));
+}
+
diff --git a/js/src/tests/test262/ch09/9.3/browser.js b/js/src/tests/test262/ch09/9.3/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch09/9.3/browser.js
diff --git a/js/src/tests/test262/ch09/9.3/shell.js b/js/src/tests/test262/ch09/9.3/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch09/9.3/shell.js
diff --git a/js/src/tests/test262/ch09/9.4/S9.4_A1.js b/js/src/tests/test262/ch09/9.4/S9.4_A1.js
new file mode 100644
index 000000000..6c1b354c4
--- /dev/null
+++ b/js/src/tests/test262/ch09/9.4/S9.4_A1.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.
+
+/**
+ * If ToNumber(value) is NaN, ToInteger(value) returns +0
+ *
+ * @path ch09/9.4/S9.4_A1.js
+ * @description Check what position is defined by Number.NaN in string "abc": "abc".charAt(Number.NaN)
+ */
+
+// CHECK#1
+if ("abc".charAt(Number.NaN) !== "a") {
+ $ERROR('#1: "abc".charAt(Number.NaN) === "a". Actual: ' + ("abc".charAt(Number.NaN)));
+}
+
+// CHECK#2
+if ("abc".charAt("x") !== "a") {
+ $ERROR('#2: "abc".charAt("x") === "a". Actual: ' + ("abc".charAt("x")));
+}
+
diff --git a/js/src/tests/test262/ch09/9.4/S9.4_A2.js b/js/src/tests/test262/ch09/9.4/S9.4_A2.js
new file mode 100644
index 000000000..6b0ac54ac
--- /dev/null
+++ b/js/src/tests/test262/ch09/9.4/S9.4_A2.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.
+
+/**
+ * If ToNumber(value) is +0, -0, +Infinity, or -Infinity,
+ * return ToNumber(value)
+ *
+ * @path ch09/9.4/S9.4_A2.js
+ * @description Check what position is defined by Number.NaN in string "abc": "abc".charAt(Number.NaN)
+ */
+
+// CHECK#1
+if ("abc".charAt(0.0) !== "a") {
+ $ERROR('#1: "abc".charAt(0.0) === "a". Actual: ' + ("abc".charAt(0.0)));
+}
+
+// CHECK#2
+if ("abc".charAt(-0.0) !== "a") {
+ $ERROR('#2: "abc".charAt(-0.0) === "a". Actual: ' + ("abc".charAt(-0.0)));
+}
+
diff --git a/js/src/tests/test262/ch09/9.4/S9.4_A3_T1.js b/js/src/tests/test262/ch09/9.4/S9.4_A3_T1.js
new file mode 100644
index 000000000..d16c30b38
--- /dev/null
+++ b/js/src/tests/test262/ch09/9.4/S9.4_A3_T1.js
@@ -0,0 +1,83 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * Result of ToInteger(value) conversion is the result of computing
+ * sign(ToNumber(value)) * floor(abs(ToNumber(value)))
+ *
+ * @path ch09/9.4/S9.4_A3_T1.js
+ * @description For testing constructor Date(Number) is used
+ */
+
+// CHECK#1
+var d1 = new Date(6.54321);
+if (d1.valueOf() !== 6) {
+ $ERROR('#1: var d1 = new Date(6.54321); d1.valueOf() === 6;');
+}
+
+// CHECK#2
+var d2 = new Date(-6.54321);
+if (d2.valueOf() !== -6) {
+ $ERROR('#2: var d2 = new Date(-6.54321); d2.valueOf() === -6;');
+}
+
+// CHECK#3
+var d3 = new Date(6.54321e2);
+if (d3.valueOf() !== 654) {
+ $ERROR('#3: var d3 = new Date(6.54321e2); d3.valueOf() === 654;');
+}
+
+// CHECK#4
+var d4 = new Date(-6.54321e2);
+if (d4.valueOf() !== -654) {
+ $ERROR('#4: var d4 = new Date(-6.54321e2); d4.valueOf() === -654;');
+}
+
+// CHECK#5
+var d5 = new Date(0.654321e1);
+if (d5.valueOf() !== 6) {
+ $ERROR('#5: var d5 = new Date(0.654321e1); d5.valueOf() === 6;');
+}
+
+// CHECK#6
+var d6 = new Date(-0.654321e1);
+if (d6.valueOf() !== -6) {
+ $ERROR('#6: var d6 = new Date(-0.654321e1); d6.valueOf() === -6;');
+}
+
+// CHECK#7
+var d7 = new Date(true);
+if (d7.valueOf() !== 1) {
+ $ERROR('#7: var d7 = new Date(true); d7.valueOf() === 1;');
+}
+
+// CHECK#8
+var d8 = new Date(false);
+if (d8.valueOf() !== 0) {
+ $ERROR('#8: var d8 = new Date(false); d8.valueOf() === 0;');
+}
+
+// CHECK#9
+var d9 = new Date(1.23e15);
+if (d9.valueOf() !== 1.23e15) {
+ $ERROR('#9: var d9 = new Date(1.23e15); d9.valueOf() === 1.23e15;');
+}
+
+// CHECK#10
+var d10 = new Date(-1.23e15);
+if (d10.valueOf() !== -1.23e15) {
+ $ERROR('#10: var d10 = new Date(-1.23e15); d10.valueOf() === -1.23e15;');
+}
+
+// CHECK#11
+var d11 = new Date(1.23e-15);
+if (d11.valueOf() !== 0) {
+ $ERROR('#11: var d11 = new Date(1.23e-15); d11.valueOf() === 0;');
+}
+
+// CHECK#12
+var d12 = new Date(-1.23e-15);
+if (d12.valueOf() !== -0) {
+ $ERROR('#12: var d12 = new Date(-1.23e-15); d12.valueOf() === -0;');
+}
+
diff --git a/js/src/tests/test262/ch09/9.4/S9.4_A3_T2.js b/js/src/tests/test262/ch09/9.4/S9.4_A3_T2.js
new file mode 100644
index 000000000..f3a9796e8
--- /dev/null
+++ b/js/src/tests/test262/ch09/9.4/S9.4_A3_T2.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.
+
+/**
+ * Result of ToInteger(value) conversion is the result of computing
+ * sign(ToNumber(value)) * floor(abs(ToNumber(value)))
+ *
+ * @path ch09/9.4/S9.4_A3_T2.js
+ * @description For testing constructor Date(NaN, Infinity, Infinity, +0 and -0) is used
+ */
+
+// CHECK#1
+var d1 = new Date(Number.NaN);
+if (!isNaN(d1.valueOf())) {
+ $ERROR('#1: var d1 = new Date(Number.NaN); d1.valueOf() === Number.NaN;');
+}
+
+// CHECK#2
+var d2 = new Date(Infinity);
+if (!isNaN(d2.valueOf())) {
+ $ERROR('#2: var d2 = new Date(Infinity); d2.valueOf() === Number.NaN;');
+}
+
+// CHECK#3
+var d3 = new Date(-Infinity);
+if (!isNaN(d3.valueOf())) {
+ $ERROR('#3: var d3 = new Date(-Infinity); d3.valueOf() === Number.NaN;');
+}
+
+// CHECK#4
+var d4 = new Date(0);
+if (d4.valueOf() !== 0) {
+ $ERROR('#4: var d4 = new Date(0); d4.valueOf() === 0;');
+}
+
+// CHECK#5
+var d5 = new Date(-0);
+if (d5.valueOf() !== -0) {
+ $ERROR('#5: var d5 = new Date(-0); d5.valueOf() === -0;');
+}
+
diff --git a/js/src/tests/test262/ch09/9.4/browser.js b/js/src/tests/test262/ch09/9.4/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch09/9.4/browser.js
diff --git a/js/src/tests/test262/ch09/9.4/shell.js b/js/src/tests/test262/ch09/9.4/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch09/9.4/shell.js
diff --git a/js/src/tests/test262/ch09/9.5/S9.5_A1_T1.js b/js/src/tests/test262/ch09/9.5/S9.5_A1_T1.js
new file mode 100644
index 000000000..76296a3a9
--- /dev/null
+++ b/js/src/tests/test262/ch09/9.5/S9.5_A1_T1.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.
+
+/**
+ * If value is NaN, +0, -0, +Infinity, or -Infinity, return +0
+ *
+ * @path ch09/9.5/S9.5_A1_T1.js
+ * @description For testing use operator <<0
+ */
+
+// CHECK#1
+if ((Number.NaN << 0) !== +0) {
+ $ERROR('#1.1: (Number.NaN << 0) === 0. Actual: ' + ((Number.NaN << 0)));
+} else if (1/(Number.NaN << 0) !== Number.POSITIVE_INFINITY) {
+ $ERROR('#1.2: (Number.NaN << 0) === +0. Actual: -0');
+}
+
+// CHECK#2
+if ((Number("abc") << 0) !== +0) {
+ $ERROR('#2.1: (Number("abc") << 0) === 0. Actual: ' + ((Number("abc") << 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");
+} else if (1/(-0 << 0) !== Number.POSITIVE_INFINITY) {
+ $ERROR("#4.2: (-0 << 0) === +0. Actual: -0");
+}
+
+// CHECK#5
+if ((Number.POSITIVE_INFINITY << 0) !== +0) {
+ $ERROR('#5.1: (Number.POSITIVE_INFINITY << 0) === 0. Actual: ' + ((Number.POSITIVE_INFINITY << 0)));
+} else if (1/(Number.POSITIVE_INFINITY << 0) !== Number.POSITIVE_INFINITY) {
+ $ERROR('#5.2: (Number.POSITIVE_INFINITY << 0) === +0. Actual: -0');
+}
+
+// CHECK#6
+if ((Number.NEGATIVE_INFINITY << 0) !== +0) {
+ $ERROR("#6.1: (Number.NEGATIVE_INFINITY << 0) === 0");
+} else if (1/(Number.NEGATIVE_INFINITY << 0) !== Number.POSITIVE_INFINITY) {
+ $ERROR("#6.2: (Number.NEGATIVE_INFINITY << 0) === +0. Actual: -0");
+}
+
diff --git a/js/src/tests/test262/ch09/9.5/S9.5_A2.1_T1.js b/js/src/tests/test262/ch09/9.5/S9.5_A2.1_T1.js
new file mode 100644
index 000000000..943425e85
--- /dev/null
+++ b/js/src/tests/test262/ch09/9.5/S9.5_A2.1_T1.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.
+
+/**
+ * ToInt32 returns values between -2^31 and 2^31-1
+ *
+ * @path ch09/9.5/S9.5_A2.1_T1.js
+ * @description Converting some numbers, which are in\outside of Int32 scopes, with <<0 operator
+ */
+
+// CHECK#1
+if ((-2147483647 << 0) !== -2147483647) {
+ $ERROR('#1: (-2147483647 << 0) === -2147483647. Actual: ' + ((-2147483647 << 0)));
+}
+
+// CHECK#2
+if ((-2147483648 << 0) !== -2147483648) {
+ $ERROR('#2: (-2147483648 << 0) === -2147483648. Actual: ' + ((-2147483648 << 0)));
+}
+
+// CHECK#3
+if ((-2147483649 << 0) !== 2147483647) {
+ $ERROR('#3: (-2147483649 << 0) === 2147483647. Actual: ' + ((-2147483649 << 0)));
+}
+
+// CHECK#4
+if ((-4294967296 << 0) !== 0) {
+ $ERROR('#4: (-4294967296 << 0) === 0. Actual: ' + ((-4294967296 << 0)));
+}
+
+// CHECK#5
+if ((2147483646 << 0) !== 2147483646) {
+ $ERROR('#5: (2147483646 << 0) === 2147483646. Actual: ' + ((2147483646 << 0)));
+}
+
+// CHECK#6
+if ((2147483647 << 0) !== 2147483647) {
+ $ERROR('#6: (2147483647 << 0) === 2147483647. Actual: ' + ((2147483647 << 0)));
+}
+
+// CHECK#7
+if ((2147483648 << 0) !== -2147483648) {
+ $ERROR('#7: (2147483648 << 0) === -2147483648. Actual: ' + ((2147483648 << 0)));
+}
+
+// CHECK#8
+if ((4294967296 << 0) !== 0) {
+ $ERROR('#8: (4294967296 << 0) === 0. Actual: ' + ((4294967296 << 0)));
+}
+
diff --git a/js/src/tests/test262/ch09/9.5/S9.5_A2.1_T2.js b/js/src/tests/test262/ch09/9.5/S9.5_A2.1_T2.js
new file mode 100644
index 000000000..9037035c8
--- /dev/null
+++ b/js/src/tests/test262/ch09/9.5/S9.5_A2.1_T2.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.
+
+/**
+ * ToInt32 returns values between -2^31 and 2^31-1
+ *
+ * @path ch09/9.5/S9.5_A2.1_T2.js
+ * @description Converting some numbers, which are in\outside of Int32 scopes, with ~ operator
+ */
+
+// CHECK#1
+if (~-2147483649 !== ~2147483647) {
+ $ERROR('#1: ~-2147483649 === ~2147483647');
+}
+
+// CHECK#2
+if (~-4294967296 !== ~0) {
+ $ERROR('#2: ~-4294967296 === ~0');
+}
+
+// CHECK#3
+if (~2147483648 !== ~-2147483648) {
+ $ERROR('#3: ~2147483648 === ~-2147483648');
+}
+
+// CHECK#4
+if (~4294967296 !== ~0) {
+ $ERROR('#4: ~4294967296 === ~0');
+}
+
diff --git a/js/src/tests/test262/ch09/9.5/S9.5_A2.2_T1.js b/js/src/tests/test262/ch09/9.5/S9.5_A2.2_T1.js
new file mode 100644
index 000000000..e8c454498
--- /dev/null
+++ b/js/src/tests/test262/ch09/9.5/S9.5_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.
+
+/**
+ * Compute result modulo 2^32
+ *
+ * @path ch09/9.5/S9.5_A2.2_T1.js
+ * @description Use operator <<0
+ */
+
+// CHECK#1
+if ((-2147483647 << 0) !== -2147483647) {
+ $ERROR('#1: (-2147483647 << 0) === -2147483647. Actual: ' + ((-2147483647 << 0)));
+}
+
+// CHECK#2
+if ((-2147483648 << 0) !== -2147483648) {
+ $ERROR('#2: (-2147483648 << 0) === -2147483648. Actual: ' + ((-2147483648 << 0)));
+}
+
+// CHECK#3
+if ((-2147483649 << 0) !== 2147483647) {
+ $ERROR('#3: (-2147483649 << 0) === 2147483647. Actual: ' + ((-2147483649 << 0)));
+}
+
+// CHECK#4
+if ((4294967295 << 0) !== -1) {
+ $ERROR('#4: (4294967295 << 0) === -1. Actual: ' + ((4294967295 << 0)));
+}
+
+// CHECK#5
+if ((4294967296 << 0) !== 0) {
+ $ERROR('#5: (4294967296 << 0) === 0. Actual: ' + ((4294967296 << 0)));
+}
+
+// CHECK#6
+if ((4294967297 << 0) !== 1) {
+ $ERROR('#6: (4294967297 << 0) === 1. Actual: ' + ((4294967297 << 0)));
+}
+
+// CHECK#7
+if ((-4294967295 << 0) !== 1) {
+ $ERROR('#7: (-4294967295 << 0) === 1. Actual: ' + ((-4294967295 << 0)));
+}
+
+// CHECK#8
+if ((-4294967296 << 0) !== 0) {
+ $ERROR('#8: (-4294967296 << 0) === 0. Actual: ' + ((-4294967296 << 0)));
+}
+
+// CHECK#9
+if ((-4294967297 << 0) !== -1) {
+ $ERROR('#9: (-4294967297 << 0) === -1. Actual: ' + ((-4294967297 << 0)));
+}
+
+// CHECK#10
+if ((8589934591 << 0) !== -1) {
+ $ERROR('#10: (8589934591 << 0) === -1. Actual: ' + ((8589934591 << 0)));
+}
+
+// CHECK#11
+if ((8589934592 << 0) !== 0) {
+ $ERROR('#11: (8589934592 << 0) === 0. Actual: ' + ((8589934592 << 0)));
+}
+
+// CHECK#12
+if ((8589934593 << 0) !== 1) {
+ $ERROR('#12: (8589934593 << 0) === 1. Actual: ' + ((8589934593 << 0)));
+}
+
diff --git a/js/src/tests/test262/ch09/9.5/S9.5_A2.2_T2.js b/js/src/tests/test262/ch09/9.5/S9.5_A2.2_T2.js
new file mode 100644
index 000000000..a138d03d7
--- /dev/null
+++ b/js/src/tests/test262/ch09/9.5/S9.5_A2.2_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.
+
+/**
+ * Compute result modulo 2^32
+ *
+ * @path ch09/9.5/S9.5_A2.2_T2.js
+ * @description Use operator ~
+ */
+
+// CHECK#1
+if (~-2147483647 !== 2147483646) {
+ $ERROR('#1: ~-2147483647 === 2147483646)');
+}
+
+// CHECK#2
+if (~-2147483648 !== ~-2147483648) {
+ $ERROR('#2: ~-2147483648 ==== ~-2147483648)');
+}
+
+// CHECK#3
+if (~-2147483649 !== ~2147483647) {
+ $ERROR('#3: ~-2147483649 ==== ~2147483647)');
+}
+
+// CHECK#4
+if ((~4294967295 << 0) !== ~-1) {
+ $ERROR('#4: (~4294967295 << 0) === ~-1)');
+}
+
+// CHECK#5
+if ((~4294967296 << 0) !== ~0) {
+ $ERROR('#5: (~4294967296 << 0) === ~0)');
+}
+
+// CHECK#6
+if ((~4294967297 << 0) !== ~1) {
+ $ERROR('#6: (~4294967297 << 0) === ~1)');
+}
+
+// CHECK#7
+if ((~-4294967295 << 0) !== ~1) {
+ $ERROR('#7: (~-4294967295 << 0) === ~1)');
+}
+
+// CHECK#8
+if ((~-4294967296 << 0) !== ~0) {
+ $ERROR('#8: (~-4294967296 << 0) === ~0)');
+}
+
+// CHECK#9
+if ((~-4294967297 << 0) !== ~-1) {
+ $ERROR('#9: (~-4294967297 << 0) === ~-1)');
+}
+
+// CHECK#10
+if ((~8589934591 << 0) !== ~-1) {
+ $ERROR('#10: (~8589934591 << 0) === ~-1)');
+}
+
+// CHECK#11
+if ((~8589934592 << 0) !== ~0) {
+ $ERROR('#11: (~8589934592 << 0) === ~0)');
+}
+
+// CHECK#12
+if ((~8589934593 << 0) !== ~1) {
+ $ERROR('#12: (~8589934593 << 0) === ~1)');
+}
+
diff --git a/js/src/tests/test262/ch09/9.5/S9.5_A2.3_T1.js b/js/src/tests/test262/ch09/9.5/S9.5_A2.3_T1.js
new file mode 100644
index 000000000..af0e3702e
--- /dev/null
+++ b/js/src/tests/test262/ch09/9.5/S9.5_A2.3_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.
+
+/**
+ * If result is greater than or equal to 2^31, return result -2^32
+ *
+ * @path ch09/9.5/S9.5_A2.3_T1.js
+ * @description Use operator <<0
+ */
+
+// CHECK#1
+if ((2147483647 << 0) !== 2147483647) {
+ $ERROR('#1: (2147483647 << 0) === 2147483647. Actual: ' + ((2147483647 << 0)));
+}
+
+// CHECK#2
+if ((2147483648 << 0) !== -2147483648) {
+ $ERROR('#2: (2147483648 << 0) === -2147483648. Actual: ' + ((2147483648 << 0)));
+}
+
+// CHECK#3
+if ((2147483649 << 0) !== -2147483647) {
+ $ERROR('#3: (2147483649 << 0) === -2147483647. Actual: ' + ((2147483649 << 0)));
+}
+
+// CHECK#4
+if ((4294967295 << 0) !== -1) {
+ $ERROR('#4: (4294967295 << 0) === -1. Actual: ' + ((4294967295 << 0)));
+}
+
+// CHECK#5
+if ((4294967296 << 0) !== 0) {
+ $ERROR('#5: (4294967296 << 0) === 0. Actual: ' + ((4294967296 << 0)));
+}
+
+// CHECK#6
+if ((4294967297 << 0) !== 1) {
+ $ERROR('#6: (4294967297 << 0) === 1. Actual: ' + ((4294967297 << 0)));
+}
+
+
+
diff --git a/js/src/tests/test262/ch09/9.5/S9.5_A2.3_T2.js b/js/src/tests/test262/ch09/9.5/S9.5_A2.3_T2.js
new file mode 100644
index 000000000..70c23270b
--- /dev/null
+++ b/js/src/tests/test262/ch09/9.5/S9.5_A2.3_T2.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.
+
+/**
+ * If result is greater than or equal to 2^31, return result -2^32
+ *
+ * @path ch09/9.5/S9.5_A2.3_T2.js
+ * @description Use operator ~
+ */
+
+// CHECK#1
+if (~2147483647 !== -2147483648) {
+ $ERROR('#1: ~2147483647 ==== -2147483648)');
+}
+
+// CHECK#2
+if (~2147483648 !== ~-2147483648) {
+ $ERROR('#2: ~2147483648 ==== ~-2147483648)');
+}
+
+// CHECK#3
+if (~2147483649 !== ~-2147483647) {
+ $ERROR('#3: ~2147483649 ==== ~-2147483647)');
+}
+
+// CHECK#4
+if (~4294967295 !== ~-1) {
+ $ERROR('#4: ~4294967295 ==== ~-1)');
+}
+
+// CHECK#5
+if (~4294967296 !== ~0) {
+ $ERROR('#5: ~4294967296 ==== ~0)');
+}
+
+// CHECK#6
+if (~4294967297 !== ~1) {
+ $ERROR('#6: ~4294967297 ==== ~1)');
+}
+
diff --git a/js/src/tests/test262/ch09/9.5/S9.5_A3.1_T1.js b/js/src/tests/test262/ch09/9.5/S9.5_A3.1_T1.js
new file mode 100644
index 000000000..ea9cc2048
--- /dev/null
+++ b/js/src/tests/test262/ch09/9.5/S9.5_A3.1_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.
+
+/**
+ * Operator uses ToNumber
+ *
+ * @path ch09/9.5/S9.5_A3.1_T1.js
+ * @description Type(x) is Boolean
+ */
+
+// CHECK#1
+if ((new Boolean(true) << 0) !== 1) {
+ $ERROR('#1: (new Boolean(true) << 0) === 1. Actual: ' + ((new Boolean(true) << 0)));
+}
+
+// CHECK#2
+if ((false << 0) !== 0) {
+ $ERROR('#2: (false << 0) === 0. Actual: ' + ((false << 0)));
+}
+
diff --git a/js/src/tests/test262/ch09/9.5/S9.5_A3.1_T2.js b/js/src/tests/test262/ch09/9.5/S9.5_A3.1_T2.js
new file mode 100644
index 000000000..0a8769ba8
--- /dev/null
+++ b/js/src/tests/test262/ch09/9.5/S9.5_A3.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.
+
+/**
+ * Operator uses ToNumber
+ *
+ * @path ch09/9.5/S9.5_A3.1_T2.js
+ * @description Type(x) is Number
+ */
+
+// CHECK#1
+if ((new Number(1) << 0) !== 1) {
+ $ERROR('#1: (new Number(1) << 0) === 1. Actual: ' + ((new Number(1) << 0)));
+}
+
+// CHECK#2
+if ((-1.234 << 0) !== -1) {
+ $ERROR('#2: (-1.234 << 0) === -1. Actual: ' + ((-1.234 << 0)));
+}
+
diff --git a/js/src/tests/test262/ch09/9.5/S9.5_A3.1_T3.js b/js/src/tests/test262/ch09/9.5/S9.5_A3.1_T3.js
new file mode 100644
index 000000000..5886b0daf
--- /dev/null
+++ b/js/src/tests/test262/ch09/9.5/S9.5_A3.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.
+
+/**
+ * Operator uses ToNumber
+ *
+ * @path ch09/9.5/S9.5_A3.1_T3.js
+ * @description Type(x) is String
+ */
+
+// CHECK#1
+if ((new String(1) << 0) !== 1) {
+ $ERROR('#1: (new String(1) << 0) === 1. Actual: ' + ((new String(1) << 0)));
+}
+
+// CHECK#2
+if (("-1.234" << 0) !== -1) {
+ $ERROR('#2: ("-1.234" << 0) === -1. Actual: ' + (("-1.234" << 0)));
+}
+
diff --git a/js/src/tests/test262/ch09/9.5/S9.5_A3.1_T4.js b/js/src/tests/test262/ch09/9.5/S9.5_A3.1_T4.js
new file mode 100644
index 000000000..a4a701fc5
--- /dev/null
+++ b/js/src/tests/test262/ch09/9.5/S9.5_A3.1_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.
+
+/**
+ * Operator uses ToNumber
+ *
+ * @path ch09/9.5/S9.5_A3.1_T4.js
+ * @description Type(x) is Object
+ */
+
+//CHECK#1
+var object = {valueOf: function() {return 1}};
+if (~object !== ~1) {
+ $ERROR('#1: var object = {valueOf: function() {return 1}}; ~object === ~1');
+}
+
+//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');
+}
+
+//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');
+}
+
+//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');
+ }
+}
+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');
+}
+
+//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');
+}
+
+//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/js/src/tests/test262/ch09/9.5/S9.5_A3.2_T1.js b/js/src/tests/test262/ch09/9.5/S9.5_A3.2_T1.js
new file mode 100644
index 000000000..6a53855b4
--- /dev/null
+++ b/js/src/tests/test262/ch09/9.5/S9.5_A3.2_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.
+
+/**
+ * Operator uses floor, abs
+ *
+ * @path ch09/9.5/S9.5_A3.2_T1.js
+ * @description Use operator <<0
+ */
+
+// CHECK#1
+if ((1.2345 << 0) !== 1) {
+ $ERROR('#1: (1.2345 << 0) === 1. Actual: ' + ((1.2345 << 0)));
+}
+
+// CHECK#2
+if ((-5.4321 << 0) !== -5) {
+ $ERROR('#2: (-5.4321 << 0) === -5. Actual: ' + ((-5.4321 << 0)));
+}
+
diff --git a/js/src/tests/test262/ch09/9.5/S9.5_A3.2_T2.js b/js/src/tests/test262/ch09/9.5/S9.5_A3.2_T2.js
new file mode 100644
index 000000000..47838f6a1
--- /dev/null
+++ b/js/src/tests/test262/ch09/9.5/S9.5_A3.2_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.
+
+/**
+ * Operator uses floor, abs
+ *
+ * @path ch09/9.5/S9.5_A3.2_T2.js
+ * @description Use operator ~
+ */
+
+// CHECK#1
+if (~1.2345 !== ~1) {
+ $ERROR('#1: ~1.2345 === ~1)');
+}
+
+// CHECK#2
+if (~-5.4321 !== ~-5) {
+ $ERROR('#2: ~-5.4321 === ~-5)');
+}
+
diff --git a/js/src/tests/test262/ch09/9.5/browser.js b/js/src/tests/test262/ch09/9.5/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch09/9.5/browser.js
diff --git a/js/src/tests/test262/ch09/9.5/shell.js b/js/src/tests/test262/ch09/9.5/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch09/9.5/shell.js
diff --git a/js/src/tests/test262/ch09/9.6/S9.6_A1.js b/js/src/tests/test262/ch09/9.6/S9.6_A1.js
new file mode 100644
index 000000000..6e370541b
--- /dev/null
+++ b/js/src/tests/test262/ch09/9.6/S9.6_A1.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.
+
+/**
+ * If value is NaN, +0, -0, +Infinity, or -Infinity, return +0
+ *
+ * @path ch09/9.6/S9.6_A1.js
+ * @description For testing use operator >>>0
+ */
+
+// CHECK#1
+if ((Number.NaN >>> 0) !== +0) {
+ $ERROR('#1.1: (Number.NaN >>> 0) === 0. Actual: ' + ((Number.NaN >>> 0)));
+} else if (1/(Number.NaN >>> 0) !== Number.POSITIVE_INFINITY) {
+ $ERROR('#1.2: (Number.NaN >>> 0) === +0. Actual: -0');
+}
+
+// CHECK#2
+if ((Number("abc") >>> 0) !== +0) {
+ $ERROR('#2.1: (Number("abc") >>> 0) === 0. Actual: ' + ((Number("abc") >>> 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");
+} else if (1/(-0 >>> 0) !== Number.POSITIVE_INFINITY) {
+ $ERROR("#4.2: (-0 >>> 0) === +0. Actual: -0");
+}
+
+// CHECK#5
+if ((Number.POSITIVE_INFINITY >>> 0) !== +0) {
+ $ERROR('#5.1: (Number.POSITIVE_INFINITY >>> 0) === 0. Actual: ' + ((Number.POSITIVE_INFINITY >>> 0)));
+} else if (1/(Number.POSITIVE_INFINITY >>> 0) !== Number.POSITIVE_INFINITY) {
+ $ERROR('#5.2: (Number.POSITIVE_INFINITY >>> 0) === +0. Actual: -0');
+}
+
+// CHECK#6
+if ((Number.NEGATIVE_INFINITY >>> 0) !== +0) {
+ $ERROR("#6.1: (Number.NEGATIVE_INFINITY >>> 0) === 0");
+} else if (1/(Number.NEGATIVE_INFINITY >>> 0) !== Number.POSITIVE_INFINITY) {
+ $ERROR("#6.2: (Number.NEGATIVE_INFINITY >>> 0) === +0. Actual: -0");
+}
+
+
+
diff --git a/js/src/tests/test262/ch09/9.6/S9.6_A2.1.js b/js/src/tests/test262/ch09/9.6/S9.6_A2.1.js
new file mode 100644
index 000000000..cc2f38c85
--- /dev/null
+++ b/js/src/tests/test262/ch09/9.6/S9.6_A2.1.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.
+
+/**
+ * ToUint32 returns values between 0 and 2^32-1
+ *
+ * @path ch09/9.6/S9.6_A2.1.js
+ * @description Converting numbers, which are in\outside of Uint32 scopes, with >>>0 operator
+ */
+
+// CHECK#1
+if ((0 >>> 0) !== 0) {
+ $ERROR('#1: (0 >>> 0) === 0. Actual: ' + ((0 >>> 0)));
+}
+
+// CHECK#2
+if ((1 >>> 0) !== 1) {
+ $ERROR('#2: (1 >>> 0) === 1. Actual: ' + ((1 >>> 0)));
+}
+
+// CHECK#3
+if ((-1 >>> 0) !== 4294967295) {
+ $ERROR('#3: (-1 >>> 0) === 4294967295. Actual: ' + ((-1 >>> 0)));
+}
+
+// CHECK#4
+if ((4294967295 >>> 0) !== 4294967295) {
+ $ERROR('#4: (4294967295 >>> 0) === 4294967295. Actual: ' + ((4294967295 >>> 0)));
+}
+
+// CHECK#5
+if ((4294967294 >>> 0) !== 4294967294) {
+ $ERROR('#5: (4294967294 >>> 0) === 4294967294. Actual: ' + ((4294967294 >>> 0)));
+}
+
+// CHECK#6
+if ((4294967296 >>> 0) !== 0) {
+ $ERROR('#6: (4294967296 >>> 0) === 0. Actual: ' + ((4294967296 >>> 0)));
+}
+
diff --git a/js/src/tests/test262/ch09/9.6/S9.6_A2.2.js b/js/src/tests/test262/ch09/9.6/S9.6_A2.2.js
new file mode 100644
index 000000000..7438cbe95
--- /dev/null
+++ b/js/src/tests/test262/ch09/9.6/S9.6_A2.2.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.
+
+/**
+ * Compute result modulo 2^32
+ *
+ * @path ch09/9.6/S9.6_A2.2.js
+ * @description Use operator >>>0
+ */
+
+// CHECK#1
+if ((-2147483647 >>> 0) !== 2147483649) {
+ $ERROR('#1: (-2147483647 >>> 0) === 2147483649. Actual: ' + ((-2147483647 >>> 0)));
+}
+
+// CHECK#2
+if ((-2147483648 >>> 0) !== 2147483648) {
+ $ERROR('#2: (-2147483648 >>> 0) === 2147483648. Actual: ' + ((-2147483648 >>> 0)));
+}
+
+// CHECK#3
+if ((-2147483649 >>> 0) !== 2147483647) {
+ $ERROR('#3: (-2147483649 >>> 0) === 2147483647. Actual: ' + ((-2147483649 >>> 0)));
+}
+
+// CHECK#4
+if ((-4294967295 >>> 0) !== 1) {
+ $ERROR('#4: (-4294967295 >>> 0) === 1. Actual: ' + ((-4294967295 >>> 0)));
+}
+
+// CHECK#5
+if ((-4294967296 >>> 0) !== 0) {
+ $ERROR('#5: (-4294967296 >>> 0) === 0. Actual: ' + ((-4294967296 >>> 0)));
+}
+
+// CHECK#6
+if ((-4294967297 >>> 0) !== 4294967295) {
+ $ERROR('#6: (-4294967297 >>> 0) === 4294967295. Actual: ' + ((-4294967297 >>> 0)));
+}
+
+// CHECK#7
+if ((4294967295 >>> 0) !== 4294967295) {
+ $ERROR('#7: (4294967295 >>> 0) === 4294967295. Actual: ' + ((4294967295 >>> 0)));
+}
+
+// CHECK#8
+if ((4294967296 >>> 0) !== 0) {
+ $ERROR('#8: (4294967296 >>> 0) === 0. Actual: ' + ((4294967296 >>> 0)));
+}
+
+// CHECK#9
+if ((4294967297 >>> 0) !== 1) {
+ $ERROR('#9: (4294967297 >>> 0) === 1. Actual: ' + ((4294967297 >>> 0)));
+}
+
+// CHECK#10
+if ((8589934591 >>> 0) !== 4294967295) {
+ $ERROR('#10: (8589934591 >>> 0) === 4294967295. Actual: ' + ((8589934591 >>> 0)));
+}
+
+// CHECK#11
+if ((8589934592 >>> 0) !== 0) {
+ $ERROR('#11: (8589934592 >>> 0) === 0. Actual: ' + ((8589934592 >>> 0)));
+}
+
+// CHECK#12
+if ((8589934593 >>> 0) !== 1) {
+ $ERROR('#12: (8589934593 >>> 0) === 1. Actual: ' + ((8589934593 >>> 0)));
+}
+
diff --git a/js/src/tests/test262/ch09/9.6/S9.6_A3.1_T1.js b/js/src/tests/test262/ch09/9.6/S9.6_A3.1_T1.js
new file mode 100644
index 000000000..d73f715b9
--- /dev/null
+++ b/js/src/tests/test262/ch09/9.6/S9.6_A3.1_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.
+
+/**
+ * Operator uses ToNumber
+ *
+ * @path ch09/9.6/S9.6_A3.1_T1.js
+ * @description Type(x) is Boolean
+ */
+
+// CHECK#1
+if ((new Boolean(true) >>> 0) !== 1) {
+ $ERROR('#1: (new Boolean(true) >>> 0) === 1. Actual: ' + ((new Boolean(true) >>> 0)));
+}
+
+// CHECK#2
+if ((false >>> 0) !== 0) {
+ $ERROR('#2: (false >>> 0) === 0. Actual: ' + ((false >>> 0)));
+}
+
diff --git a/js/src/tests/test262/ch09/9.6/S9.6_A3.1_T2.js b/js/src/tests/test262/ch09/9.6/S9.6_A3.1_T2.js
new file mode 100644
index 000000000..5e99b13b3
--- /dev/null
+++ b/js/src/tests/test262/ch09/9.6/S9.6_A3.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.
+
+/**
+ * Operator uses ToNumber
+ *
+ * @path ch09/9.6/S9.6_A3.1_T2.js
+ * @description Type(x) is Number
+ */
+
+// CHECK#1
+if ((new Number(1) >>> 0) !== 1) {
+ $ERROR('#1: (new Number(1) >>> 0) === 1. Actual: ' + ((new Number(1) >>> 0)));
+}
+
+// CHECK#2
+if ((-1.234 >>> 0) !== 4294967295) {
+ $ERROR('#2: (-1.234 >>> 0) === 4294967295. Actual: ' + ((-1.234 >>> 0)));
+}
+
diff --git a/js/src/tests/test262/ch09/9.6/S9.6_A3.1_T3.js b/js/src/tests/test262/ch09/9.6/S9.6_A3.1_T3.js
new file mode 100644
index 000000000..480ffd0cc
--- /dev/null
+++ b/js/src/tests/test262/ch09/9.6/S9.6_A3.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.
+
+/**
+ * Operator uses ToNumber
+ *
+ * @path ch09/9.6/S9.6_A3.1_T3.js
+ * @description Type(x) is String
+ */
+
+// CHECK#1
+if ((new String(1) >>> 0) !== 1) {
+ $ERROR('#1: (new String(1) >>> 0) === 1. Actual: ' + ((new String(1) >>> 0)));
+}
+
+// CHECK#2
+if (("-1.234" >>> 0) !== 4294967295) {
+ $ERROR('#2: ("-1.234" >>> 0) === 4294967295. Actual: ' + (("-1.234" >>> 0)));
+}
+
diff --git a/js/src/tests/test262/ch09/9.6/S9.6_A3.1_T4.js b/js/src/tests/test262/ch09/9.6/S9.6_A3.1_T4.js
new file mode 100644
index 000000000..65381fd0d
--- /dev/null
+++ b/js/src/tests/test262/ch09/9.6/S9.6_A3.1_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.
+
+/**
+ * Operator uses ToNumber
+ *
+ * @path ch09/9.6/S9.6_A3.1_T4.js
+ * @description Type(x) is Object
+ */
+
+//CHECK#1
+var object = {valueOf: function() {return 1}};
+if ((object >>> 0) !== 1) {
+ $ERROR('#1: var object = {valueOf: function() {return 1}}; (object >>> 0) === 1. Actual: ' + ((object >>> 0)));
+}
+
+//CHECK#2
+var object = {valueOf: function() {return 1}, toString: function() {return 0}};
+if ((object >>> 0) !== 1) {
+ $ERROR('#2: var object = {valueOf: function() {return 1}, toString: function() {return 0}}; (object >>> 0) === 1. Actual: ' + ((object >>> 0)));
+}
+
+//CHECK#3
+var object = {valueOf: function() {return 1}, toString: function() {return {}}};
+if ((object >>> 0) !== 1) {
+ $ERROR('#3: var object = {valueOf: function() {return 1}, toString: function() {return {}}}; (object >>> 0) === 1. Actual: ' + ((object >>> 0)));
+}
+
+//CHECK#4
+try {
+ var object = {valueOf: function() {return 1}, toString: function() {throw "error"}};
+ if ((object >>> 0) !== 1) {
+ $ERROR('#4.1: var object = {valueOf: function() {return 1}, toString: function() {throw "error"}}; (object >>> 0) === 1. Actual: ' + ((object >>> 0)));
+ }
+}
+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 >>> 0) !== 1) {
+ $ERROR('#5: var object = {toString: function() {return 1}}; (object >>> 0) === 1. Actual: ' + ((object >>> 0)));
+}
+
+//CHECK#6
+var object = {valueOf: function() {return {}}, toString: function() {return 1}}
+if ((object >>> 0) !== 1) {
+ $ERROR('#6: var object = {valueOf: function() {return {}}, toString: function() {return 1}}; (object >>> 0) === 1. Actual: ' + ((object >>> 0)));
+}
+
+//CHECK#7
+try {
+ var object = {valueOf: function() {throw "error"}, toString: function() {return 1}};
+ object >>> 0;
+ $ERROR('#7.1: var object = {valueOf: function() {throw "error"}, toString: function() {return 1}}; object throw "error". Actual: ' + (object >>> 0));
+}
+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 >>> 0;
+ $ERROR('#8.1: var object = {valueOf: function() {return {}}, toString: function() {return {}}}; object throw TypeError. Actual: ' + (object >>> 0));
+}
+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/js/src/tests/test262/ch09/9.6/S9.6_A3.2_T1.js b/js/src/tests/test262/ch09/9.6/S9.6_A3.2_T1.js
new file mode 100644
index 000000000..87d0b2a84
--- /dev/null
+++ b/js/src/tests/test262/ch09/9.6/S9.6_A3.2_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.
+
+/**
+ * Operator uses floor, abs
+ *
+ * @path ch09/9.6/S9.6_A3.2_T1.js
+ * @description Use operator >>>0
+ */
+
+// CHECK#1
+if ((1.2345 >>> 0) !== 1) {
+ $ERROR('#1: (1.2345 >>> 0) === 1. Actual: ' + ((1.2345 >>> 0)));
+}
+
+// CHECK#2
+if ((-5.4321 >>> 0) !== 4294967291) {
+ $ERROR('#2: (-5.4321 >>> 0) === 4294967291. Actual: ' + ((-5.4321 >>> 0)));
+}
+
diff --git a/js/src/tests/test262/ch09/9.6/browser.js b/js/src/tests/test262/ch09/9.6/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch09/9.6/browser.js
diff --git a/js/src/tests/test262/ch09/9.6/shell.js b/js/src/tests/test262/ch09/9.6/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch09/9.6/shell.js
diff --git a/js/src/tests/test262/ch09/9.7/S9.7_A1.js b/js/src/tests/test262/ch09/9.7/S9.7_A1.js
new file mode 100644
index 000000000..443711768
--- /dev/null
+++ b/js/src/tests/test262/ch09/9.7/S9.7_A1.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.
+
+/**
+ * If value is NaN, +0, -0, +Infinity, or -Infinity, return +0
+ *
+ * @path ch09/9.7/S9.7_A1.js
+ * @description For testing use String.fromCharCode(Number).charCodeAt(0) construction
+ */
+
+// CHECK#1
+if (String.fromCharCode(Number.NaN).charCodeAt(0) !== +0) {
+ $ERROR('#1.1: String.fromCharCode(Number.NaN).charCodeAt(0) === 0. Actual: ' + (String.fromCharCode(Number.NaN).charCodeAt(0)));
+} else if (1/String.fromCharCode(Number.NaN).charCodeAt(0) !== Number.POSITIVE_INFINITY) {
+ $ERROR('#1.2: String.fromCharCode(Number.NaN).charCodeAt(0) === +0. Actual: -0');
+}
+
+// CHECK#2
+if (String.fromCharCode(Number("abc")).charCodeAt(0) !== +0) {
+ $ERROR('#2.1: String.fromCharCode(Number("abc")).charCodeAt(0) === 0. Actual: ' + (String.fromCharCode(Number("abc")).charCodeAt(0)));
+} else if (1/String.fromCharCode(0).charCodeAt(0) !== Number.POSITIVE_INFINITY) {
+ $ERROR('#2.2: String.fromCharCode(0).charCodeAt(0) === +0. Actual: -0');
+}
+
+// CHECK#3
+if (String.fromCharCode(0).charCodeAt(0) !== +0) {
+ $ERROR('#3.1: String.fromCharCode(0).charCodeAt(0) === 0. Actual: ' + (String.fromCharCode(0).charCodeAt(0)));
+} else if (1/String.fromCharCode(0).charCodeAt(0) !== Number.POSITIVE_INFINITY) {
+ $ERROR('#3.2: String.fromCharCode(0).charCodeAt(0) === +0. Actual: -0');
+}
+
+// CHECK#4
+if (String.fromCharCode(-0).charCodeAt(0) !== +0) {
+ $ERROR("#4.1: String.fromCharCode(-0).charCodeAt(0) === +0");
+} else if (1/String.fromCharCode(-0).charCodeAt(0) !== Number.POSITIVE_INFINITY) {
+ $ERROR("#4.2: String.fromCharCode(-0).charCodeAt(0) === +0. Actual: -0");
+}
+
+// CHECK#5
+if (String.fromCharCode(Number.POSITIVE_INFINITY).charCodeAt(0) !== +0) {
+ $ERROR('#5.1: String.fromCharCode(Number.POSITIVE_INFINITY).charCodeAt(0) === 0. Actual: ' + (String.fromCharCode(Number.POSITIVE_INFINITY).charCodeAt(0)));
+} else if (1/String.fromCharCode(Number.POSITIVE_INFINITY).charCodeAt(0) !== Number.POSITIVE_INFINITY) {
+ $ERROR('#5.2: String.fromCharCode(Number.POSITIVE_INFINITY).charCodeAt(0) === +0. Actual: -0');
+}
+
+// CHECK#6
+if (String.fromCharCode(Number.NEGATIVE_INFINITY).charCodeAt(0) !== +0) {
+ $ERROR("#6.1: String.fromCharCode(Number.NEGATIVE_INFINITY).charCodeAt(0) === +0");
+} else if (1/String.fromCharCode(Number.NEGATIVE_INFINITY).charCodeAt(0) !== Number.POSITIVE_INFINITY) {
+ $ERROR("#6.2: String.fromCharCode(Number.NEGATIVE_INFINITY).charCodeAt(0) === +0. Actual: -0");
+}
+
+
+
diff --git a/js/src/tests/test262/ch09/9.7/S9.7_A2.1.js b/js/src/tests/test262/ch09/9.7/S9.7_A2.1.js
new file mode 100644
index 000000000..5073f9c87
--- /dev/null
+++ b/js/src/tests/test262/ch09/9.7/S9.7_A2.1.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.
+
+/**
+ * ToUint16 returns values between 0 and 2^16-1
+ *
+ * @path ch09/9.7/S9.7_A2.1.js
+ * @description Converting numbers, which are in\outside of Uint16 scopes, with String.fromCharCode(Number).charCodeAt(0) construction
+ */
+
+// CHECK#1
+if (String.fromCharCode(0).charCodeAt(0) !== 0) {
+ $ERROR('#1: String.fromCharCode(0).charCodeAt(0) === 0. Actual: ' + (String.fromCharCode(0).charCodeAt(0)));
+}
+
+// CHECK#2
+if (String.fromCharCode(1).charCodeAt(0) !== 1) {
+ $ERROR('#2: String.fromCharCode(1).charCodeAt(0) === 1. Actual: ' + (String.fromCharCode(1).charCodeAt(0)));
+}
+
+// CHECK#3
+if (String.fromCharCode(-1).charCodeAt(0) !== 65535) {
+ $ERROR('#3: String.fromCharCode(-1).charCodeAt(0) === 65535. Actual: ' + (String.fromCharCode(-1).charCodeAt(0)));
+}
+
+// CHECK#4
+if (String.fromCharCode(65535).charCodeAt(0) !== 65535) {
+ $ERROR('#4: String.fromCharCode(65535).charCodeAt(0) === 65535. Actual: ' + (String.fromCharCode(65535).charCodeAt(0)));
+}
+
+// CHECK#5
+if (String.fromCharCode(65534).charCodeAt(0) !== 65534) {
+ $ERROR('#5: String.fromCharCode(65534).charCodeAt(0) === 65534. Actual: ' + (String.fromCharCode(65534).charCodeAt(0)));
+}
+
+// CHECK#6
+if (String.fromCharCode(65536).charCodeAt(0) !== 0) {
+ $ERROR('#6: String.fromCharCode(65536).charCodeAt(0) === 0. Actual: ' + (String.fromCharCode(65536).charCodeAt(0)));
+}
+
+// CHECK#7
+if (String.fromCharCode(4294967295).charCodeAt(0) !== 65535) {
+ $ERROR('#7: String.fromCharCode(4294967295).charCodeAt(0) === 65535. Actual: ' + (String.fromCharCode(4294967295).charCodeAt(0)));
+}
+
+// CHECK#8
+if (String.fromCharCode(4294967294).charCodeAt(0) !== 65534) {
+ $ERROR('#8: String.fromCharCode(4294967294).charCodeAt(0) === 65534. Actual: ' + (String.fromCharCode(4294967294).charCodeAt(0)));
+}
+
+// CHECK#9
+if (String.fromCharCode(4294967296).charCodeAt(0) !== 0) {
+ $ERROR('#9: String.fromCharCode(4294967296).charCodeAt(0) === 0. Actual: ' + (String.fromCharCode(4294967296).charCodeAt(0)));
+}
+
diff --git a/js/src/tests/test262/ch09/9.7/S9.7_A2.2.js b/js/src/tests/test262/ch09/9.7/S9.7_A2.2.js
new file mode 100644
index 000000000..d631bd912
--- /dev/null
+++ b/js/src/tests/test262/ch09/9.7/S9.7_A2.2.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.
+
+/**
+ * Compute result modulo 2^16
+ *
+ * @path ch09/9.7/S9.7_A2.2.js
+ * @description For testing use String.fromCharCode(Number).charCodeAt(0) construction
+ */
+
+// CHECK#1
+if (String.fromCharCode(-32767).charCodeAt(0) !== 32769) {
+ $ERROR('#1: String.fromCharCode(-32767).charCodeAt(0) === 32769. Actual: ' + (String.fromCharCode(-32767).charCodeAt(0)));
+}
+
+// CHECK#2
+if (String.fromCharCode(-32768).charCodeAt(0) !== 32768) {
+ $ERROR('#2: String.fromCharCode(-32768).charCodeAt(0) === 32768. Actual: ' + (String.fromCharCode(-32768).charCodeAt(0)));
+}
+
+// CHECK#3
+if (String.fromCharCode(-32769).charCodeAt(0) !== 32767) {
+ $ERROR('#3: String.fromCharCode(-32769).charCodeAt(0) === 32767. Actual: ' + (String.fromCharCode(-32769).charCodeAt(0)));
+}
+
+// CHECK#4
+if (String.fromCharCode(-65535).charCodeAt(0) !== 1) {
+ $ERROR('#4: String.fromCharCode(-65535).charCodeAt(0) === 1. Actual: ' + (String.fromCharCode(-65535).charCodeAt(0)));
+}
+
+// CHECK#5
+if (String.fromCharCode(-65536).charCodeAt(0) !== 0) {
+ $ERROR('#5: String.fromCharCode(-65536).charCodeAt(0) === 0. Actual: ' + (String.fromCharCode(-65536).charCodeAt(0)));
+}
+
+// CHECK#6
+if (String.fromCharCode(-65537).charCodeAt(0) !== 65535) {
+ $ERROR('#6: String.fromCharCode(-65537).charCodeAt(0) === 65535. Actual: ' + (String.fromCharCode(-65537).charCodeAt(0)));
+}
+
+// CHECK#7
+if (String.fromCharCode(65535).charCodeAt(0) !== 65535) {
+ $ERROR('#7: String.fromCharCode(65535).charCodeAt(0) === 65535. Actual: ' + (String.fromCharCode(65535).charCodeAt(0)));
+}
+
+// CHECK#8
+if (String.fromCharCode(65536).charCodeAt(0) !== 0) {
+ $ERROR('#8: String.fromCharCode(65536).charCodeAt(0) === 0. Actual: ' + (String.fromCharCode(65536).charCodeAt(0)));
+}
+
+// CHECK#9
+if (String.fromCharCode(65537).charCodeAt(0) !== 1) {
+ $ERROR('#9: String.fromCharCode(65537).charCodeAt(0) === 1. Actual: ' + (String.fromCharCode(65537).charCodeAt(0)));
+}
+
+// CHECK#10
+if (String.fromCharCode(131071).charCodeAt(0) !== 65535) {
+ $ERROR('#10: String.fromCharCode(131071).charCodeAt(0) === 65535. Actual: ' + (String.fromCharCode(131071).charCodeAt(0)));
+}
+
+// CHECK#11
+if (String.fromCharCode(131072).charCodeAt(0) !== 0) {
+ $ERROR('#11: String.fromCharCode(131072).charCodeAt(0) === 0. Actual: ' + (String.fromCharCode(131072).charCodeAt(0)));
+}
+
+// CHECK#12
+if (String.fromCharCode(131073).charCodeAt(0) !== 1) {
+ $ERROR('#12: String.fromCharCode(131073).charCodeAt(0) === 1. Actual: ' + (String.fromCharCode(131073).charCodeAt(0)));
+}
+
diff --git a/js/src/tests/test262/ch09/9.7/S9.7_A3.1_T1.js b/js/src/tests/test262/ch09/9.7/S9.7_A3.1_T1.js
new file mode 100644
index 000000000..315b133d2
--- /dev/null
+++ b/js/src/tests/test262/ch09/9.7/S9.7_A3.1_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.
+
+/**
+ * Operator uses ToNumber
+ *
+ * @path ch09/9.7/S9.7_A3.1_T1.js
+ * @description Type(x) is Boolean
+ */
+
+// CHECK#1
+if (String.fromCharCode(new Boolean(true)).charCodeAt(0) !== 1) {
+ $ERROR('#1: String.fromCharCode(new Boolean(true)).charCodeAt(0) === 1. Actual: ' + (String.fromCharCode(new Boolean(true)).charCodeAt(0)));
+}
+
+// CHECK#2
+if (String.fromCharCode(false).charCodeAt(0) !== 0) {
+ $ERROR('#2: String.fromCharCode(false).charCodeAt(0) === 0. Actual: ' + (String.fromCharCode(false).charCodeAt(0)));
+}
+
diff --git a/js/src/tests/test262/ch09/9.7/S9.7_A3.1_T2.js b/js/src/tests/test262/ch09/9.7/S9.7_A3.1_T2.js
new file mode 100644
index 000000000..613229333
--- /dev/null
+++ b/js/src/tests/test262/ch09/9.7/S9.7_A3.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.
+
+/**
+ * Operator uses ToNumber
+ *
+ * @path ch09/9.7/S9.7_A3.1_T2.js
+ * @description Type(x) is Number
+ */
+
+// CHECK#1
+if (String.fromCharCode(new Number(1)).charCodeAt(0) !== 1) {
+ $ERROR('#1: String.fromCharCode(new Number(1)).charCodeAt(0) === 1. Actual: ' + (String.fromCharCode(new Number(1)).charCodeAt(0)));
+}
+
+// CHECK#2
+if (String.fromCharCode(-1.234).charCodeAt(0) !== 65535) {
+ $ERROR('#2: String.fromCharCode(-1.234).charCodeAt(0) === 65535. Actual: ' + (String.fromCharCode(-1.234).charCodeAt(0)));
+}
+
diff --git a/js/src/tests/test262/ch09/9.7/S9.7_A3.1_T3.js b/js/src/tests/test262/ch09/9.7/S9.7_A3.1_T3.js
new file mode 100644
index 000000000..ff66475ca
--- /dev/null
+++ b/js/src/tests/test262/ch09/9.7/S9.7_A3.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.
+
+/**
+ * Operator uses ToNumber
+ *
+ * @path ch09/9.7/S9.7_A3.1_T3.js
+ * @description Type(x) is String
+ */
+
+// CHECK#1
+if (String.fromCharCode(new String(1)).charCodeAt(0) !== 1) {
+ $ERROR('#1: String.fromCharCode(new String(1)).charCodeAt(0) === 1. Actual: ' + (String.fromCharCode(new String(1)).charCodeAt(0)));
+}
+
+// CHECK#2
+if (String.fromCharCode("-1.234").charCodeAt(0) !== 65535) {
+ $ERROR('#2: String.fromCharCode("-1.234").charCodeAt(0) === 65535. Actual: ' + (String.fromCharCode("-1.234").charCodeAt(0)));
+}
+
diff --git a/js/src/tests/test262/ch09/9.7/S9.7_A3.1_T4.js b/js/src/tests/test262/ch09/9.7/S9.7_A3.1_T4.js
new file mode 100644
index 000000000..49627e759
--- /dev/null
+++ b/js/src/tests/test262/ch09/9.7/S9.7_A3.1_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.
+
+/**
+ * Operator uses ToNumber
+ *
+ * @path ch09/9.7/S9.7_A3.1_T4.js
+ * @description Type(x) is Object
+ */
+
+//CHECK#1
+var object = {valueOf: function() {return 1}};
+if (String.fromCharCode(object).charCodeAt(0) !== 1) {
+ $ERROR('#1: var object = {valueOf: function() {return 1}}; String.fromCharCode(object).charCodeAt(0) === 1. Actual: ' + (String.fromCharCode(object).charCodeAt(0)));
+}
+
+//CHECK#2
+var object = {valueOf: function() {return 1}, toString: function() {return 0}};
+if (String.fromCharCode(object).charCodeAt(0) !== 1) {
+ $ERROR('#2: var object = {valueOf: function() {return 1}, toString: function() {return 0}}; String.fromCharCode(object).charCodeAt(0) === 1. Actual: ' + (String.fromCharCode(object).charCodeAt(0)));
+}
+
+//CHECK#3
+var object = {valueOf: function() {return 1}, toString: function() {return {}}};
+if (String.fromCharCode(object).charCodeAt(0) !== 1) {
+ $ERROR('#3: var object = {valueOf: function() {return 1}, toString: function() {return {}}}; String.fromCharCode(object).charCodeAt(0) === 1. Actual: ' + (String.fromCharCode(object).charCodeAt(0)));
+}
+
+//CHECK#4
+try {
+ var object = {valueOf: function() {return 1}, toString: function() {throw "error"}};
+ if (String.fromCharCode(object).charCodeAt(0) !== 1) {
+ $ERROR('#4.1: var object = {valueOf: function() {return 1}, toString: function() {throw "error"}}; String.fromCharCode(object).charCodeAt(0) === 1. Actual: ' + (String.fromCharCode(object).charCodeAt(0)));
+ }
+}
+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 (String.fromCharCode(object).charCodeAt(0) !== 1) {
+ $ERROR('#5: var object = {toString: function() {return 1}}; String.fromCharCode(object).charCodeAt(0) === 1. Actual: ' + (String.fromCharCode(object).charCodeAt(0)));
+}
+
+//CHECK#6
+var object = {valueOf: function() {return {}}, toString: function() {return 1}}
+if (String.fromCharCode(object).charCodeAt(0) !== 1) {
+ $ERROR('#6: var object = {valueOf: function() {return {}}, toString: function() {return 1}}; String.fromCharCode(object).charCodeAt(0) === 1. Actual: ' + (String.fromCharCode(object).charCodeAt(0)));
+}
+
+//CHECK#7
+try {
+ var object = {valueOf: function() {throw "error"}, toString: function() {return 1}};
+ object >>> 0;
+ $ERROR('#7.1: var object = {valueOf: function() {throw "error"}, toString: function() {return 1}}; object throw "error". Actual: ' + (object >>> 0));
+}
+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 >>> 0;
+ $ERROR('#8.1: var object = {valueOf: function() {return {}}, toString: function() {return {}}}; object throw TypeError. Actual: ' + (object >>> 0));
+}
+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/js/src/tests/test262/ch09/9.7/S9.7_A3.2_T1.js b/js/src/tests/test262/ch09/9.7/S9.7_A3.2_T1.js
new file mode 100644
index 000000000..b7b6ecbbe
--- /dev/null
+++ b/js/src/tests/test262/ch09/9.7/S9.7_A3.2_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.
+
+/**
+ * Operator uses floor, abs
+ *
+ * @path ch09/9.7/S9.7_A3.2_T1.js
+ * @description For testing use String.fromCharCode(Number).charCodeAt(0) construction
+ */
+
+// CHECK#1
+if (String.fromCharCode(1.2345).charCodeAt(0) !== 1) {
+ $ERROR('#1: String.fromCharCode(1.2345).charCodeAt(0) === 1. Actual: ' + (String.fromCharCode(1.2345).charCodeAt(0)));
+}
+
+// CHECK#2
+if (String.fromCharCode(-5.4321).charCodeAt(0) !== 65531) {
+ $ERROR('#2: String.fromCharCode(-5.4321).charCodeAt(0) === 65531. Actual: ' + (String.fromCharCode(-5.4321).charCodeAt(0)));
+}
+
diff --git a/js/src/tests/test262/ch09/9.7/browser.js b/js/src/tests/test262/ch09/9.7/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch09/9.7/browser.js
diff --git a/js/src/tests/test262/ch09/9.7/shell.js b/js/src/tests/test262/ch09/9.7/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch09/9.7/shell.js
diff --git a/js/src/tests/test262/ch09/9.8/9.8.1/S9.8.1_A1.js b/js/src/tests/test262/ch09/9.8/9.8.1/S9.8.1_A1.js
new file mode 100644
index 000000000..b51e4cca1
--- /dev/null
+++ b/js/src/tests/test262/ch09/9.8/9.8.1/S9.8.1_A1.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.
+
+/**
+ * If m is NaN, return the string "NaN"
+ *
+ * @path ch09/9.8/9.8.1/S9.8.1_A1.js
+ * @description NaN convert to String by explicit transformation
+ */
+
+// CHECK#1
+if (String(NaN) !== "NaN") {
+ $ERROR('#1: String(NaN) === Not-a-Number Actual: ' + (String(NaN)));
+}
+
+// CHECK#2
+if (String(Number.NaN) !== "NaN") {
+ $ERROR('#2: String(Number.NaN) === Not-a-Number Actual: ' + (String(Number.NaN)));
+}
+
+// CHECK#3
+if (String(Number("asasa")) !== "NaN") {
+ $ERROR('#3: String(Number("asasa")) === Not-a-Number Actual: ' + (String(Number("asasa"))));
+}
+
diff --git a/js/src/tests/test262/ch09/9.8/9.8.1/S9.8.1_A10.js b/js/src/tests/test262/ch09/9.8/9.8.1/S9.8.1_A10.js
new file mode 100644
index 000000000..17fa40697
--- /dev/null
+++ b/js/src/tests/test262/ch09/9.8/9.8.1/S9.8.1_A10.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.
+
+/**
+ * Return the string consisting of the most significant
+ * digit of the decimal representation of s, followed by a decimal point '.',
+ * followed by the remaining k-1 digits of the decimal representation of s,
+ * followed by the lowercase character 'e', followed by a plus sign '+' or
+ * minus sign '-' according to whether n-1 is positive or negative, followed
+ * by the decimal representation of the integer abs(n-1) (with no leading zeros)
+ *
+ * @path ch09/9.8/9.8.1/S9.8.1_A10.js
+ * @description Various float numbers convert to String by explicit transformation
+ */
+
+// CHECK#1
+if (String(1.2345) !== "1.2345") {
+ $ERROR('#1: String(1.2345) === "1.2345". Actual: ' + (String(1.2345)));
+}
+
+// CHECK#2
+if (String(1.234567890) !== "1.23456789") {
+ $ERROR('#2: String(1.234567890) === "1.23456789". Actual: ' + (String(1.234567890)));
+}
+
+// CHECK#3
+if (String(0.12345) !== "0.12345") {
+ $ERROR('#3: String(0.12345) === "0.12345". Actual: ' + (String(0.12345)));
+}
+
+// CHECK#4
+if (String(.012345) !== "0.012345") {
+ $ERROR('#4: String(.012345) === "0.012345". Actual: ' + (String(.012345)));
+}
+
+// CHECK#5
+if (String(.0012345) !== "0.0012345") {
+ $ERROR('#5: String(.0012345) === "0.0012345". Actual: ' + (String(.0012345)));
+}
+
+// CHECK#6
+if (String(.00012345) !== "0.00012345") {
+ $ERROR('#6: String(.00012345) === "0.00012345". Actual: ' + (String(.00012345)));
+}
+
+// CHECK#7
+if (String(.000012345) !== "0.000012345") {
+ $ERROR('#7: String(.000012345) === "0.000012345". Actual: ' + (String(.000012345)));
+}
+
+// CHECK#8
+if (String(.0000012345) !== "0.0000012345") {
+ $ERROR('#8: String(.0000012345) === "0.0000012345". Actual: ' + (String(.0000012345)));
+}
+
+// CHECK#9
+if (String(.00000012345) !== "1.2345e-7") {
+ $ERROR('#9: String(.00000012345) === "1.2345e-7". Actual: ' + (String(.00000012345)));
+}
+
diff --git a/js/src/tests/test262/ch09/9.8/9.8.1/S9.8.1_A2.js b/js/src/tests/test262/ch09/9.8/9.8.1/S9.8.1_A2.js
new file mode 100644
index 000000000..adc8e1f5e
--- /dev/null
+++ b/js/src/tests/test262/ch09/9.8/9.8.1/S9.8.1_A2.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.
+
+/**
+ * If m is +0 or -0, return the string "0"
+ *
+ * @path ch09/9.8/9.8.1/S9.8.1_A2.js
+ * @description +0 and -0 convert to String by explicit transformation
+ */
+
+// CHECK#1
+if (String(+0) !== "0") {
+ $ERROR('#1: String(+0) === "0". Actual: ' + (String(+0)));
+}
+
+// CHECK#2
+if (String(-0) !== "0") {
+ $ERROR('#2: String(-0) === "0". Actual: ' + (String(-0)));
+}
+
diff --git a/js/src/tests/test262/ch09/9.8/9.8.1/S9.8.1_A3.js b/js/src/tests/test262/ch09/9.8/9.8.1/S9.8.1_A3.js
new file mode 100644
index 000000000..3945f2279
--- /dev/null
+++ b/js/src/tests/test262/ch09/9.8/9.8.1/S9.8.1_A3.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.
+
+/**
+ * If m is less than zero, return the string concatenation of the
+ * string "-" and ToString(-m)
+ *
+ * @path ch09/9.8/9.8.1/S9.8.1_A3.js
+ * @description -1234567890 convert to String by explicit transformation
+ */
+
+// CHECK#1
+if (String(-1234567890) !== "-1234567890") {
+ $ERROR('#1: String(-1234567890) === "-1234567890". Actual: ' + (String(-1234567890)));
+}
+
+// CHECK#2
+if ("-"+String(-(-1234567890)) !== "-1234567890") {
+ $ERROR('#2: "-"+String(-(-1234567890)) === "-1234567890". Actual: ' + ("-"+String(-(-1234567890))));
+}
+
diff --git a/js/src/tests/test262/ch09/9.8/9.8.1/S9.8.1_A4.js b/js/src/tests/test262/ch09/9.8/9.8.1/S9.8.1_A4.js
new file mode 100644
index 000000000..f71ac7557
--- /dev/null
+++ b/js/src/tests/test262/ch09/9.8/9.8.1/S9.8.1_A4.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.
+
+/**
+ * If m is infinity, return the string "Infinity"
+ *
+ * @path ch09/9.8/9.8.1/S9.8.1_A4.js
+ * @description +/-Infinity convert to String by explicit transformation
+ */
+
+// CHECK#1
+if (String(Infinity) !== "Infinity") {
+ $ERROR('#1: String(Infinity) === "Infinity". Actual: ' + (String(Infinity)));
+}
+
+// CHECK#2
+if (String(Number.POSITIVE_INFINITY) !== "Infinity") {
+ $ERROR('#2: String(Number.POSITIVE_INFINITY) === "Infinity". Actual: ' + (String(Number.POSITIVE_INFINITY)));
+}
+
+// CHECK#3
+if (String(-Infinity) !== "-Infinity") {
+ $ERROR('#3: String(-Infinity) === "-Infinity". Actual: ' + (String(-Infinity)));
+}
+
+// CHECK#4
+if (String(Number.NEGATIVE_INFINITY) !== "-Infinity") {
+ $ERROR('#4: String(Number.NEGATIVE_INFINITY) === "-Infinity". Actual: ' + (String(Number.NEGATIVE_INFINITY)));
+}
+
diff --git a/js/src/tests/test262/ch09/9.8/9.8.1/S9.8.1_A6.js b/js/src/tests/test262/ch09/9.8/9.8.1/S9.8.1_A6.js
new file mode 100644
index 000000000..8b9ddf42e
--- /dev/null
+++ b/js/src/tests/test262/ch09/9.8/9.8.1/S9.8.1_A6.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.
+
+/**
+ * If 1 <= s < 1e21 or -1e21 s < -1, return the string
+ * consisting of the k digits of the decimal representation of s (in order,
+ * with no leading zeroes), followed by n-k occurrences of the character '0'
+ *
+ * @path ch09/9.8/9.8.1/S9.8.1_A6.js
+ * @description Various integer numbers convert to String by explicit transformation
+ */
+
+// CHECK#1
+if (String(1) !== "1") {
+ $ERROR('#1: String(1) === "1". Actual: ' + (String(1)));
+}
+
+// CHECK#2
+if (String(10) !== "10") {
+ $ERROR('#2: String(10) === "10". Actual: ' + (String(10)));
+}
+
+// CHECK#3
+if (String(100) !== "100") {
+ $ERROR('#3: String(100) === "100". Actual: ' + (String(100)));
+}
+
+// CHECK#4
+if (String(100000000000000000000) !== "100000000000000000000") {
+ $ERROR('#4: String(100000000000000000000) === "100000000000000000000". Actual: ' + (String(100000000000000000000)));
+}
+
+// CHECK#5
+if (String(1e20) !== "100000000000000000000") {
+ $ERROR('#5: String(1e20) === "100000000000000000000". Actual: ' + (String(1e20)));
+}
+
+// CHECK#6
+if (String(12345) !== "12345") {
+ $ERROR('#6: String(12345) === "12345". Actual: ' + (String(12345)));
+}
+
+// CHECK#7
+if (String(12345000) !== "12345000") {
+ $ERROR('#7: String(12345000) === "12345000". Actual: ' + (String(12345000)));
+}
+
+// CHECK#8
+if (String(-1) !== "-1") {
+ $ERROR('#8: String(-1) === "-1". Actual: ' + (String(-1)));
+}
+
+// CHECK#9
+if (String(-10) !== "-10") {
+ $ERROR('#9: String(-10) === "-10". Actual: ' + (String(-10)));
+}
+
+// CHECK#10
+if (String(-100) !== "-100") {
+ $ERROR('#3: String(-100) === "-100". Actual: ' + (String(-100)));
+}
+
+// CHECK#10
+if (String(-100000000000000000000) !== "-100000000000000000000") {
+ $ERROR('#10: String(-100000000000000000000) === "-100000000000000000000". Actual: ' + (String(-100000000000000000000)));
+}
+
+// CHECK#11
+if (String(-1e20) !== "-100000000000000000000") {
+ $ERROR('#11: String(-1e20) === "-100000000000000000000". Actual: ' + (String(-1e20)));
+}
+
+// CHECK#12
+if (String(-12345) !== "-12345") {
+ $ERROR('#12: String(-12345) === "-12345". Actual: ' + (String(-12345)));
+}
+
+// CHECK#13
+if (String(-12345000) !== "-12345000") {
+ $ERROR('#13: String(-12345000) === "-12345000". Actual: ' + (String(-12345000)));
+}
+
+// CHECK#14
+if (String(1E20) !== "100000000000000000000") {
+ $ERROR('#14: String(1E20) === "100000000000000000000". Actual: ' + (String(1E20)));
+}
+
+// CHECK#15
+if (String(-1E20) !== "-100000000000000000000") {
+ $ERROR('#15: String(-1E20) === "-100000000000000000000". Actual: ' + (String(-1E20)));
+}
+
+
diff --git a/js/src/tests/test262/ch09/9.8/9.8.1/S9.8.1_A7.js b/js/src/tests/test262/ch09/9.8/9.8.1/S9.8.1_A7.js
new file mode 100644
index 000000000..5ad14c25d
--- /dev/null
+++ b/js/src/tests/test262/ch09/9.8/9.8.1/S9.8.1_A7.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.
+
+/**
+ * If 1 <= s < 1e21 or -1e21 s < -1 and s has a fractional
+ * component, return the string consisting of the most significant n digits of
+ * the decimal representation of s, followed by a decimal point '.',
+ * followed by the remaining k-n digits of the decimal representation of s
+ *
+ * @path ch09/9.8/9.8.1/S9.8.1_A7.js
+ * @description 1.0000001 and -1.0000001 convert to String by explicit transformation
+ */
+
+// CHECK#1
+if (String(1.0000001) !== "1.0000001") {
+ $ERROR('#1: String(1.0000001) === "1.0000001". Actual: ' + (String(1.0000001)));
+}
+
+// CHECK#2
+if (String(-1.0000001) !== "-1.0000001") {
+ $ERROR('#2: String(-1.0000001) === "-1.0000001". Actual: ' + (String(-1.0000001)));
+}
+
diff --git a/js/src/tests/test262/ch09/9.8/9.8.1/S9.8.1_A8.js b/js/src/tests/test262/ch09/9.8/9.8.1/S9.8.1_A8.js
new file mode 100644
index 000000000..91efe0b52
--- /dev/null
+++ b/js/src/tests/test262/ch09/9.8/9.8.1/S9.8.1_A8.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.
+
+/**
+ * If 1 > s > -1, and -6 < n <= 0, return the string consisting of the
+ * character '0', followed by a decimal point '.', followed by -n occurrences
+ * of the character '0', followed by the k digits of the decimal
+ * representation of s
+ *
+ * @path ch09/9.8/9.8.1/S9.8.1_A8.js
+ * @description Various float numbers convert to String by explicit transformation
+ */
+
+// CHECK#1
+if (String(0.1) !== "0.1") {
+ $ERROR('#1: String(0.1) === "0.1". Actual: ' + (String(0.1)));
+}
+
+// CHECK#2
+if (String(0.000001) !== "0.000001") {
+ $ERROR('#2: String(0.000001) === "0.000001". Actual: ' + (String(0.000001)));
+}
+
+// CHECK#3
+if (String(1e-6) !== "0.000001") {
+ $ERROR('#3: String(1e-6) === "0.000001". Actual: ' + (String(1e-6)));
+}
+
+// CHECK#4
+if (String(1E-6) !== "0.000001") {
+ $ERROR('#4: String(1E-6) === "0.000001". Actual: ' + (String(1E-6)));
+}
+
+// CHECK#5
+if (String(-0.1) !== "-0.1") {
+ $ERROR('#5: String(-0.1) === "-0.1". Actual: ' + (String(-0.1)));
+}
+
+// CHECK#6
+if (String(-0.000001) !== "-0.000001") {
+ $ERROR('#6: String(-0.000001) === "-0.000001". Actual: ' + (String(-0.000001)));
+}
+
+// CHECK#7
+if (String(-1e-6) !== "-0.000001") {
+ $ERROR('#7: String(-1e-6) === "0.000001". Actual: ' + (String(-1e-6)));
+}
+
+// CHECK#8
+if (String(-1E-6) !== "-0.000001") {
+ $ERROR('#8: String(-1E-6) === "0.000001". Actual: ' + (String(-1E-6)));
+}
+
+
diff --git a/js/src/tests/test262/ch09/9.8/9.8.1/S9.8.1_A9_T1.js b/js/src/tests/test262/ch09/9.8/9.8.1/S9.8.1_A9_T1.js
new file mode 100644
index 000000000..d4614194b
--- /dev/null
+++ b/js/src/tests/test262/ch09/9.8/9.8.1/S9.8.1_A9_T1.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.
+
+/**
+ * Return the string consisting of the single digit of s,
+ * followed by lowercase character 'e', followed by a plus sign '+' or minus
+ * sign '-' according to whether n-1 is positive or negative, followed by the
+ * decimal representation of the integer abs(n-1) (with no leading zeros)
+ *
+ * @path ch09/9.8/9.8.1/S9.8.1_A9_T1.js
+ * @description Various big numbers convert to String by explicit transformation
+ */
+
+// CHECK#1
+if (String(1000000000000000000000) !== "1e+21") {
+ $ERROR('#1: String(1000000000000000000000) === "1e+21". Actual: ' + (String(1000000000000000000000)));
+}
+
+// CHECK#2
+if (String(10000000000000000000000) !== "1e+22") {
+ $ERROR('#2: String(10000000000000000000000) === "1e+22". Actual: ' + (String(10000000000000000000000)));
+}
+
+// CHECK#3
+if (String(1e21) !== "1e+21") {
+ $ERROR('#3: String(1e21) === "1e+21". Actual: ' + (String(1e21)));
+}
+
+// CHECK#4
+if (String(1.0e22) !== "1e+22") {
+ $ERROR('#4: String(1.0e22) === "1e+22". Actual: ' + (String(1.0e22)));
+}
+
+// CHECK#5
+if (String(1E21) !== "1e+21") {
+ $ERROR('#5: String(1E21) === "1e+21". Actual: ' + (String(1E21)));
+}
+
+// CHECK#6
+if (String(1.0E22) !== "1e+22") {
+ $ERROR('#6: String(1.0E22) === "1e+22". Actual: ' + (String(1.0E22)));
+}
+
+// CHECK#7
+if (String(-1000000000000000000000) !== "-1e+21") {
+ $ERROR('#7: String(-1000000000000000000000) === "-1e+21". Actual: ' + (String(-1000000000000000000000)));
+}
+
+// CHECK#8
+if (String(-10000000000000000000000) !== "-1e+22") {
+ $ERROR('#8: String(-10000000000000000000000) === "-1e+22". Actual: ' + (String(-10000000000000000000000)));
+}
+
+// CHECK#9
+if (String(-1e21) !== "-1e+21") {
+ $ERROR('#9: String(-1e21) === "-1e+21". Actual: ' + (String(-1e21)));
+}
+
+// CHECK#10
+if (String(-1.0e22) !== "-1e+22") {
+ $ERROR('#10: String(-1.0e22) === "-1e+22". Actual: ' + (String(-1.0e22)));
+}
+
+// CHECK#11
+if (String(-1E21) !== "-1e+21") {
+ $ERROR('#11: String(-1E21) === "-1e+21". Actual: ' + (String(-1E21)));
+}
+
+// CHECK#12
+if (String(-1.0E22) !== "-1e+22") {
+ $ERROR('#12: String(-1.0E22) === "-1e+22". Actual: ' + (String(-1.0E22)));
+}
+
diff --git a/js/src/tests/test262/ch09/9.8/9.8.1/S9.8.1_A9_T2.js b/js/src/tests/test262/ch09/9.8/9.8.1/S9.8.1_A9_T2.js
new file mode 100644
index 000000000..79ca7873e
--- /dev/null
+++ b/js/src/tests/test262/ch09/9.8/9.8.1/S9.8.1_A9_T2.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.
+
+/**
+ * Return the string consisting of the single digit of s,
+ * followed by lowercase character 'e', followed by a plus sign '+' or minus
+ * sign '-' according to whether n-1 is positive or negative, followed by the
+ * decimal representation of the integer abs(n-1) (with no leading zeros)
+ *
+ * @path ch09/9.8/9.8.1/S9.8.1_A9_T2.js
+ * @description Various float numbers with many zeros convert to String by explicit transformation
+ */
+
+// CHECK#1
+if (String(0.0000001) !== "1e-7") {
+ $ERROR('#1: String(0.0000001) === "1e-7". Actual: ' + (String(0.0000001)));
+}
+
+// CHECK#2
+if (String(0.000000000100000000000) !== "1e-10") {
+ $ERROR('#2: String(0.000000000100000000000) === "1e-10". Actual: ' + (String(0.000000000100000000000)));
+}
+
+// CHECK#3
+if (String(1e-7) !== "1e-7") {
+ $ERROR('#3: String(1e-7) === "1e-7". Actual: ' + (String(1e-7)));
+}
+
+// CHECK#4
+if (String(1.0e-10) !== "1e-10") {
+ $ERROR('#4: String(1.0e-10) === "1e-10". Actual: ' + (String(1.0e-10)));
+}
+
+// CHECK#5
+if (String(1E-7) !== "1e-7") {
+ $ERROR('#5: String(1E-7) === "1e-7". Actual: ' + (String(1E-7)));
+}
+
+// CHECK#6
+if (String(1.0E-10) !== "1e-10") {
+ $ERROR('#6: String(1.0E-10) === "1e-10". Actual: ' + (String(1.0E-10)));
+}
+
+// CHECK#7
+if (String(-0.0000001) !== "-1e-7") {
+ $ERROR('#7: String(-0.0000001) === "1e-7". Actual: ' + (String(-0.0000001)));
+}
+
+// CHECK#8
+if (String(-0.000000000100000000000) !== "-1e-10") {
+ $ERROR('#8: String(-0.000000000100000000000) === "1e-10". Actual: ' + (String(-0.000000000100000000000)));
+}
+
+// CHECK#9
+if (String(-1e-7) !== "-1e-7") {
+ $ERROR('#9: String(-1e-7) === "-1e-7". Actual: ' + (String(-1e-7)));
+}
+
+// CHECK#10
+if (String(-1.0e-10) !== "-1e-10") {
+ $ERROR('#10: String(-1.0e-10) === "-1e-10". Actual: ' + (String(-1.0e-10)));
+}
+
+// CHECK#11
+if (String(-1E-7) !== "-1e-7") {
+ $ERROR('#11: String(-1E-7) === "-1e-7". Actual: ' + (String(-1E-7)));
+}
+
+// CHECK#12
+if (String(-1.0E-10) !== "-1e-10") {
+ $ERROR('#12: String(-1.0E-10) === "-1e-10". Actual: ' + (String(-1.0E-10)));
+}
+
diff --git a/js/src/tests/test262/ch09/9.8/9.8.1/browser.js b/js/src/tests/test262/ch09/9.8/9.8.1/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch09/9.8/9.8.1/browser.js
diff --git a/js/src/tests/test262/ch09/9.8/9.8.1/shell.js b/js/src/tests/test262/ch09/9.8/9.8.1/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch09/9.8/9.8.1/shell.js
diff --git a/js/src/tests/test262/ch09/9.8/S9.8_A1_T1.js b/js/src/tests/test262/ch09/9.8/S9.8_A1_T1.js
new file mode 100644
index 000000000..efce3a546
--- /dev/null
+++ b/js/src/tests/test262/ch09/9.8/S9.8_A1_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.
+
+/**
+ * Result of ToString conversion from undefined value is "undefined"
+ *
+ * @path ch09/9.8/S9.8_A1_T1.js
+ * @description Undefined values is undefined, void 0 and eval("var x"). Use explicit transformation
+ */
+
+// CHECK#1
+if (String(undefined) !== "undefined") {
+ $ERROR('#1: String(undefined) === "undefined". Actual: ' + (String(undefined)));
+}
+
+// CHECK#2
+if (String(void 0) !== "undefined") {
+ $ERROR('#2: String(void 0) === "undefined". Actual: ' + (String(void 0)));
+}
+
+// CHECK#3
+if (String(eval("var x")) !== "undefined") {
+ $ERROR('#3: String(eval("var x")) === "undefined" . Actual: ' + (String(eval("var x"))));
+}
+
diff --git a/js/src/tests/test262/ch09/9.8/S9.8_A1_T2.js b/js/src/tests/test262/ch09/9.8/S9.8_A1_T2.js
new file mode 100644
index 000000000..dd26c11b4
--- /dev/null
+++ b/js/src/tests/test262/ch09/9.8/S9.8_A1_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.
+
+/**
+ * Result of ToString conversion from undefined value is "undefined"
+ *
+ * @path ch09/9.8/S9.8_A1_T2.js
+ * @description Undefined values is undefined, void 0 and eval("var x"). Use implicit transformation
+ */
+
+// CHECK#1
+if (undefined + "" !== "undefined") {
+ $ERROR('#1: undefined + "" === "undefined". Actual: ' + (undefined + ""));
+}
+
+// CHECK#2
+if (void 0 + "" !== "undefined") {
+ $ERROR('#2: void 0 + "" === "undefined". Actual: ' + (void 0 + ""));
+}
+
+// CHECK#3
+if (eval("var x") + "" !== "undefined") {
+ $ERROR('#3: eval("var x") + "" === "undefined". Actual: ' + (eval("var x") + ""));
+}
+
diff --git a/js/src/tests/test262/ch09/9.8/S9.8_A2_T1.js b/js/src/tests/test262/ch09/9.8/S9.8_A2_T1.js
new file mode 100644
index 000000000..0a1b982b7
--- /dev/null
+++ b/js/src/tests/test262/ch09/9.8/S9.8_A2_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.
+
+/**
+ * Result of ToString conversion from null value is "null"
+ *
+ * @path ch09/9.8/S9.8_A2_T1.js
+ * @description null convert to String by explicit transformation
+ */
+
+// CHECK#1
+if (String(null) !== "null") {
+ $ERROR('#1: String(null) === "null". Actual: ' + (String(null)));
+}
+
diff --git a/js/src/tests/test262/ch09/9.8/S9.8_A2_T2.js b/js/src/tests/test262/ch09/9.8/S9.8_A2_T2.js
new file mode 100644
index 000000000..3b760909b
--- /dev/null
+++ b/js/src/tests/test262/ch09/9.8/S9.8_A2_T2.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.
+
+/**
+ * Result of ToString conversion from null value is "null"
+ *
+ * @path ch09/9.8/S9.8_A2_T2.js
+ * @description null convert to String by implicit transformation
+ */
+
+// CHECK#1
+if (null + "" !== "null") {
+ $ERROR('#1: null + "" === "null". Actual: ' + (null + ""));
+}
+
diff --git a/js/src/tests/test262/ch09/9.8/S9.8_A3_T1.js b/js/src/tests/test262/ch09/9.8/S9.8_A3_T1.js
new file mode 100644
index 000000000..cc267edc8
--- /dev/null
+++ b/js/src/tests/test262/ch09/9.8/S9.8_A3_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.
+
+/**
+ * Result of ToString conversion from boolean value is "true" if
+ * the argument is "true", else is "false"
+ *
+ * @path ch09/9.8/S9.8_A3_T1.js
+ * @description True and false convert to String by explicit transformation
+ */
+
+// CHECK#1
+if (String(false) !== "false") {
+ $ERROR('#1: String(false) === "false". Actual: ' + (String(false)));
+}
+
+// CHECK#2
+if (String(true) !== "true") {
+ $ERROR('#2: String(true) === "true". Actual: ' + (String(true)));
+}
+
diff --git a/js/src/tests/test262/ch09/9.8/S9.8_A3_T2.js b/js/src/tests/test262/ch09/9.8/S9.8_A3_T2.js
new file mode 100644
index 000000000..788bcb58d
--- /dev/null
+++ b/js/src/tests/test262/ch09/9.8/S9.8_A3_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.
+
+/**
+ * Result of ToString conversion from boolean value is "true" if
+ * the argument is "true", else is "false"
+ *
+ * @path ch09/9.8/S9.8_A3_T2.js
+ * @description True and false convert to String by implicit transformation
+ */
+
+// CHECK#1
+if (false + "" !== "false") {
+ $ERROR('#1: false + "" === "false". Actual: ' + (false + ""));
+}
+
+// CHECK#2
+if (true + "" !== "true") {
+ $ERROR('#2: true + "" === "true". Actual: ' + (true + ""));
+}
+
diff --git a/js/src/tests/test262/ch09/9.8/S9.8_A4_T1.js b/js/src/tests/test262/ch09/9.8/S9.8_A4_T1.js
new file mode 100644
index 000000000..064458461
--- /dev/null
+++ b/js/src/tests/test262/ch09/9.8/S9.8_A4_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.
+
+/**
+ * Result of String conversion from string value is the input argument (no conversion)
+ *
+ * @path ch09/9.8/S9.8_A4_T1.js
+ * @description Some strings convert to String with explicit transformation
+ */
+
+// CHECK#1
+var x1 = "abc";
+if (String(x1) !== x1) {
+ $ERROR('#1: String("abc") === "abc". Actual: ' + (String("abc")));
+}
+
+// CHECK#2
+var x2 = "abc";
+if (typeof String(x2) !== typeof x2) {
+ $ERROR('#2: typeof String("abc") === "string". Actual: ' + (typeof String("abc")));
+}
+
diff --git a/js/src/tests/test262/ch09/9.8/S9.8_A4_T2.js b/js/src/tests/test262/ch09/9.8/S9.8_A4_T2.js
new file mode 100644
index 000000000..fdde4c38e
--- /dev/null
+++ b/js/src/tests/test262/ch09/9.8/S9.8_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.
+
+/**
+ * Result of String conversion from string value is the input argument (no conversion)
+ *
+ * @path ch09/9.8/S9.8_A4_T2.js
+ * @description Some strings convert to String by implicit transformation
+ */
+
+// CHECK#1
+var x1 = "abc";
+if (x1 + "" !== x1) {
+ $ERROR('#1: "abc" + "" === "abc". Actual: ' + ("abc" + ""));
+}
+
+// CHECK#2
+var x2 = "abc";
+if (typeof x2 + "" !== typeof x2) {
+ $ERROR('#2: typeof "abc" + "" === "string". Actual: ' + (typeof "abc" + ""));
+}
+
diff --git a/js/src/tests/test262/ch09/9.8/S9.8_A5_T1.js b/js/src/tests/test262/ch09/9.8/S9.8_A5_T1.js
new file mode 100644
index 000000000..55d88c102
--- /dev/null
+++ b/js/src/tests/test262/ch09/9.8/S9.8_A5_T1.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.
+
+/**
+ * Result of String conversion from Object value is conversion
+ * from primitive value
+ *
+ * @path ch09/9.8/S9.8_A5_T1.js
+ * @description Some objects convert to String by explicit transformation
+ */
+
+// CHECK#1
+if (String(new Number()) !== "0") {
+ $ERROR('#1: String(new Number()) === "0". Actual: ' + (String(new Number())));
+}
+
+// CHECK#2
+if (String(new Number(0)) !== "0") {
+ $ERROR('#2: String(new Number(0)) === "0". Actual: ' + (String(new Number(0))));
+}
+
+// CHECK#3
+if (String(new Number(Number.NaN)) !== "NaN") {
+ $ERROR('#3: String(new Number(Number.NaN)) === Not-a-Number. Actual: ' + (String(new Number(Number.NaN))));
+}
+
+// CHECK#4
+if (String(new Number(null)) !== "0") {
+ $ERROR('#4: String(new Number(null)) === "0". Actual: ' + (String(new Number(null))));
+}
+
+// CHECK#5
+if (String(new Number(void 0)) !== "NaN") {
+ $ERROR('#5: String(new Number(void 0)) === Not-a-Number. Actual: ' + (String(new Number(void 0))));
+}
+
+// CHECK#6
+if (String(new Number(true)) !== "1") {
+ $ERROR('#6: String(new Number(true)) === "1". Actual: ' + (String(new Number(true))));
+}
+
+// CHECK#7
+if (String(new Number(false)) !== "0") {
+ $ERROR('#7: String(new Number(false)) === "0". Actual: ' + (String(new Number(false))));
+}
+
+// CHECK#8
+if (String(new Boolean(true)) !== "true") {
+ $ERROR('#8: String(new Boolean(true)) === "true". Actual: ' + (String(new Boolean(true))));
+}
+
+// CHECK#9
+if (String(new Boolean(false)) !== "false") {
+ $ERROR('#9: Number(new Boolean(false)) === "false". Actual: ' + (Number(new Boolean(false))));
+}
+
+// CHECK#10
+if (String(new Array(2,4,8,16,32)) !== "2,4,8,16,32") {
+ $ERROR('#10: String(new Array(2,4,8,16,32)) === "2,4,8,16,32". Actual: ' + (String(new Array(2,4,8,16,32))));
+}
+
+// CHECK#11
+var myobj1 = {
+ toNumber : function(){return 12345;},
+ toString : function(){return 67890;},
+ valueOf : function(){return "[object MyObj]";}
+ };
+
+if (String(myobj1) !== "67890"){
+ $ERROR("#11: String(myobj) calls ToPrimitive with hint String");
+}
+
+// CHECK#12
+var myobj2 = {
+ toNumber : function(){return 12345;},
+ toString : function(){return {}},
+ valueOf : function(){return "[object MyObj]";}
+ };
+
+if (String(myobj2) !== "[object MyObj]"){
+ $ERROR("#12: String(myobj) calls ToPrimitive with hint String");
+}
+
+// CHECK#13
+var myobj3 = {
+ toNumber : function(){return 12345;},
+ valueOf : function(){return "[object MyObj]";}
+ };
+
+if (String(myobj3) !== "[object Object]"){
+ $ERROR("#13: String(myobj) calls ToPrimitive with hint String");
+}
+
diff --git a/js/src/tests/test262/ch09/9.8/S9.8_A5_T2.js b/js/src/tests/test262/ch09/9.8/S9.8_A5_T2.js
new file mode 100644
index 000000000..7911adaee
--- /dev/null
+++ b/js/src/tests/test262/ch09/9.8/S9.8_A5_T2.js
@@ -0,0 +1,92 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * Result of String conversion from Object value is conversion
+ * from primitive value
+ *
+ * @path ch09/9.8/S9.8_A5_T2.js
+ * @description Some objects convert to String by implicit transformation
+ */
+
+// CHECK#1
+if (new Number() + "" !== "0") {
+ $ERROR('#1: new Number() + "" === "0". Actual: ' + (new Number() + ""));
+}
+
+// CHECK#2
+if (new Number(0) + "" !== "0") {
+ $ERROR('#2: new Number(0) + "" === "0". Actual: ' + (new Number(0) + ""));
+}
+
+// CHECK#3
+if (new Number(Number.NaN) + "" !== "NaN") {
+ $ERROR('#3: new Number(Number.NaN) + "" === "NaN". Actual: ' + (new Number(Number.NaN) + ""));
+}
+
+// CHECK#4
+if (new Number(null) + "" !== "0") {
+ $ERROR('#4: new Number(null) + "" === "0". Actual: ' + (new Number(null) + ""));
+}
+
+// CHECK#5
+if (new Number(void 0) + "" !== "NaN") {
+ $ERROR('#5: new Number(void 0) + "" === "NaN. Actual: ' + (new Number(void 0) + ""));
+}
+
+// CHECK#6
+if (new Number(true) + "" !== "1") {
+ $ERROR('#6: new Number(true) + "" === "1". Actual: ' + (new Number(true) + ""));
+}
+
+// CHECK#7
+if (new Number(false) + "" !== "0") {
+ $ERROR('#7: new Number(false) + "" === "0". Actual: ' + (new Number(false) + ""));
+}
+
+// CHECK#8
+if (new Boolean(true) + "" !== "true") {
+ $ERROR('#8: new Boolean(true) + "" === "true". Actual: ' + (new Boolean(true) + ""));
+}
+
+// CHECK#9
+if (new Boolean(false) + "" !== "false") {
+ $ERROR('#9: Number(new Boolean(false)) === "false". Actual: ' + (Number(new Boolean(false))));
+}
+
+// CHECK#10
+if (new Array(2,4,8,16,32) + "" !== "2,4,8,16,32") {
+ $ERROR('#10: new Array(2,4,8,16,32) + "" === "2,4,8,16,32". Actual: ' + (new Array(2,4,8,16,32) + ""));
+}
+
+// CHECK#11
+var myobj1 = {
+ toNumber : function(){return 12345;},
+ toString : function(){return 67890;},
+ valueOf : function(){return "[object MyObj]";}
+ };
+
+if (myobj1 + "" !== "[object MyObj]"){
+ $ERROR('#11: myobj1 + "" calls ToPrimitive with hint Number. Exptected: "[object MyObj]". Actual: ' + (myobj1 + ""));
+}
+
+// CHECK#12
+var myobj2 = {
+ toNumber : function(){return 12345;},
+ toString : function(){return 67890},
+ valueOf : function(){return {}}
+ };
+
+if (myobj2 + "" !== "67890"){
+ $ERROR('#12: myobj2 + "" calls ToPrimitive with hint Number. Exptected: "67890". Actual: ' + (myobj2 + ""));
+}
+
+// CHECK#13
+var myobj3 = {
+ toNumber : function(){return 12345;}
+ };
+
+if (myobj3 + "" !== "[object Object]"){
+ $ERROR('#13: myobj3 + "" calls ToPrimitive with hint Number. Exptected: "[object Object]". Actual: ' + (myobj3 + ""));
+}
+
diff --git a/js/src/tests/test262/ch09/9.8/browser.js b/js/src/tests/test262/ch09/9.8/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch09/9.8/browser.js
diff --git a/js/src/tests/test262/ch09/9.8/shell.js b/js/src/tests/test262/ch09/9.8/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch09/9.8/shell.js
diff --git a/js/src/tests/test262/ch09/9.9/S9.9_A1.js b/js/src/tests/test262/ch09/9.9/S9.9_A1.js
new file mode 100644
index 000000000..a1d36aabd
--- /dev/null
+++ b/js/src/tests/test262/ch09/9.9/S9.9_A1.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.
+
+/**
+ * ToObject conversion from undefined value must throw TypeError
+ *
+ * @path ch09/9.9/S9.9_A1.js
+ * @description Trying to convert undefined to Object
+ * @noStrict
+ */
+
+// CHECK#1
+try{
+ undefined['foo'];
+ $ERROR('#1.1: undefined[\'foo\'] must throw TypeError. Actual: ' + (undefined['foo']));
+}
+catch(e){
+ if((e instanceof TypeError) !== true){
+ $ERROR('#1.2: undefined[\'foo\'] must throw TypeError. Actual: ' + (e));
+ }
+}
+
+// CHECK#2
+try{
+ with(undefined) x = 2;
+ $ERROR('#2.1: with(undefined) x = 2 must throw TypeError. Actual: x === ' + (x));
+}
+catch(e){
+ if((e instanceof TypeError) !== true){
+ $ERROR('#2.2: with(undefined) x = 2 must throw TypeError. Actual: ' + (e));
+ }
+}
+
diff --git a/js/src/tests/test262/ch09/9.9/S9.9_A2.js b/js/src/tests/test262/ch09/9.9/S9.9_A2.js
new file mode 100644
index 000000000..42e1980e7
--- /dev/null
+++ b/js/src/tests/test262/ch09/9.9/S9.9_A2.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.
+
+/**
+ * ToObject conversion from null value must throw TypeError
+ *
+ * @path ch09/9.9/S9.9_A2.js
+ * @description Trying to convert null to Object
+ * @noStrict
+ */
+
+// CHECK#1
+try{
+ null['foo'];
+ $ERROR('#1.1: null[\'foo\'] throw TypeError. Actual: ' + (null['foo']));
+}
+catch(e){
+ if((e instanceof TypeError) !== true){
+ $ERROR('#1.2: null[\'foo\'] must throw TypeError. Actual: ' + (e));
+ }
+}
+
+// CHECK#2
+try{
+ with(null) x = 2;
+ $ERROR('#2.1: with(null) x = 2 must throw TypeError. Actual: x === . Actual: ' + (x));
+}
+catch(e){
+ if((e instanceof TypeError) !== true){
+ $ERROR('#2.2: with(null) x = 2 must throw TypeError. Actual: ' + (e));
+ }
+}
+
diff --git a/js/src/tests/test262/ch09/9.9/S9.9_A3.js b/js/src/tests/test262/ch09/9.9/S9.9_A3.js
new file mode 100644
index 000000000..f91cd8e82
--- /dev/null
+++ b/js/src/tests/test262/ch09/9.9/S9.9_A3.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.
+
+/**
+ * ToObject conversion from Boolean: create a new Boolean object
+ * whose [[value]] property is set to the value of the boolean
+ *
+ * @path ch09/9.9/S9.9_A3.js
+ * @description Trying to convert from Boolean to Object
+ */
+
+// CHECK#1
+if (Object(true).valueOf() !== true){
+ $ERROR('#1: Object(true).valueOf() === true. Actual: ' + (Object(true).valueOf()));
+}
+
+// CHECK#2
+if (typeof Object(true) !== "object"){
+ $ERROR('#2: typeof Object(true) === "object". Actual: ' + (typeof Object(true)));
+}
+
+// CHECK#3
+if (Object(true).constructor.prototype !== Boolean.prototype){
+ $ERROR('#3: Object(true).constructor.prototype === Boolean.prototype. Actual: ' + (Object(true).constructor.prototype));
+}
+
+// CHECK#4
+if (Object(false).valueOf() !== false){
+ $ERROR('#4: Object(false).valueOf() === false. Actual: ' + (Object(false).valueOf()));
+}
+
+// CHECK#5
+if (typeof Object(false) !== "object"){
+ $ERROR('#5: typeof Object(false) === "object". Actual: ' + (typeof Object(false)));
+}
+
+// CHECK#6
+if (Object(false).constructor.prototype !== Boolean.prototype){
+ $ERROR('#6: Object(false).constructor.prototype === Boolean.prototype. Actual: ' + (Object(false).constructor.prototype));
+}
+
diff --git a/js/src/tests/test262/ch09/9.9/S9.9_A4.js b/js/src/tests/test262/ch09/9.9/S9.9_A4.js
new file mode 100644
index 000000000..2f08bf52c
--- /dev/null
+++ b/js/src/tests/test262/ch09/9.9/S9.9_A4.js
@@ -0,0 +1,178 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * ToObject conversion from Number: create a new Number object
+ * whose [[value]] property is set to the value of the number
+ *
+ * @path ch09/9.9/S9.9_A4.js
+ * @description Converting from various numbers to Object
+ */
+
+// CHECK#1
+if (Object(0).valueOf() !== 0){
+ $ERROR('#1: Object(0).valueOf() === 0. Actual: ' + (Object(0).valueOf()));
+}
+
+// CHECK#2
+if (typeof Object(0) !== "object"){
+ $ERROR('#2: typeof Object(0) === "object". Actual: ' + (typeof Object(0)));
+}
+
+// CHECK#3
+if (Object(0).constructor.prototype !== Number.prototype){
+ $ERROR('#3: Object(0).constructor.prototype === Number.prototype. Actual: ' + (Object(0).constructor.prototype));
+}
+
+// CHECK#4
+if (Object(-0).valueOf() !== -0){
+ $ERROR('#4.1: Object(-0).valueOf() === 0. Actual: ' + (Object(-0).valueOf()));
+} else if (1/Object(-0).valueOf() !== Number.NEGATIVE_INFINITY) {
+ $ERROR('#4.2: Object(-0).valueOf() === -0. Actual: +0');
+}
+
+// CHECK#5
+if (typeof Object(-0) !== "object"){
+ $ERROR('#5: typeof Object(-0) === "object". Actual: ' + (typeof Object(-0)));
+}
+
+// CHECK#6
+if (Object(-0).constructor.prototype !== Number.prototype){
+ $ERROR('#6: Object(-0).constructor.prototype === Number.prototype. Actual: ' + (Object(-0).constructor.prototype));
+}
+
+// CHECK#7
+if (Object(1).valueOf() !== 1){
+ $ERROR('#7: Object(1).valueOf() === 1. Actual: ' + (Object(1).valueOf()));
+}
+
+// CHECK#8
+if (typeof Object(1) !== "object"){
+ $ERROR('#8: typeof Object(1) === "object". Actual: ' + (typeof Object(1)));
+}
+
+// CHECK#9
+if (Object(1).constructor.prototype !== Number.prototype){
+ $ERROR('#9: Object(1).constructor.prototype === Number.prototype. Actual: ' + (Object(1).constructor.prototype));
+}
+
+// CHECK#10
+if (Object(-1).valueOf() !== -1){
+ $ERROR('#10: Object(-1).valueOf() === -1. Actual: ' + (Object(-1).valueOf()));
+}
+
+// CHECK#11
+if (typeof Object(-1) !== "object"){
+ $ERROR('#11: typeof Object(-1) === "object". Actual: ' + (typeof Object(-1)));
+}
+
+// CHECK#12
+if (Object(-1).constructor.prototype !== Number.prototype){
+ $ERROR('#12: Object(-1).constructor.prototype === Number.prototype. Actual: ' + (Object(-1).constructor.prototype));
+}
+
+// CHECK#13
+if (Object(Number.MIN_VALUE).valueOf() !== Number.MIN_VALUE){
+ $ERROR('#13: Object(Number.MIN_VALUE).valueOf() === Number.MIN_VALUE. Actual: ' + (Object(Number.MIN_VALUE).valueOf()));
+}
+
+// CHECK#14
+if (typeof Object(Number.MIN_VALUE) !== "object"){
+ $ERROR('#14: typeof Object(Number.MIN_VALUE) === "object". Actual: ' + (typeof Object(Number.MIN_VALUE)));
+}
+
+// CHECK#15
+if (Object(Number.MIN_VALUE).constructor.prototype !== Number.prototype){
+ $ERROR('#15: Object(Number.MIN_VALUE).constructor.prototype === Number.prototype. Actual: ' + (Object(Number.MIN_VALUE).constructor.prototype));
+}
+
+// CHECK#16
+if (Object(Number.MAX_VALUE).valueOf() !== Number.MAX_VALUE){
+ $ERROR('#16: Object(Number.MAX_VALUE).valueOf() === Number.MAX_VALUE. Actual: ' + (Object(Number.MAX_VALUE).valueOf()));
+}
+
+// CHECK#17
+if (typeof Object(Number.MAX_VALUE) !== "object"){
+ $ERROR('#17: typeof Object(Number.MAX_VALUE) === "object". Actual: ' + (typeof Object(Number.MAX_VALUE)));
+}
+
+// CHECK#18
+if (Object(Number.MAX_VALUE).constructor.prototype !== Number.prototype){
+ $ERROR('#18: Object(Number.MAX_VALUE).constructor.prototype === Number.prototype. Actual: ' + (Object(Number.MAX_VALUE).constructor.prototype));
+}
+
+// CHECK#19
+if (Object(Number.POSITIVE_INFINITY).valueOf() !== Number.POSITIVE_INFINITY){
+ $ERROR('#19: Object(Number.POSITIVE_INFINITY).valueOf() === Number.POSITIVE_INFINITY. Actual: ' + (Object(Number.POSITIVE_INFINITY).valueOf()));
+}
+
+// CHECK#20
+if (typeof Object(Number.POSITIVE_INFINITY) !== "object"){
+ $ERROR('#20: typeof Object(Number.POSITIVE_INFINITY) === "object". Actual: ' + (typeof Object(Number.POSITIVE_INFINITY)));
+}
+
+// CHECK#21
+if (Object(Number.POSITIVE_INFINITY).constructor.prototype !== Number.prototype){
+ $ERROR('#21: Object(Number.POSITIVE_INFINITY).constructor.prototype === Number.prototype. Actual: ' + (Object(Number.POSITIVE_INFINITY).constructor.prototype));
+}
+
+// CHECK#22
+if (Object(Number.NEGATIVE_INFINITY).valueOf() !== Number.NEGATIVE_INFINITY){
+ $ERROR('#22: Object(Number.NEGATIVE_INFINITY).valueOf() === Number.NEGATIVE_INFINITY. Actual: ' + (Object(Number.NEGATIVE_INFINITY).valueOf()));
+}
+
+// CHECK#23
+if (typeof Object(Number.NEGATIVE_INFINITY) !== "object"){
+ $ERROR('#23: typeof Object(Number.NEGATIVE_INFINITY) === "object". Actual: ' + (typeof Object(Number.NEGATIVE_INFINITY)));
+}
+
+// CHECK#24
+if (Object(Number.NEGATIVE_INFINITY).constructor.prototype !== Number.prototype){
+ $ERROR('#24: Object(Number.NEGATIVE_INFINITY).constructor.prototype === Number.prototype. Actual: ' + (Object(Number.NEGATIVE_INFINITY).constructor.prototype));
+}
+
+// CHECK#25
+if (isNaN(Object(Number.NaN).valueOf()) !== true){
+ $ERROR('#25: Object(Number.NaN).valueOf() === Not-a-Number. Actual: ' + (Object(Number.NaN).valueOf()));
+}
+
+// CHECK#26
+if (typeof Object(Number.NaN) !== "object"){
+ $ERROR('#26: typeof Object(Number.NaN) === "object". Actual: ' + (typeof Object(Number.NaN)));
+}
+
+// CHECK#27
+if (Object(Number.NaN).constructor.prototype !== Number.prototype){
+ $ERROR('#27: Object(Number.NaN).constructor.prototype === Number.prototype. Actual: ' + (Object(Number.NaN).constructor.prototype));
+}
+
+// CHECK#28
+if (Object(1.2345).valueOf() !== 1.2345){
+ $ERROR('#28: Object(1.2345).valueOf() === 1.2345. Actual: ' + (Object(1.2345).valueOf()));
+}
+
+// CHECK#29
+if (typeof Object(1.2345) !== "object"){
+ $ERROR('#29: typeof Object(1.2345) === "object". Actual: ' + (typeof Object(1.2345)));
+}
+
+// CHECK#30
+if (Object(1.2345).constructor.prototype !== Number.prototype){
+ $ERROR('#30: Object(1.2345).constructor.prototype === Number.prototype. Actual: ' + (Object(1.2345).constructor.prototype));
+}
+
+// CHECK#31
+if (Object(-1.2345).valueOf() !== -1.2345){
+ $ERROR('#31: Object(-1.2345).valueOf() === -1.2345. Actual: ' + (Object(-1.2345).valueOf()));
+}
+
+// CHECK#32
+if (typeof Object(-1.2345) !== "object"){
+ $ERROR('#32: typeof Object(-1.2345) === "object". Actual: ' + (typeof Object(-1.2345)));
+}
+
+// CHECK#33
+if (Object(-1.2345).constructor.prototype !== Number.prototype){
+ $ERROR('#33: Object(-1.2345).constructor.prototype === Number.prototype. Actual: ' + (Object(-1.2345).constructor.prototype));
+}
+
diff --git a/js/src/tests/test262/ch09/9.9/S9.9_A5.js b/js/src/tests/test262/ch09/9.9/S9.9_A5.js
new file mode 100644
index 000000000..2f59c1182
--- /dev/null
+++ b/js/src/tests/test262/ch09/9.9/S9.9_A5.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.
+
+/**
+ * ToObject conversion from String: create a new String object
+ * whose [[value]] property is set to the value of the string
+ *
+ * @path ch09/9.9/S9.9_A5.js
+ * @description Converting from various strings to Object
+ */
+
+// CHECK#1
+if (Object("some string").valueOf() !== "some string"){
+ $ERROR('#1: Object("some string").valueOf() === "some string". Actual: ' + (Object("some string").valueOf()));
+}
+
+// CHECK#2
+if (typeof Object("some string") !== "object"){
+ $ERROR('#2: typeof Object("some string") === "object". Actual: ' + (typeof Object("some string")));
+}
+
+// CHECK#3
+if (Object("some string").constructor.prototype !== String.prototype){
+ $ERROR('#3: Object("some string").constructor.prototype === String.prototype. Actual: ' + (Object("some string").constructor.prototype));
+}
+
+// CHECK#4
+if (Object("").valueOf() !== ""){
+ $ERROR('#4: Object("").valueOf() === false. Actual: ' + (Object("").valueOf()));
+}
+
+// CHECK#5
+if (typeof Object("") !== "object"){
+ $ERROR('#5: typeof Object("") === "object". Actual: ' + (typeof Object("")));
+}
+
+// CHECK#6
+if (Object("").constructor.prototype !== String.prototype){
+ $ERROR('#6: Object("").constructor.prototype === String.prototype. Actual: ' + (Object("").constructor.prototype));
+}
+
+// CHECK#7
+if (Object("\r\t\b\n\v\f").valueOf() !== "\r\t\b\n\v\f"){
+ $ERROR('#7: Object("\\r\\t\\b\\n\\v\\f").valueOf() === false. Actual: ' + (Object("\r\t\b\n\v\f").valueOf()));
+}
+
+// CHECK#8
+if (typeof Object("\r\t\b\n\v\f") !== "object"){
+ $ERROR('#8: typeof Object("\\r\\t\\b\\n\\v\\f") === "object". Actual: ' + (typeof Object("\r\t\b\n\v\f")));
+}
+
+// CHECK#9
+if (Object("\r\t\b\n\v\f").constructor.prototype !== String.prototype){
+ $ERROR('#9: Object("\\r\\t\\b\\n\\v\\f").constructor.prototype === String.prototype. Actual: ' + (Object("\r\t\b\n\v\f").constructor.prototype));
+}
+
+// CHECK#10
+if (Object(String(10)).valueOf() !== "10"){
+ $ERROR('#10: Object(String(10)).valueOf() === false. Actual: ' + (Object(String(10)).valueOf()));
+}
+
+// CHECK#11
+if (typeof Object(String(10)) !== "object"){
+ $ERROR('#11: typeof Object(String(10)) === "object". Actual: ' + (typeof Object(String(10))));
+}
+
+// CHECK#12
+if (Object(String(10)).constructor.prototype !== String.prototype){
+ $ERROR('#12: Object(String(10)).constructor.prototype === String.prototype. Actual: ' + (Object(String(10)).constructor.prototype));
+}
+
diff --git a/js/src/tests/test262/ch09/9.9/S9.9_A6.js b/js/src/tests/test262/ch09/9.9/S9.9_A6.js
new file mode 100644
index 000000000..a25679016
--- /dev/null
+++ b/js/src/tests/test262/ch09/9.9/S9.9_A6.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.
+
+/**
+ * ToObject conversion from Object: The result is the input
+ * argument (no conversion)
+ *
+ * @path ch09/9.9/S9.9_A6.js
+ * @description Converting from Objects to Object
+ */
+
+function MyObject( val ) {
+ this.value = val;
+ this.valueOf = function (){ return this.value; }
+}
+
+var x = new MyObject(1);
+var y = Object(x);
+
+// CHECK#1
+if (y.valueOf() !== x.valueOf()){
+ $ERROR('#1: Object(obj).valueOf() === obj.valueOf(). Actual: ' + (Object(obj).valueOf()));
+}
+
+// CHECK#2
+if (typeof y !== typeof x){
+ $ERROR('#2: typeof Object(obj) === typeof obj. Actual: ' + (typeof Object(obj)));
+}
+
+// CHECK#3
+if (y.constructor.prototype !== x.constructor.prototype){
+ $ERROR('#3: Object(obj).constructor.prototype === obj.constructor.prototype. Actual: ' + (Object(obj).constructor.prototype));
+}
+
+
+// CHECK#4
+if (y !== x){
+ $ERROR('#4: Object(obj) === obj');
+}
+
diff --git a/js/src/tests/test262/ch09/9.9/browser.js b/js/src/tests/test262/ch09/9.9/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch09/9.9/browser.js
diff --git a/js/src/tests/test262/ch09/9.9/shell.js b/js/src/tests/test262/ch09/9.9/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch09/9.9/shell.js
diff --git a/js/src/tests/test262/ch09/browser.js b/js/src/tests/test262/ch09/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch09/browser.js
diff --git a/js/src/tests/test262/ch09/shell.js b/js/src/tests/test262/ch09/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch09/shell.js
diff --git a/js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-1-s.js b/js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-1-s.js
new file mode 100644
index 000000000..a9cf025bc
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-1-s.js
@@ -0,0 +1,18 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.1/10.1.1/10.1.1-1-s.js
+ * @description Strict Mode - Use Strict Directive Prologue is 'use strict'; which contains two space between 'use' and 'strict'
+ * @noStrict
+ */
+
+
+function testcase() {
+ "use strict";
+ var public = 1;
+ return public === 1;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-10-s.js b/js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-10-s.js
new file mode 100644
index 000000000..51aa8ca73
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-10-s.js
@@ -0,0 +1,18 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.1/10.1.1/10.1.1-10-s.js
+ * @description Strict Mode - Use Strict Directive Prologue is ''USE STRICT';' in which all characters are uppercase
+ * @noStrict
+ */
+
+
+function testcase() {
+ "USE STRICT";
+ var public = 1;
+ return public === 1;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-11-s.js b/js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-11-s.js
new file mode 100644
index 000000000..6d7794d97
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-11-s.js
@@ -0,0 +1,23 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.1/10.1.1/10.1.1-11-s.js
+ * @description Strict Mode - Eval code is strict code with a Use Strict Directive at the beginning of the block
+ * @noStrict
+ */
+
+
+function testcase() {
+ try {
+ eval("'use strict'; var public = 1; var anotherVariableNotReserveWord = 2;");
+
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError && typeof public === "undefined" &&
+ typeof anotherVariableNotReserveWord === "undefined";
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-12-s.js b/js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-12-s.js
new file mode 100644
index 000000000..09fdffe84
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-12-s.js
@@ -0,0 +1,17 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.1/10.1.1/10.1.1-12-s.js
+ * @description Strict Mode - Eval code is strict eval code with a Use Strict Directive in the middle of the block
+ * @noStrict
+ */
+
+
+function testcase() {
+ eval("var public = 1; 'use strict'; var anotherVariableNotReserveWord = 2;");
+ return public === 1 && anotherVariableNotReserveWord === 2;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-13-s.js b/js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-13-s.js
new file mode 100644
index 000000000..0a4ba30ff
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-13-s.js
@@ -0,0 +1,17 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.1/10.1.1/10.1.1-13-s.js
+ * @description Strict Mode - Eval code is strict eval code with a Use Strict Directive at the end of the block
+ * @noStrict
+ */
+
+
+function testcase() {
+ eval("var public = 1; var anotherVariableNotReserveWord = 2; 'use strict';");
+ return public === 1 && anotherVariableNotReserveWord === 2;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-14-s.js b/js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-14-s.js
new file mode 100644
index 000000000..dff413366
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-14-s.js
@@ -0,0 +1,22 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.1/10.1.1/10.1.1-14-s.js
+ * @description Strict Mode - The call to eval function is contained in a Strict Mode block
+ * @noStrict
+ */
+
+
+function testcase() {
+ 'use strict';
+ try {
+ eval("var public = 1;");
+ return false;
+ } catch (e) {
+ return true;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-15-s.js b/js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-15-s.js
new file mode 100644
index 000000000..b7f7664f5
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-15-s.js
@@ -0,0 +1,26 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.1/10.1.1/10.1.1-15-s.js
+ * @description Strict Mode - Function code that is part of a FunctionDeclaration is strict function code if FunctionDeclaration is contained in use strict
+ * @noStrict
+ */
+
+
+function testcase() {
+ "use strict";
+ function fun() {
+ try {
+ eval("var public = 1;");
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError;
+ }
+ }
+
+ return fun();
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-16-s.js b/js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-16-s.js
new file mode 100644
index 000000000..35ef8803f
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-16-s.js
@@ -0,0 +1,24 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.1/10.1.1/10.1.1-16-s.js
+ * @description Strict Mode - Function code that is part of a FunctionExpression is strict function code if FunctionExpression is contained in use strict
+ * @noStrict
+ */
+
+
+function testcase() {
+ "use strict";
+ return function () {
+ try {
+ eval("var public = 1;");
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError;
+ }
+ } ();
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-17-s.js b/js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-17-s.js
new file mode 100644
index 000000000..976e644fe
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-17-s.js
@@ -0,0 +1,30 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.1/10.1.1/10.1.1-17-s.js
+ * @description Strict Mode - Function code that is part of a Accessor PropertyAssignment is in Strict Mode if Accessor PropertyAssignment is contained in use strict(getter)
+ * @noStrict
+ */
+
+
+function testcase() {
+ "use strict";
+ try {
+ var obj = {};
+ Object.defineProperty(obj, "accProperty", {
+ get: function () {
+ eval("public = 1;");
+ return 11;
+ }
+ });
+
+ var temp = obj.accProperty === 11;
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-18-s.js b/js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-18-s.js
new file mode 100644
index 000000000..b384ebfe5
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-18-s.js
@@ -0,0 +1,31 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.1/10.1.1/10.1.1-18-s.js
+ * @description Strict Mode - Function code that is part of a Accessor PropertyAssignment is in Strict Mode if Accessor PropertyAssignment is contained in use strict(setter)
+ * @noStrict
+ */
+
+
+function testcase() {
+ "use strict";
+ try {
+ var obj = {};
+ var data = "data";
+ Object.defineProperty(obj, "accProperty", {
+ set: function (value) {
+ eval("var public = 1;");
+ data = value;
+ }
+ });
+
+ obj.accProperty = "overrideData";
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError && data === "data";
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-19-s.js b/js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-19-s.js
new file mode 100644
index 000000000..6643ec7f1
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-19-s.js
@@ -0,0 +1,25 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.1/10.1.1/10.1.1-19-s.js
+ * @description Strict Mode - Function code of a FunctionDeclaration contains Use Strict Directive which appears at the start of the block
+ * @noStrict
+ */
+
+
+function testcase() {
+ function fun() {
+ "use strict";
+ try {
+ eval("var public = 1;");
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError;
+ }
+ }
+ return fun();
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-2-s.js b/js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-2-s.js
new file mode 100644
index 000000000..42e6bce78
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-2-s.js
@@ -0,0 +1,23 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.1/10.1.1/10.1.1-2-s.js
+ * @description Strict Mode - Use Strict Directive Prologue is ''use strict'' which lost the last character ';'
+ * @noStrict
+ */
+
+
+function testcase() {
+ "use strict"
+ try {
+ eval("var public = 1;");
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError;
+ }
+
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-20-s.js b/js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-20-s.js
new file mode 100644
index 000000000..cc30e88e6
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-20-s.js
@@ -0,0 +1,21 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.1/10.1.1/10.1.1-20-s.js
+ * @description Strict Mode - Function code of a FunctionDeclaration contains Use Strict Directive which appears in the middle of the block
+ * @noStrict
+ */
+
+
+function testcase() {
+ function fun() {
+ eval("var public = 1;");
+ "use strict";
+ return public === 1;
+ }
+ return fun();
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-21-s.js b/js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-21-s.js
new file mode 100644
index 000000000..6c0245461
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-21-s.js
@@ -0,0 +1,21 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.1/10.1.1/10.1.1-21-s.js
+ * @description Strict Mode - Function code of a FunctionDeclaration contains Use Strict Directive which appears at the end of the block
+ * @noStrict
+ */
+
+
+function testcase() {
+ function fun() {
+ eval("var public = 1;");
+ return public === 1;
+ "use strict";
+ }
+ return fun();
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-22-s.js b/js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-22-s.js
new file mode 100644
index 000000000..875ad9780
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-22-s.js
@@ -0,0 +1,24 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.1/10.1.1/10.1.1-22-s.js
+ * @description Strict Mode - Function code of a FunctionExpression contains Use Strict Directive which appears at the start of the block
+ * @noStrict
+ */
+
+
+function testcase() {
+ return function () {
+ "use strict";
+ try {
+ eval("var public = 1;");
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError;
+ }
+ } ();
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-23-s.js b/js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-23-s.js
new file mode 100644
index 000000000..680e928cd
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-23-s.js
@@ -0,0 +1,20 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.1/10.1.1/10.1.1-23-s.js
+ * @description Strict Mode - Function code of a FunctionExpression contains Use Strict Directive which appears in the middle of the block
+ * @noStrict
+ */
+
+
+function testcase() {
+ return function () {
+ eval("var public = 1;");
+ return public === 1;
+ "use strict";
+ } ();
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-24-s.js b/js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-24-s.js
new file mode 100644
index 000000000..ef67dbe59
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-24-s.js
@@ -0,0 +1,20 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.1/10.1.1/10.1.1-24-s.js
+ * @description Strict Mode - Function code of a FunctionExpression contains Use Strict Directive which appears at the end of the block
+ * @noStrict
+ */
+
+
+function testcase() {
+ return function () {
+ eval("var public = 1;");
+ "use strict";
+ return public === 1;
+ } ();
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-25-s.js b/js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-25-s.js
new file mode 100644
index 000000000..206518f72
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-25-s.js
@@ -0,0 +1,29 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.1/10.1.1/10.1.1-25-s.js
+ * @description Strict Mode - Function code of Accessor PropertyAssignment contains Use Strict Directive which appears at the start of the block(getter)
+ * @noStrict
+ */
+
+
+function testcase() {
+ try {
+ var obj = {};
+ Object.defineProperty(obj, "accProperty", {
+ get: function () {
+ "use strict";
+ eval("var public = 1;");
+ return 11;
+ }
+ });
+ var temp = obj.accProperty === 11;
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-26-s.js b/js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-26-s.js
new file mode 100644
index 000000000..9da18136b
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-26-s.js
@@ -0,0 +1,32 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.1/10.1.1/10.1.1-26-s.js
+ * @description Strict Mode - Function code of Accessor PropertyAssignment contains Use Strict Directive which appears at the start of the block(setter)
+ * @noStrict
+ */
+
+
+function testcase() {
+ try {
+ var obj = {};
+ var data = "data";
+ Object.defineProperty(obj, "accProperty", {
+ set: function (value) {
+ "use strict";
+ eval("var public = 1;");
+ data = value;
+ }
+ });
+
+ obj.accProperty = "overrideData";
+
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError && data === "data";
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-27-s.js b/js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-27-s.js
new file mode 100644
index 000000000..94b01f5af
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-27-s.js
@@ -0,0 +1,24 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.1/10.1.1/10.1.1-27-s.js
+ * @description Strict Mode - Function code of Accessor PropertyAssignment contains Use Strict Directive which appears in the middle of the block(getter)
+ * @noStrict
+ */
+
+
+function testcase() {
+ var obj = {};
+ Object.defineProperty(obj, "accProperty", {
+ get: function () {
+ eval("public = 1;");
+ "use strict";
+ return 11;
+ }
+ });
+ return obj.accProperty === 11 && public === 1;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-28-s.js b/js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-28-s.js
new file mode 100644
index 000000000..f3ebe7d11
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-28-s.js
@@ -0,0 +1,27 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.1/10.1.1/10.1.1-28-s.js
+ * @description Strict Mode - Function code of Accessor PropertyAssignment contains Use Strict Directive which appears at the end of the block(setter)
+ * @noStrict
+ */
+
+
+function testcase() {
+ var obj = {};
+ var data;
+
+ Object.defineProperty(obj, "accProperty", {
+ set: function (value) {
+ var _10_1_1_28_s = {a:1, a:2};
+ data = value;
+ "use strict";
+ }
+ });
+ obj.accProperty = "overrideData";
+ return data==="overrideData";
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-29-s.js b/js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-29-s.js
new file mode 100644
index 000000000..9745777b1
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-29-s.js
@@ -0,0 +1,19 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.1/10.1.1/10.1.1-29-s.js
+ * @description Strict Mode - The built-in Function constructor is contained in use strict code
+ * @noStrict
+ */
+
+
+function testcase() {
+ "use strict";
+ var funObj = new Function("a", "eval('public = 1;');");
+ funObj();
+ return true;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-2gs.js b/js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-2gs.js
new file mode 100644
index 000000000..dd30cb215
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-2gs.js
@@ -0,0 +1,16 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+
+/**
+ * @path ch10/10.1/10.1.1/10.1.1-2gs.js
+ * @description Strict Mode - Use Strict Directive Prologue is ''use strict'' which lost the last character ';'
+ * @noStrict
+ * @negative ^((?!NotEarlyError).)*$
+ */
+
+"use strict"
+throw NotEarlyError;
+var public = 1;
diff --git a/js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-3-s.js b/js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-3-s.js
new file mode 100644
index 000000000..8c4e4fb5d
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-3-s.js
@@ -0,0 +1,19 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.1/10.1.1/10.1.1-3-s.js
+ * @description Strict Mode - Use Strict Directive Prologue is '' use strict';' which the first character is space
+ * @noStrict
+ */
+
+
+function testcase() {
+ " use strict";
+ var public = 1;
+
+ return public === 1;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-30-s.js b/js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-30-s.js
new file mode 100644
index 000000000..79c68e7c2
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-30-s.js
@@ -0,0 +1,22 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.1/10.1.1/10.1.1-30-s.js
+ * @description Strict Mode - Function code of built-in Function constructor contains Use Strict Directive which appears at the start of the block
+ * @noStrict
+ */
+
+
+function testcase() {
+ try {
+ var funObj = new Function("a", "'use strict'; eval('public = 1;');");
+ funObj();
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-31-s.js b/js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-31-s.js
new file mode 100644
index 000000000..21c84976b
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-31-s.js
@@ -0,0 +1,18 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.1/10.1.1/10.1.1-31-s.js
+ * @description Strict Mode - Function code of built-in Function constructor contains Use Strict Directive which appears in the middle of the block
+ * @noStrict
+ */
+
+
+function testcase() {
+ var funObj = new Function("a", "eval('public = 1;'); 'use strict'; anotherVariable = 2;");
+ funObj();
+ return public === 1 && anotherVariable === 2;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-32-s.js b/js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-32-s.js
new file mode 100644
index 000000000..a7cbc1d8c
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-32-s.js
@@ -0,0 +1,18 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.1/10.1.1/10.1.1-32-s.js
+ * @description Strict Mode - Function code of built-in Function constructor contains Use Strict Directive which appears at the end of the block
+ * @noStrict
+ */
+
+
+function testcase() {
+ var funObj = new Function("a", "eval('public = 1;'); anotherVariable = 2; 'use strict';");
+ funObj();
+ return public === 1 && anotherVariable === 2;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-4-s.js b/js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-4-s.js
new file mode 100644
index 000000000..3d7db1862
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-4-s.js
@@ -0,0 +1,18 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.1/10.1.1/10.1.1-4-s.js
+ * @description Strict Mode - Use Strict Directive Prologue is ''use strict ';' which the last character is space
+ * @noStrict
+ */
+
+
+function testcase() {
+ "use strict ";
+ var public = 1;
+ return public === 1;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-5-s.js b/js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-5-s.js
new file mode 100644
index 000000000..6a9f07af4
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-5-s.js
@@ -0,0 +1,23 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.1/10.1.1/10.1.1-5-s.js
+ * @description Strict Mode - Use Strict Directive Prologue is ''use strict';' which appears at the beginning of the block
+ * @noStrict
+ */
+
+
+function testcase() {
+ "use strict";
+ try {
+ eval("var public = 1;");
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError;
+ }
+
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-5gs.js b/js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-5gs.js
new file mode 100644
index 000000000..63698e5e6
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-5gs.js
@@ -0,0 +1,16 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+
+/**
+ * @path ch10/10.1/10.1.1/10.1.1-5gs.js
+ * @description Strict Mode - Use Strict Directive Prologue is ''use strict';' which appears at the start of the code
+ * @noStrict
+ * @negative ^((?!NotEarlyError).)*$
+ */
+
+"use strict";
+throw NotEarlyError;
+var public = 1;
diff --git a/js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-6-s.js b/js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-6-s.js
new file mode 100644
index 000000000..6434c2515
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-6-s.js
@@ -0,0 +1,19 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.1/10.1.1/10.1.1-6-s.js
+ * @description Strict Mode - Use Strict Directive Prologue is ''use strict';' which appears in the middle of the block
+ * @noStrict
+ */
+
+
+function testcase() {
+ var interface = 2;
+ "use strict";
+ var public = 1;
+ return public === 1 && interface === 2;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-7-s.js b/js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-7-s.js
new file mode 100644
index 000000000..42b5e1ee2
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-7-s.js
@@ -0,0 +1,18 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.1/10.1.1/10.1.1-7-s.js
+ * @description Strict Mode - Use Strict Directive Prologue is ''use strict';' which appears at the end of the block
+ * @noStrict
+ */
+
+
+function testcase() {
+ var public = 1;
+ return public === 1;
+ "use strict";
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-8-s.js b/js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-8-s.js
new file mode 100644
index 000000000..3fc4df80e
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-8-s.js
@@ -0,0 +1,23 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.1/10.1.1/10.1.1-8-s.js
+ * @description Strict Mode - Use Strict Directive Prologue is ''use strict';' which appears twice in the directive prologue
+ * @noStrict
+ */
+
+
+function testcase() {
+ "use strict";
+ "use strict";
+ try {
+ eval("var public = 1;");
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-8gs.js b/js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-8gs.js
new file mode 100644
index 000000000..88476ac4a
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-8gs.js
@@ -0,0 +1,17 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+
+/**
+ * @path ch10/10.1/10.1.1/10.1.1-8gs.js
+ * @description Strict Mode - Use Strict Directive Prologue is ''use strict';' which appears twice in the code
+ * @noStrict
+ * @negative ^((?!NotEarlyError).)*$
+ */
+
+"use strict";
+"use strict";
+throw NotEarlyError;
+var public = 1;
diff --git a/js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-9-s.js b/js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-9-s.js
new file mode 100644
index 000000000..b294ef146
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.1/10.1.1/10.1.1-9-s.js
@@ -0,0 +1,18 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.1/10.1.1/10.1.1-9-s.js
+ * @description Strict Mode - Use Strict Directive Prologue is ''Use strict';' in which the first character is uppercase
+ * @noStrict
+ */
+
+
+function testcase() {
+ "Use strict";
+ var public = 1;
+ return public === 1;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch10/10.1/10.1.1/browser.js b/js/src/tests/test262/ch10/10.1/10.1.1/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.1/10.1.1/browser.js
diff --git a/js/src/tests/test262/ch10/10.1/10.1.1/shell.js b/js/src/tests/test262/ch10/10.1/10.1.1/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.1/10.1.1/shell.js
diff --git a/js/src/tests/test262/ch10/10.1/S10.1.1_A1_T1.js b/js/src/tests/test262/ch10/10.1/S10.1.1_A1_T1.js
new file mode 100644
index 000000000..4085aa5ac
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.1/S10.1.1_A1_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.
+
+/**
+ * Program functions are defined in source text by a FunctionDeclaration or created dynamically either
+ * by using a FunctionExpression or by using the built-in Function object as a constructor
+ *
+ * @path ch10/10.1/S10.1.1_A1_T1.js
+ * @description Defining function by a FunctionDeclaration
+ */
+
+//CHECK#1
+function f1(){
+ return 1;
+}
+if(typeof(f1)!=="function")
+ $ERROR('#1: typeof(f1)!=="function"');
+
diff --git a/js/src/tests/test262/ch10/10.1/S10.1.1_A1_T2.js b/js/src/tests/test262/ch10/10.1/S10.1.1_A1_T2.js
new file mode 100644
index 000000000..d453d6e59
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.1/S10.1.1_A1_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.
+
+/**
+ * Program functions are defined in source text by a FunctionDeclaration or created dynamically either
+ * by using a FunctionExpression or by using the built-in Function object as a constructor
+ *
+ * @path ch10/10.1/S10.1.1_A1_T2.js
+ * @description Creating function dynamically by using a FunctionExpression
+ */
+
+//CHECK#1
+var x=function f1(){return 1;}();
+if(x!==1)
+ $ERROR('#1: Create function dynamically either by using a FunctionExpression');
+
+//CHECK#2
+var y=function (){return 2;}();
+if(y!==2){
+ $ERROR('#2: Create an anonymous function dynamically either by using a FunctionExpression');
+}
+
+//CHECK#2
+var z = (function(){return 3;})();
+if(z!==3){
+ $ERROR('#3: Create an anonymous function dynamically either by using a FunctionExpression wrapped in a group operator');
+}
+
diff --git a/js/src/tests/test262/ch10/10.1/S10.1.1_A1_T3.js b/js/src/tests/test262/ch10/10.1/S10.1.1_A1_T3.js
new file mode 100644
index 000000000..5e49dcd59
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.1/S10.1.1_A1_T3.js
@@ -0,0 +1,16 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * Program functions are defined in source text by a FunctionDeclaration or created dynamically either
+ * by using a FunctionExpression or by using the built-in Function object as a constructor
+ *
+ * @path ch10/10.1/S10.1.1_A1_T3.js
+ * @description Creating function dynamically by using the built-in Function object as a constructor
+ */
+
+//CHECK#1
+var x=new function f1(){return 1;};
+if(typeof(x.constructor)!=="function")
+ $ERROR('#1: typeof(x.constructor)!=="function"');
+
diff --git a/js/src/tests/test262/ch10/10.1/S10.1.1_A2_T1.js b/js/src/tests/test262/ch10/10.1/S10.1.1_A2_T1.js
new file mode 100644
index 000000000..aa5701155
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.1/S10.1.1_A2_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.
+
+/**
+ * There are two types of Function objects. Internal functions
+ * are built-in objects of the language, such as parseInt and Math.exp
+ *
+ * @path ch10/10.1/S10.1.1_A2_T1.js
+ * @description Checking types of parseInt and Math.exp
+ */
+
+//CHECK#1
+if(typeof(Math.exp)!=="function")
+ $ERROR('#1: typeof(Math.exp(10))!=="function" '+typeof(Math.exp()));
+
+//CHECK#2
+if(typeof(parseInt)!=="function")
+ $ERROR('#2: typeof(parseInt())!=="function" '+typeof(parseInt()));
+
+
diff --git a/js/src/tests/test262/ch10/10.1/S10.1.6_A1_T1.js b/js/src/tests/test262/ch10/10.1/S10.1.6_A1_T1.js
new file mode 100644
index 000000000..5dee9bf43
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.1/S10.1.6_A1_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.
+
+/**
+ * The activation object is initialised with a property with name arguments and attributes {DontDelete}
+ *
+ * @path ch10/10.1/S10.1.6_A1_T1.js
+ * @description Checking if deleting function parameter is possible
+ * @noStrict
+ */
+
+//CHECK#1
+function f1(a){
+ delete a;
+ return a;
+}
+if (f1(1) !== 1)
+ $ERROR('#1: Function parameter was deleted');
+
+
diff --git a/js/src/tests/test262/ch10/10.1/S10.1.6_A1_T2.js b/js/src/tests/test262/ch10/10.1/S10.1.6_A1_T2.js
new file mode 100644
index 000000000..8747b2f11
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.1/S10.1.6_A1_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.
+
+/**
+ * The activation object is initialised with a property with name arguments and attributes {DontDelete}
+ *
+ * @path ch10/10.1/S10.1.6_A1_T2.js
+ * @description Checking funtion which returns property "arguments"
+ */
+
+var ARG_STRING = "value of the argument property";
+
+function f1() {
+ this.constructor.prototype.arguments = ARG_STRING;
+ return arguments;
+}
+
+//CHECK#1
+if ((new f1(1,2,3,4,5)).length !== 5)
+ $ERROR('#1: (new f1(1,2,3,4,5)).length===5, where f1 returns "arguments" that is set to "'+ ARG_STRING + '"');
+
+//CHECK#2
+if ((new f1(1,2,3,4,5))[3] !== 4)
+ $ERROR('#2: (new f1(1,2,3,4,5))[3]===4, where f1 returns "arguments" that is set to "'+ ARG_STRING + '"');
+
+//CHECK#3
+var x = new f1(1,2,3,4,5);
+if (delete x[3] !== true)
+ $ERROR('#3.1: Function parameters have attribute {DontDelete}');
+
+if (x[3] === 4)
+ $ERROR('#3.2: Function parameters have attribute {DontDelete}');
+
diff --git a/js/src/tests/test262/ch10/10.1/S10.1.6_A1_T3.js b/js/src/tests/test262/ch10/10.1/S10.1.6_A1_T3.js
new file mode 100644
index 000000000..95e1bf2ef
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.1/S10.1.6_A1_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.
+
+/**
+ * The activation object is initialised with a property with name arguments and attributes {DontDelete}
+ *
+ * @path ch10/10.1/S10.1.6_A1_T3.js
+ * @description Checking function which returns "this"
+ * @noStrict
+ */
+
+function f1() {
+ if (delete arguments) {
+ $ERROR("#1: Function parameters have attribute {DontDelete}" + arguments);
+ }
+ return arguments;
+}
+
+f1();
+
diff --git a/js/src/tests/test262/ch10/10.1/S10.1.7_A1_T1.js b/js/src/tests/test262/ch10/10.1/S10.1.7_A1_T1.js
new file mode 100644
index 000000000..f7e7a0b0c
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.1/S10.1.7_A1_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.
+
+/**
+ * The this value associated with an executioncontext is immutable
+ *
+ * @path ch10/10.1/S10.1.7_A1_T1.js
+ * @description Checking if deleting "this" fails
+ */
+
+//CHECK#1
+if (delete this !== true)
+ $ERROR('#1: The this value associated with an executioncontext is immutable. Actual: this was deleted');
+
+
diff --git a/js/src/tests/test262/ch10/10.1/browser.js b/js/src/tests/test262/ch10/10.1/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.1/browser.js
diff --git a/js/src/tests/test262/ch10/10.1/shell.js b/js/src/tests/test262/ch10/10.1/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.1/shell.js
diff --git a/js/src/tests/test262/ch10/10.2/10.2.1/10.2.1.1/10.2.1.1.3/10.2.1.1.3-4-16-s.js b/js/src/tests/test262/ch10/10.2/10.2.1/10.2.1.1/10.2.1.1.3/10.2.1.1.3-4-16-s.js
new file mode 100644
index 000000000..bfc1f5ece
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.2/10.2.1/10.2.1.1/10.2.1.1.3/10.2.1.1.3-4-16-s.js
@@ -0,0 +1,23 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.2/10.2.1/10.2.1.1/10.2.1.1.3/10.2.1.1.3-4-16-s.js
+ * @description Strict Mode - TypeError is thrown when changing the value of a Value Property of the Global Object under strict mode (NaN)
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+
+ try {
+ NaN = 12;
+ return false;
+ } catch (e) {
+ return e instanceof TypeError;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch10/10.2/10.2.1/10.2.1.1/10.2.1.1.3/10.2.1.1.3-4-18-s.js b/js/src/tests/test262/ch10/10.2/10.2.1/10.2.1.1/10.2.1.1.3/10.2.1.1.3-4-18-s.js
new file mode 100644
index 000000000..e60836978
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.2/10.2.1/10.2.1.1/10.2.1.1.3/10.2.1.1.3-4-18-s.js
@@ -0,0 +1,22 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.2/10.2.1/10.2.1.1/10.2.1.1.3/10.2.1.1.3-4-18-s.js
+ * @description Strict Mode - TypeError is thrown when changing the value of a Value Property of the Global Object under strict mode (undefined)
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+ try {
+ undefined = 12;
+ return false;
+ } catch (e) {
+ return e instanceof TypeError;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch10/10.2/10.2.1/10.2.1.1/10.2.1.1.3/10.2.1.1.3-4-22-s.js b/js/src/tests/test262/ch10/10.2/10.2.1/10.2.1.1/10.2.1.1.3/10.2.1.1.3-4-22-s.js
new file mode 100644
index 000000000..9303b79b5
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.2/10.2.1/10.2.1.1/10.2.1.1.3/10.2.1.1.3-4-22-s.js
@@ -0,0 +1,24 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.2/10.2.1/10.2.1.1/10.2.1.1.3/10.2.1.1.3-4-22-s.js
+ * @description Strict Mode - TypeError is not thrown when changing the value of the Constructor Properties of the Global Object under strict mode (Object)
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+ var objBak = Object;
+
+ try {
+ Object = 12;
+ return true;
+ } finally {
+ Object = objBak;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch10/10.2/10.2.1/10.2.1.1/10.2.1.1.3/10.2.1.1.3-4-27-s.js b/js/src/tests/test262/ch10/10.2/10.2.1/10.2.1.1/10.2.1.1.3/10.2.1.1.3-4-27-s.js
new file mode 100644
index 000000000..9ecdf64a5
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.2/10.2.1/10.2.1.1/10.2.1.1.3/10.2.1.1.3-4-27-s.js
@@ -0,0 +1,24 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.2/10.2.1/10.2.1.1/10.2.1.1.3/10.2.1.1.3-4-27-s.js
+ * @description Strict Mode - TypeError is not thrown when changing the value of the Constructor Properties of the Global Object under strict mode (Number)
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+
+ var numBak = Number;
+ try {
+ Number = 12;
+ return true;
+ } finally {
+ Number = numBak;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch10/10.2/10.2.1/10.2.1.1/10.2.1.1.3/browser.js b/js/src/tests/test262/ch10/10.2/10.2.1/10.2.1.1/10.2.1.1.3/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.2/10.2.1/10.2.1.1/10.2.1.1.3/browser.js
diff --git a/js/src/tests/test262/ch10/10.2/10.2.1/10.2.1.1/10.2.1.1.3/shell.js b/js/src/tests/test262/ch10/10.2/10.2.1/10.2.1.1/10.2.1.1.3/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.2/10.2.1/10.2.1.1/10.2.1.1.3/shell.js
diff --git a/js/src/tests/test262/ch10/10.2/10.2.1/10.2.1.1/browser.js b/js/src/tests/test262/ch10/10.2/10.2.1/10.2.1.1/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.2/10.2.1/10.2.1.1/browser.js
diff --git a/js/src/tests/test262/ch10/10.2/10.2.1/10.2.1.1/shell.js b/js/src/tests/test262/ch10/10.2/10.2.1/10.2.1.1/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.2/10.2.1/10.2.1.1/shell.js
diff --git a/js/src/tests/test262/ch10/10.2/10.2.1/S10.2.1_A1.js b/js/src/tests/test262/ch10/10.2/10.2.1/S10.2.1_A1.js
new file mode 100644
index 000000000..6206633b2
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.2/10.2.1/S10.2.1_A1.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.
+
+/**
+ * If the caller supplies fewer parameter values than there are
+ * formal parameters, the extra formal parameters have value undefined
+ *
+ * @path ch10/10.2/10.2.1/S10.2.1_A1.js
+ * @description Calling function excluding a few parameters
+ */
+
+//CHECK#1
+function f1(a, b){
+ return (b === undefined);
+}
+if(!(f1(1, 2) === false)){
+ $ERROR('#1: f1(1, 2) === false');
+} else if(!(f1(1) === true)){
+ $ERROR('#1: f1(1) === true');
+}
+
+//CHECK#2
+function f2(a, b, c){
+ return (b === undefined) && (c === undefined);
+}
+if(!(f2(1) === true)){
+ $ERROR('#2: f2(1, 2) === true');
+}
+
diff --git a/js/src/tests/test262/ch10/10.2/10.2.1/S10.2.1_A2.js b/js/src/tests/test262/ch10/10.2/10.2.1/S10.2.1_A2.js
new file mode 100644
index 000000000..e622c5462
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.2/10.2.1/S10.2.1_A2.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.
+
+/**
+ * If two or more formal parameters share the same name, hence
+ * the same property, the corresponding property is given the value that was
+ * supplied for the last parameter with this name
+ *
+ * @path ch10/10.2/10.2.1/S10.2.1_A2.js
+ * @description Creating functions initialized with two or more formal parameters, which have the same name
+ * @noStrict
+ */
+
+//CHECK#1
+function f1(x, x) {
+ return x;
+}
+if(!(f1(1, 2) === 2)) {
+ $ERROR("#1: f1(1, 2) === 2");
+}
+
+//CHECK#2
+function f2(x, x, x){
+ return x*x*x;
+}
+if(!(f2(1, 2, 3) === 27)){
+ $ERROR("f2(1, 2, 3) === 27");
+}
+
+//CHECK#3
+function f3(x, x) {
+ return 'a' + x;
+}
+if(!(f3(1, 2) === 'a2')){
+ $ERROR("#3: f3(1, 2) === 'a2'");
+}
+
diff --git a/js/src/tests/test262/ch10/10.2/10.2.1/S10.2.1_A3.js b/js/src/tests/test262/ch10/10.2/10.2.1/S10.2.1_A3.js
new file mode 100644
index 000000000..1c15c0621
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.2/10.2.1/S10.2.1_A3.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.
+
+/**
+ * If the value of this last parameter (which has the same
+ * name as some previous parameters do) was not supplied by the
+ * caller, the value of the corresponding property is undefined
+ *
+ * @path ch10/10.2/10.2.1/S10.2.1_A3.js
+ * @description Creating functions with two or more formal parameters,
+ * that have the same name. Calling this function excluding a few last parameters
+ */
+
+//CHECK#1
+function f1(x, a, b, x){
+ return x;
+}
+if(!(f1(1, 2) === undefined)){
+ $ERROR('#1: f1(1, 2) === undefined');
+}
+
diff --git a/js/src/tests/test262/ch10/10.2/10.2.1/S10.2.1_A4_T1.js b/js/src/tests/test262/ch10/10.2/10.2.1/S10.2.1_A4_T1.js
new file mode 100644
index 000000000..a153af430
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.2/10.2.1/S10.2.1_A4_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.
+
+/**
+ * Function declaration in function code - If the variable object
+ * already has a property with the name of Function Identifier, replace its
+ * value and attributes. Semantically, this step must follow the creation of
+ * FormalParameterList properties
+ *
+ * @path ch10/10.2/10.2.1/S10.2.1_A4_T1.js
+ * @description Checking existence of a function with passed parameter
+ * @noStrict
+ */
+
+//CHECK#1
+function f1(x){
+ return x;
+
+ function x(){
+ return 7;
+ }
+}
+if(!(f1().constructor.prototype === Function.prototype)){
+ $ERROR('#1: f1() returns function');
+}
+
+//CHECK#2
+function f2(x){
+ return typeof x;
+
+ function x(){
+ return 7;
+ }
+}
+if(!(f2() === "function")){
+ $ERROR('#2: f2() === "function"');
+}
+
+//CHECK#3
+function f3() {
+ return typeof arguments;
+ function arguments() {
+ return 7;
+ }
+}
+if (!(f3() === "function")){
+ $ERROR('#3: f3() === "function"');
+}
+
diff --git a/js/src/tests/test262/ch10/10.2/10.2.1/S10.2.1_A4_T2.js b/js/src/tests/test262/ch10/10.2/10.2.1/S10.2.1_A4_T2.js
new file mode 100644
index 000000000..16661df91
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.2/10.2.1/S10.2.1_A4_T2.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.
+
+/**
+ * Function declaration in function code - If the variable object
+ * already has a property with the name of Function Identifier, replace its
+ * value and attributes. Semantically, this step must follow the creation of
+ * FormalParameterList properties
+ *
+ * @path ch10/10.2/10.2.1/S10.2.1_A4_T2.js
+ * @description Checking existence of a function with declared variable
+ */
+
+//CHECK#1
+function f1(){
+ var x;
+
+ return x;
+
+ function x(){
+ return 7;
+ }
+}
+if(!(f1().constructor.prototype === Function.prototype)){
+ $PRINT('#1: f1() returns function');
+}
+
+//CHECK#2
+function f2(){
+ var x;
+
+ return typeof x;
+
+ function x(){
+ return 7;
+ }
+}
+if(!(f2() === "function")){
+ $PRINT('#2: f2() === "function"');
+}
+
diff --git a/js/src/tests/test262/ch10/10.2/10.2.1/S10.2.1_A5.1_T1.js b/js/src/tests/test262/ch10/10.2/10.2.1/S10.2.1_A5.1_T1.js
new file mode 100644
index 000000000..824aedeee
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.2/10.2.1/S10.2.1_A5.1_T1.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.
+
+/**
+ * For each VariableDeclaration or VariableDeclarationNoIn in the
+ * code, create a property of the variable object whose name is the Identifier
+ * in the VariableDeclaration or VariableDeclarationNoIn, whose value is
+ * undefined and whose attributes are determined by the type of code
+ *
+ * @path ch10/10.2/10.2.1/S10.2.1_A5.1_T1.js
+ * @description Checking variable existence only
+ */
+
+//CHECK#1
+function f1(){
+ var x;
+
+ return typeof x;
+}
+
+if(!(f1() === "undefined")){
+ $PRINT('#1: f1() === "undefined"');
+}
+
+//CHECK#2
+function f2(){
+ var x;
+
+ return x;
+}
+
+if(!(f2() === undefined)){
+ $PRINT('#1: f2() === undefined');
+}
+
diff --git a/js/src/tests/test262/ch10/10.2/10.2.1/S10.2.1_A5.1_T2.js b/js/src/tests/test262/ch10/10.2/10.2.1/S10.2.1_A5.1_T2.js
new file mode 100644
index 000000000..adef8b5c5
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.2/10.2.1/S10.2.1_A5.1_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.
+
+/**
+ * For each VariableDeclaration or VariableDeclarationNoIn in the
+ * code, create a property of the variable object whose name is the Identifier
+ * in the VariableDeclaration or VariableDeclarationNoIn, whose value is
+ * undefined and whose attributes are determined by the type of code
+ *
+ * @path ch10/10.2/10.2.1/S10.2.1_A5.1_T2.js
+ * @description Checking existence of the variable object property with formal parameter
+ */
+
+//CHECK#1
+function f1(x){
+ var x;
+
+ return typeof x;
+}
+
+if(!(f1() === "undefined")){
+ $PRINT('#1: f1(1) === "undefined"');
+}
+
+//CHECK#2
+function f2(x){
+ var x;
+
+ return x;
+}
+
+if(!(f2() === undefined)){
+ $PRINT('#1: f2(1) === undefined');
+}
+
diff --git a/js/src/tests/test262/ch10/10.2/10.2.1/S10.2.1_A5.2_T1.js b/js/src/tests/test262/ch10/10.2/10.2.1/S10.2.1_A5.2_T1.js
new file mode 100644
index 000000000..d5321c907
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.2/10.2.1/S10.2.1_A5.2_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.
+
+/**
+ * If there is already a property of the variable object with the
+ * name of a declared variable, the value of the property and its attributes
+ * are not changed
+ *
+ * @path ch10/10.2/10.2.1/S10.2.1_A5.2_T1.js
+ * @description Checking existence of the variable object property with formal parameter
+ */
+
+//CHECK#1
+function f1(x){
+ var x;
+
+ return typeof x;
+}
+
+if(!(f1(1) === "number")){
+ $PRINT('#1: f1(1) === "number"');
+}
+
+//CHECK#2
+function f2(x){
+ var x;
+
+ return x;
+}
+
+if(!(f2(1) === 1)){
+ $PRINT('#1: f2(1) === 1');
+}
+
diff --git a/js/src/tests/test262/ch10/10.2/10.2.1/browser.js b/js/src/tests/test262/ch10/10.2/10.2.1/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.2/10.2.1/browser.js
diff --git a/js/src/tests/test262/ch10/10.2/10.2.1/shell.js b/js/src/tests/test262/ch10/10.2/10.2.1/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.2/10.2.1/shell.js
diff --git a/js/src/tests/test262/ch10/10.2/10.2.2/S10.2.2_A1_T1.js b/js/src/tests/test262/ch10/10.2/10.2.2/S10.2.2_A1_T1.js
new file mode 100644
index 000000000..7aba918d1
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.2/10.2.2/S10.2.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.
+
+/**
+ * Every execution context has associated with it a scope chain.
+ * A scope chain is a list of objects that are searched when evaluating an
+ * Identifier
+ *
+ * @path ch10/10.2/10.2.2/S10.2.2_A1_T1.js
+ * @description Checking scope chain containing function declarations
+ */
+
+var x = 0;
+
+function f1(){
+ var x = 1;
+ function f2(){
+ return x;
+ };
+ return f2();
+}
+
+if(!(f1() === 1)){
+ $ERROR("#1: Scope chain disturbed");
+}
+
diff --git a/js/src/tests/test262/ch10/10.2/10.2.2/S10.2.2_A1_T2.js b/js/src/tests/test262/ch10/10.2/10.2.2/S10.2.2_A1_T2.js
new file mode 100644
index 000000000..33b472418
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.2/10.2.2/S10.2.2_A1_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.
+
+/**
+ * Every execution context has associated with it a scope chain.
+ * A scope chain is a list of objects that are searched when evaluating an
+ * Identifier
+ *
+ * @path ch10/10.2/10.2.2/S10.2.2_A1_T2.js
+ * @description Checking scope chain containing function declarations
+ */
+
+var x = 0;
+
+function f1(){
+ function f2(){
+ return x;
+ };
+ return f2();
+}
+
+if(!(f1() === 0)){
+ $ERROR("#1: Scope chain disturbed");
+}
+
diff --git a/js/src/tests/test262/ch10/10.2/10.2.2/S10.2.2_A1_T3.js b/js/src/tests/test262/ch10/10.2/10.2.2/S10.2.2_A1_T3.js
new file mode 100644
index 000000000..a9a85deff
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.2/10.2.2/S10.2.2_A1_T3.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.
+
+/**
+ * Every execution context has associated with it a scope chain.
+ * A scope chain is a list of objects that are searched when evaluating an
+ * Identifier
+ *
+ * @path ch10/10.2/10.2.2/S10.2.2_A1_T3.js
+ * @description Checking scope chain containing function declarations
+ */
+
+var x = 0;
+
+function f1(){
+ function f2(){
+ return x;
+ };
+ return f2();
+
+ var x = 1;
+}
+
+if(!(f1() === undefined)){
+ $ERROR("#1: Scope chain disturbed");
+}
+
+
diff --git a/js/src/tests/test262/ch10/10.2/10.2.2/S10.2.2_A1_T4.js b/js/src/tests/test262/ch10/10.2/10.2.2/S10.2.2_A1_T4.js
new file mode 100644
index 000000000..e32ffac35
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.2/10.2.2/S10.2.2_A1_T4.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.
+
+/**
+ * Every execution context has associated with it a scope chain.
+ * A scope chain is a list of objects that are searched when evaluating an
+ * Identifier
+ *
+ * @path ch10/10.2/10.2.2/S10.2.2_A1_T4.js
+ * @description Checking scope chain containing function declarations
+ */
+
+var x = 0;
+
+function f1(){
+ function f2(){
+ return x;
+ };
+
+ var x = 1;
+ return f2();
+}
+
+if(!(f1() === 1)){
+ $ERROR("#1: Scope chain disturbed");
+}
+
diff --git a/js/src/tests/test262/ch10/10.2/10.2.2/S10.2.2_A1_T5.js b/js/src/tests/test262/ch10/10.2/10.2.2/S10.2.2_A1_T5.js
new file mode 100644
index 000000000..c71654f6f
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.2/10.2.2/S10.2.2_A1_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.
+
+/**
+ * Every execution context has associated with it a scope chain.
+ * A scope chain is a list of objects that are searched when evaluating an
+ * Identifier
+ *
+ * @path ch10/10.2/10.2.2/S10.2.2_A1_T5.js
+ * @description Checking scope chain containing function declarations and "with"
+ * @noStrict
+ */
+
+var x = 0;
+
+var myObj = {x : "obj"};
+
+function f1(){
+ var x = 1;
+ function f2(){
+ with(myObj){
+ return x;
+ }
+ };
+ return f2();
+}
+
+if(!(f1() === "obj")){
+ $ERROR("#1: Scope chain disturbed");
+}
+
diff --git a/js/src/tests/test262/ch10/10.2/10.2.2/S10.2.2_A1_T6.js b/js/src/tests/test262/ch10/10.2/10.2.2/S10.2.2_A1_T6.js
new file mode 100644
index 000000000..990c27ef3
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.2/10.2.2/S10.2.2_A1_T6.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.
+
+/**
+ * Every execution context has associated with it a scope chain.
+ * A scope chain is a list of objects that are searched when evaluating an
+ * Identifier
+ *
+ * @path ch10/10.2/10.2.2/S10.2.2_A1_T6.js
+ * @description Checking scope chain containing function declarations and "with"
+ * @noStrict
+ */
+
+var x = 0;
+
+var myObj = {x : "obj"};
+
+function f1(){
+ function f2(){
+ with(myObj){
+ return x;
+ }
+ };
+ return f2();
+}
+
+if(!(f1() === "obj")){
+ $ERROR("#1: Scope chain disturbed");
+}
+
diff --git a/js/src/tests/test262/ch10/10.2/10.2.2/S10.2.2_A1_T7.js b/js/src/tests/test262/ch10/10.2/10.2.2/S10.2.2_A1_T7.js
new file mode 100644
index 000000000..cc719b504
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.2/10.2.2/S10.2.2_A1_T7.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.
+
+/**
+ * Every execution context has associated with it a scope chain.
+ * A scope chain is a list of objects that are searched when evaluating an
+ * Identifier
+ *
+ * @path ch10/10.2/10.2.2/S10.2.2_A1_T7.js
+ * @description Checking scope chain containing function declarations and "with"
+ * @noStrict
+ */
+
+var x = 0;
+
+var myObj = {x : "obj"};
+
+function f1(){
+ function f2(){
+ with(myObj){
+ return x;
+ }
+ };
+ return f2();
+
+ var x = 1;
+}
+
+if(!(f1() === "obj")){
+ $ERROR("#1: Scope chain disturbed");
+}
+
diff --git a/js/src/tests/test262/ch10/10.2/10.2.2/S10.2.2_A1_T8.js b/js/src/tests/test262/ch10/10.2/10.2.2/S10.2.2_A1_T8.js
new file mode 100644
index 000000000..3aaefcf14
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.2/10.2.2/S10.2.2_A1_T8.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.
+
+/**
+ * Every execution context has associated with it a scope chain.
+ * A scope chain is a list of objects that are searched when evaluating an
+ * Identifier
+ *
+ * @path ch10/10.2/10.2.2/S10.2.2_A1_T8.js
+ * @description Checking scope chain containing function declarations and "with"
+ * @noStrict
+ */
+
+var x = 0;
+
+var myObj = {x : "obj"};
+
+function f1(){
+ function f2(){
+ with(myObj){
+ return x;
+ }
+ };
+
+ var x = 1;
+ return f2();
+}
+
+if(!(f1() === "obj")){
+ $ERROR("#1: Scope chain disturbed");
+}
+
diff --git a/js/src/tests/test262/ch10/10.2/10.2.2/S10.2.2_A1_T9.js b/js/src/tests/test262/ch10/10.2/10.2.2/S10.2.2_A1_T9.js
new file mode 100644
index 000000000..c03fdd1cf
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.2/10.2.2/S10.2.2_A1_T9.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.
+
+/**
+ * Every execution context has associated with it a scope chain.
+ * A scope chain is a list of objects that are searched when evaluating an
+ * Identifier
+ *
+ * @path ch10/10.2/10.2.2/S10.2.2_A1_T9.js
+ * @description Checking scope chain containing function declarations and "with"
+ * @noStrict
+ */
+
+var x = 0;
+
+var myObj = {x : "obj"};
+
+function f1(){
+ with(myObj){
+ return x;
+ }
+}
+
+if(!(f1() === "obj")){
+ $ERROR("#1: Scope chain disturbed");
+}
+
diff --git a/js/src/tests/test262/ch10/10.2/10.2.2/browser.js b/js/src/tests/test262/ch10/10.2/10.2.2/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.2/10.2.2/browser.js
diff --git a/js/src/tests/test262/ch10/10.2/10.2.2/shell.js b/js/src/tests/test262/ch10/10.2/10.2.2/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.2/10.2.2/shell.js
diff --git a/js/src/tests/test262/ch10/10.2/10.2.3/S10.2.3_A1.1_T1.js b/js/src/tests/test262/ch10/10.2/10.2.3/S10.2.3_A1.1_T1.js
new file mode 100644
index 000000000..6a133d788
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.2/10.2.3/S10.2.3_A1.1_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.
+
+/**
+ * Global object has properties such as built-in objects such as
+ * Math, String, Date, parseInt, etc
+ *
+ * @path ch10/10.2/10.2.3/S10.2.3_A1.1_T1.js
+ * @description Global execution context - Value Properties
+ */
+
+//CHECK#1
+if ( NaN === null ) {
+ $ERROR("#1: NaN === null");
+}
+
+//CHECK#2
+if ( Infinity === null ) {
+ $ERROR("#2: Infinity === null");
+}
+
+//CHECK#3
+if ( undefined === null ) {
+ $ERROR("#3: undefined === null");
+}
+
diff --git a/js/src/tests/test262/ch10/10.2/10.2.3/S10.2.3_A1.1_T2.js b/js/src/tests/test262/ch10/10.2/10.2.3/S10.2.3_A1.1_T2.js
new file mode 100644
index 000000000..1fafadc99
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.2/10.2.3/S10.2.3_A1.1_T2.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.
+
+/**
+ * Global object has properties such as built-in objects such as
+ * Math, String, Date, parseInt, etc
+ *
+ * @path ch10/10.2/10.2.3/S10.2.3_A1.1_T2.js
+ * @description Global execution context - Function Properties
+ */
+
+//CHECK#4
+if ( eval === null ) {
+ $ERROR("#4: eval === null");
+}
+
+//CHECK#5
+if ( parseInt === null ) {
+ $ERROR("#5: parseInt === null");
+}
+
+//CHECK#6
+if ( parseFloat === null ) {
+ $ERROR("#6: parseFloat === null");
+}
+
+//CHECK#7
+if ( isNaN === null ) {
+ $ERROR("#7: isNaN === null");
+}
+
+//CHECK#8
+if ( isFinite === null ) {
+ $ERROR("#8: isFinite === null");
+}
+
+//CHECK#9
+if ( decodeURI === null ) {
+ $ERROR("#9: decodeURI === null");
+}
+
+//CHECK#10
+if ( decodeURIComponent === null ) {
+ $ERROR("#10: decodeURIComponent === null");
+}
+
+//CHECK#11
+if ( encodeURI === null ) {
+ $ERROR("#11: encodeURI === null");
+}
+
+//CHECK#12
+if ( encodeURIComponent === null ) {
+ $ERROR("#12: encodeURIComponent === null");
+}
+
diff --git a/js/src/tests/test262/ch10/10.2/10.2.3/S10.2.3_A1.1_T3.js b/js/src/tests/test262/ch10/10.2/10.2.3/S10.2.3_A1.1_T3.js
new file mode 100644
index 000000000..3407039e8
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.2/10.2.3/S10.2.3_A1.1_T3.js
@@ -0,0 +1,87 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * Global object has properties such as built-in objects such as
+ * Math, String, Date, parseInt, etc
+ *
+ * @path ch10/10.2/10.2.3/S10.2.3_A1.1_T3.js
+ * @description Global execution context - Constructor Properties
+ */
+
+//CHECK#13
+if ( Object === null ) {
+ $ERROR("#13: Object === null");
+}
+
+//CHECK#14
+if ( Function === null ) {
+ $ERROR("#14: Function === null");
+}
+
+//CHECK#15
+if ( String === null ) {
+ $ERROR("#15: String === null");
+}
+
+//CHECK#16
+if ( Number === null ) {
+ $ERROR("#16: Number === null");
+}
+
+//CHECK#17
+if ( Array === null ) {
+ $ERROR("#17: Array === null");
+}
+
+//CHECK#18
+if ( Boolean === null ) {
+ $ERROR("#20: Boolean === null");
+}
+
+//CHECK#18
+if ( Date === null ) {
+ $ERROR("#18: Date === null");
+}
+
+//CHECK#19
+if ( RegExp === null ) {
+ $ERROR("#19: RegExp === null");
+}
+
+//CHECK#20
+if ( Error === null ) {
+ $ERROR("#20: Error === null");
+}
+
+//CHECK#21
+if ( EvalError === null ) {
+ $ERROR("#21: EvalError === null");
+}
+
+//CHECK#22
+if ( RangeError === null ) {
+ $ERROR("#22: RangeError === null");
+}
+
+//CHECK#23
+if ( ReferenceError === null ) {
+ $ERROR("#23: ReferenceError === null");
+}
+
+//CHECK#24
+if ( SyntaxError === null ) {
+ $ERROR("#24: SyntaxError === null");
+}
+
+//CHECK#25
+if ( TypeError === null ) {
+ $ERROR("#25: TypeError === null");
+}
+
+//CHECK#26
+if ( URIError === null ) {
+ $ERROR("#26: URIError === null");
+}
+
+
diff --git a/js/src/tests/test262/ch10/10.2/10.2.3/S10.2.3_A1.1_T4.js b/js/src/tests/test262/ch10/10.2/10.2.3/S10.2.3_A1.1_T4.js
new file mode 100644
index 000000000..f59cc646e
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.2/10.2.3/S10.2.3_A1.1_T4.js
@@ -0,0 +1,16 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * Global object has properties such as built-in objects such as
+ * Math, String, Date, parseInt, etc
+ *
+ * @path ch10/10.2/10.2.3/S10.2.3_A1.1_T4.js
+ * @description Global execution context - Other Properties
+ */
+
+//CHECK#27
+if ( Math === null ) {
+ $ERROR("#27: Math === null");
+}
+
diff --git a/js/src/tests/test262/ch10/10.2/10.2.3/S10.2.3_A1.2_T1.js b/js/src/tests/test262/ch10/10.2/10.2.3/S10.2.3_A1.2_T1.js
new file mode 100644
index 000000000..a6b6c4bbf
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.2/10.2.3/S10.2.3_A1.2_T1.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.
+
+/**
+ * Global object has properties such as built-in objects such as
+ * Math, String, Date, parseInt, etc
+ *
+ * @path ch10/10.2/10.2.3/S10.2.3_A1.2_T1.js
+ * @description Function execution context - Value Properties
+ */
+
+function test() {
+ //CHECK#1
+ if ( NaN === null ) {
+ $ERROR("#1: NaN === null");
+ }
+
+ //CHECK#2
+ if ( Infinity === null ) {
+ $ERROR("#2: Infinity === null");
+ }
+
+ //CHECK#3
+ if ( undefined === null ) {
+ $ERROR("#3: undefined === null");
+ }
+}
+
+test();
+
diff --git a/js/src/tests/test262/ch10/10.2/10.2.3/S10.2.3_A1.2_T2.js b/js/src/tests/test262/ch10/10.2/10.2.3/S10.2.3_A1.2_T2.js
new file mode 100644
index 000000000..45ca89f36
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.2/10.2.3/S10.2.3_A1.2_T2.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.
+
+/**
+ * Global object has properties such as built-in objects such as
+ * Math, String, Date, parseInt, etc
+ *
+ * @path ch10/10.2/10.2.3/S10.2.3_A1.2_T2.js
+ * @description Function execution context - Function Properties
+ */
+
+function test() {
+ //CHECK#4
+ if ( eval === null ) {
+ $ERROR("#4: eval === null");
+ }
+
+ //CHECK#5
+ if ( parseInt === null ) {
+ $ERROR("#5: parseInt === null");
+ }
+
+ //CHECK#6
+ if ( parseFloat === null ) {
+ $ERROR("#6: parseFloat === null");
+ }
+
+ //CHECK#7
+ if ( isNaN === null ) {
+ $ERROR("#7: isNaN === null");
+ }
+
+ //CHECK#8
+ if ( isFinite === null ) {
+ $ERROR("#8: isFinite === null");
+ }
+
+ //CHECK#9
+ if ( decodeURI === null ) {
+ $ERROR("#9: decodeURI === null");
+ }
+
+ //CHECK#10
+ if ( decodeURIComponent === null ) {
+ $ERROR("#10: decodeURIComponent === null");
+ }
+
+ //CHECK#11
+ if ( encodeURI === null ) {
+ $ERROR("#11: encodeURI === null");
+ }
+
+ //CHECK#12
+ if ( encodeURIComponent === null ) {
+ $ERROR("#12: encodeURIComponent === null");
+ }
+}
+
+test();
+
diff --git a/js/src/tests/test262/ch10/10.2/10.2.3/S10.2.3_A1.2_T3.js b/js/src/tests/test262/ch10/10.2/10.2.3/S10.2.3_A1.2_T3.js
new file mode 100644
index 000000000..295943cb7
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.2/10.2.3/S10.2.3_A1.2_T3.js
@@ -0,0 +1,90 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * Global object has properties such as built-in objects such as
+ * Math, String, Date, parseInt, etc
+ *
+ * @path ch10/10.2/10.2.3/S10.2.3_A1.2_T3.js
+ * @description Function execution context - Constructor Properties
+ */
+
+function test() {
+ //CHECK#13
+ if ( Object === null ) {
+ $ERROR("#13: Object === null");
+ }
+
+ //CHECK#14
+ if ( Function === null ) {
+ $ERROR("#14: Function === null");
+ }
+
+ //CHECK#15
+ if ( String === null ) {
+ $ERROR("#15: String === null");
+ }
+
+ //CHECK#16
+ if ( Number === null ) {
+ $ERROR("#16: Function === null");
+ }
+
+ //CHECK#17
+ if ( Array === null ) {
+ $ERROR("#17: Array === null");
+ }
+
+ //CHECK#18
+ if ( Boolean === null ) {
+ $ERROR("#20: Boolean === null");
+ }
+
+ //CHECK#18
+ if ( Date === null ) {
+ $ERROR("#18: Date === null");
+ }
+
+ //CHECK#19
+ if ( RegExp === null ) {
+ $ERROR("#19: RegExp === null");
+ }
+
+ //CHECK#20
+ if ( Error === null ) {
+ $ERROR("#20: Error === null");
+ }
+
+ //CHECK#21
+ if ( EvalError === null ) {
+ $ERROR("#21: EvalError === null");
+ }
+
+ //CHECK#22
+ if ( RangeError === null ) {
+ $ERROR("#22: RangeError === null");
+ }
+
+ //CHECK#23
+ if ( ReferenceError === null ) {
+ $ERROR("#23: ReferenceError === null");
+ }
+
+ //CHECK#24
+ if ( SyntaxError === null ) {
+ $ERROR("#24: SyntaxError === null");
+ }
+
+ //CHECK#25
+ if ( TypeError === null ) {
+ $ERROR("#25: TypeError === null");
+ }
+
+ //CHECK#26
+ if ( URIError === null ) {
+ $ERROR("#26: URIError === null");
+ }
+}
+
+test();
+
diff --git a/js/src/tests/test262/ch10/10.2/10.2.3/S10.2.3_A1.2_T4.js b/js/src/tests/test262/ch10/10.2/10.2.3/S10.2.3_A1.2_T4.js
new file mode 100644
index 000000000..01d02fb39
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.2/10.2.3/S10.2.3_A1.2_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.
+
+/**
+ * Global object has properties such as built-in objects such as
+ * Math, String, Date, parseInt, etc
+ *
+ * @path ch10/10.2/10.2.3/S10.2.3_A1.2_T4.js
+ * @description Function execution context - Other Properties
+ */
+
+function test() {
+ //CHECK#27
+ if ( Math === null ) {
+ $ERROR("#27: Math === null");
+ }
+}
+
+test();
+
diff --git a/js/src/tests/test262/ch10/10.2/10.2.3/S10.2.3_A1.3_T1.js b/js/src/tests/test262/ch10/10.2/10.2.3/S10.2.3_A1.3_T1.js
new file mode 100644
index 000000000..695f0acf5
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.2/10.2.3/S10.2.3_A1.3_T1.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.
+
+/**
+ * Global object has properties such as built-in objects such as
+ * Math, String, Date, parseInt, etc
+ *
+ * @path ch10/10.2/10.2.3/S10.2.3_A1.3_T1.js
+ * @description Eval execution context - Value Properties
+ */
+
+var evalStr =
+'//CHECK#1\n'+
+'if ( NaN === null ) {\n'+
+' $ERROR("#1: NaN === null");\n'+
+'}\n'+
+
+'//CHECK#2\n'+
+'if ( Infinity === null ) {\n'+
+' $ERROR("#2: Infinity === null");\n'+
+'}\n'+
+
+'//CHECK#3\n'+
+'if ( undefined === null ) {\n'+
+' $ERROR("#3: undefined === null");\n'+
+'}\n'+
+';\n';
+
+eval(evalStr);
+
diff --git a/js/src/tests/test262/ch10/10.2/10.2.3/S10.2.3_A1.3_T2.js b/js/src/tests/test262/ch10/10.2/10.2.3/S10.2.3_A1.3_T2.js
new file mode 100644
index 000000000..5afd0ef93
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.2/10.2.3/S10.2.3_A1.3_T2.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.
+
+/**
+ * Global object has properties such as built-in objects such as
+ * Math, String, Date, parseInt, etc
+ *
+ * @path ch10/10.2/10.2.3/S10.2.3_A1.3_T2.js
+ * @description Eval execution context - Function Properties
+ */
+
+var evalStr =
+'//CHECK#4\n'+
+'if ( eval === null ) {\n'+
+' $ERROR("#4: eval === null");\n'+
+'}\n'+
+
+'//CHECK#5\n'+
+'if ( parseInt === null ) {\n'+
+' $ERROR("#5: parseInt === null");\n'+
+'}\n'+
+
+'//CHECK#6\n'+
+'if ( parseFloat === null ) {\n'+
+' $ERROR("#6: parseFloat === null");\n'+
+'}\n'+
+
+'//CHECK#7\n'+
+'if ( isNaN === null ) {\n'+
+' $ERROR("#7: isNaN === null");\n'+
+'}\n'+
+
+'//CHECK#8\n'+
+'if ( isFinite === null ) {\n'+
+' $ERROR("#8: isFinite === null");\n'+
+'}\n'+
+
+'//CHECK#9\n'+
+'if ( decodeURI === null ) {\n'+
+' $ERROR("#9: decodeURI === null");\n'+
+'}\n'+
+
+'//CHECK#10\n'+
+'if ( decodeURIComponent === null ) {\n'+
+' $ERROR("#10: decodeURIComponent === null");\n'+
+'}\n'+
+
+'//CHECK#11\n'+
+'if ( encodeURI === null ) {\n'+
+' $ERROR("#11: encodeURI === null");\n'+
+'}\n'+
+
+'//CHECK#12\n'+
+'if ( encodeURIComponent === null ) {\n'+
+' $ERROR("#12: encodeURIComponent === null");\n'+
+'}\n'+
+';\n';
+
+eval(evalStr);
+
diff --git a/js/src/tests/test262/ch10/10.2/10.2.3/S10.2.3_A1.3_T3.js b/js/src/tests/test262/ch10/10.2/10.2.3/S10.2.3_A1.3_T3.js
new file mode 100644
index 000000000..b34b1e252
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.2/10.2.3/S10.2.3_A1.3_T3.js
@@ -0,0 +1,90 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * Global object has properties such as built-in objects such as
+ * Math, String, Date, parseInt, etc
+ *
+ * @path ch10/10.2/10.2.3/S10.2.3_A1.3_T3.js
+ * @description Eval execution context - Constructor Properties
+ */
+
+var evalStr =
+'//CHECK#13\n'+
+'if ( Object === null ) {\n'+
+' $ERROR("#13: Object === null");\n'+
+'}\n'+
+
+'//CHECK#14\n'+
+'if ( Function === null ) {\n'+
+' $ERROR("#14: Function === null");\n'+
+'}\n'+
+
+'//CHECK#15\n'+
+'if ( String === null ) {\n'+
+' $ERROR("#15: String === null");\n'+
+'}\n'+
+
+'//CHECK#16\n'+
+'if ( Number === null ) {\n'+
+' $ERROR("#16: Function === null");\n'+
+'}\n'+
+
+'//CHECK#17\n'+
+'if ( Array === null ) {\n'+
+' $ERROR("#17: Array === null");\n'+
+'}\n'+
+
+'//CHECK#18\n'+
+'if ( Boolean === null ) {\n'+
+' $ERROR("#20: Boolean === null");\n'+
+'}\n'+
+
+'//CHECK#18\n'+
+'if ( Date === null ) {\n'+
+' $ERROR("#18: Date === null");\n'+
+'}\n'+
+
+'//CHECK#19\n'+
+'if ( RegExp === null ) {\n'+
+' $ERROR("#19: RegExp === null");\n'+
+'}\n'+
+
+'//CHECK#20\n'+
+'if ( Error === null ) {\n'+
+' $ERROR("#20: Error === null");\n'+
+'}\n'+
+
+'//CHECK#21\n'+
+'if ( EvalError === null ) {\n'+
+' $ERROR("#21: EvalError === null");\n'+
+'}\n'+
+
+'//CHECK#22\n'+
+'if ( RangeError === null ) {\n'+
+' $ERROR("#22: RangeError === null");\n'+
+'}\n'+
+
+'//CHECK#23\n'+
+'if ( ReferenceError === null ) {\n'+
+' $ERROR("#23: ReferenceError === null");\n'+
+'}\n'+
+
+'//CHECK#24\n'+
+'if ( SyntaxError === null ) {\n'+
+' $ERROR("#24: SyntaxError === null");\n'+
+'}\n'+
+
+'//CHECK#25\n'+
+'if ( TypeError === null ) {\n'+
+' $ERROR("#25: TypeError === null");\n'+
+'}\n'+
+
+'//CHECK#26\n'+
+'if ( URIError === null ) {\n'+
+' $ERROR("#26: URIError === null");\n'+
+'}\n'+
+';\n';
+
+eval(evalStr);
+
diff --git a/js/src/tests/test262/ch10/10.2/10.2.3/S10.2.3_A1.3_T4.js b/js/src/tests/test262/ch10/10.2/10.2.3/S10.2.3_A1.3_T4.js
new file mode 100644
index 000000000..054969ce2
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.2/10.2.3/S10.2.3_A1.3_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.
+
+/**
+ * Global object has properties such as built-in objects such as
+ * Math, String, Date, parseInt, etc
+ *
+ * @path ch10/10.2/10.2.3/S10.2.3_A1.3_T4.js
+ * @description Eval execution context - Other Properties
+ */
+
+var evalStr =
+'//CHECK#27\n'+
+'if ( Math === null ) {\n'+
+' $ERROR("#27: Math === null");\n'+
+'}\n'+
+';\n';
+
+eval(evalStr);
+
diff --git a/js/src/tests/test262/ch10/10.2/10.2.3/S10.2.3_A2.1_T1.js b/js/src/tests/test262/ch10/10.2/10.2.3/S10.2.3_A2.1_T1.js
new file mode 100644
index 000000000..db57ad5ba
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.2/10.2.3/S10.2.3_A2.1_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.
+
+/**
+ * Global object properties have attributes { DontEnum }
+ *
+ * @path ch10/10.2/10.2.3/S10.2.3_A2.1_T1.js
+ * @description Global execution context - Value Properties
+ */
+
+//CHECK#1
+for (var x in this) {
+ if ( x === 'NaN' ) {
+ $ERROR("#1: 'NaN' have attribute DontEnum");
+ } else if ( x === 'Infinity' ) {
+ $ERROR("#1: 'Infinity' have attribute DontEnum");
+ } else if ( x === 'undefined' ) {
+ $ERROR("#1: 'undefined' have attribute DontEnum");
+ }
+}
+
diff --git a/js/src/tests/test262/ch10/10.2/10.2.3/S10.2.3_A2.1_T2.js b/js/src/tests/test262/ch10/10.2/10.2.3/S10.2.3_A2.1_T2.js
new file mode 100644
index 000000000..6a39d43a1
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.2/10.2.3/S10.2.3_A2.1_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.
+
+/**
+ * Global object properties have attributes { DontEnum }
+ *
+ * @path ch10/10.2/10.2.3/S10.2.3_A2.1_T2.js
+ * @description Global execution context - Function Properties
+ */
+
+//CHECK#1
+for (var x in this) {
+ if ( x === 'eval' ) {
+ $ERROR("#1: 'eval' have attribute DontEnum");
+ } else if ( x === 'parseInt' ) {
+ $ERROR("#1: 'parseInt' have attribute DontEnum");
+ } else if ( x === 'parseFloat' ) {
+ $ERROR("#1: 'parseFloat' have attribute DontEnum");
+ } else if ( x === 'isNaN' ) {
+ $ERROR("#1: 'isNaN' have attribute DontEnum");
+ } else if ( x === 'isFinite' ) {
+ $ERROR("#1: 'isFinite' have attribute DontEnum");
+ } else if ( x === 'decodeURI' ) {
+ $ERROR("#1: 'decodeURI' have attribute DontEnum");
+ } else if ( x === 'decodeURIComponent' ) {
+ $ERROR("#1: 'decodeURIComponent' have attribute DontEnum");
+ } else if ( x === 'encodeURI' ) {
+ $ERROR("#1: 'encodeURI' have attribute DontEnum");
+ } else if ( x === 'encodeURIComponent' ) {
+ $ERROR("#1: 'encodeURIComponent' have attribute DontEnum");
+ }
+}
+
diff --git a/js/src/tests/test262/ch10/10.2/10.2.3/S10.2.3_A2.1_T3.js b/js/src/tests/test262/ch10/10.2/10.2.3/S10.2.3_A2.1_T3.js
new file mode 100644
index 000000000..c684a649a
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.2/10.2.3/S10.2.3_A2.1_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.
+
+/**
+ * Global object properties have attributes { DontEnum }
+ *
+ * @path ch10/10.2/10.2.3/S10.2.3_A2.1_T3.js
+ * @description Global execution context - Constructor Properties
+ */
+
+//CHECK#1
+for (var x in this) {
+ if ( x === 'Object' ) {
+ $ERROR("#1: 'property 'Object' have attribute DontEnum");
+ } else if ( x === 'Function') {
+ $ERROR("#1: 'Function' have attribute DontEnum");
+ } else if ( x === 'String' ) {
+ $ERROR("#1: 'String' have attribute DontEnum");
+ } else if ( x === 'Number' ) {
+ $ERROR("#1: 'Number' have attribute DontEnum");
+ } else if ( x === 'Array' ) {
+ $ERROR("#1: 'Array' have attribute DontEnum");
+ } else if ( x === 'Boolean' ) {
+ $ERROR("#1: 'Boolean' have attribute DontEnum");
+ } else if ( x === 'Date' ) {
+ $ERROR("#1: 'Date' have attribute DontEnum");
+ } else if ( x === 'RegExp' ) {
+ $ERROR("#1: 'RegExp' have attribute DontEnum");
+ } else if ( x === 'Error' ) {
+ $ERROR("#1: 'Error' have attribute DontEnum");
+ } else if ( x === 'EvalError' ) {
+ $ERROR("#1: 'EvalError' have attribute DontEnum");
+ } else if ( x === 'RangeError' ) {
+ $ERROR("#1: 'RangeError' have attribute DontEnum");
+ } else if ( x === 'ReferenceError' ) {
+ $ERROR("#1: 'ReferenceError' have attribute DontEnum");
+ } else if ( x === 'SyntaxError' ) {
+ $ERROR("#1: 'SyntaxError' have attribute DontEnum");
+ } else if ( x === 'TypeError' ) {
+ $ERROR("#1: 'TypeError' have attribute DontEnum");
+ } else if ( x === 'URIError' ) {
+ $ERROR("#1: 'URIError' have attribute DontEnum");
+ }
+}
+
diff --git a/js/src/tests/test262/ch10/10.2/10.2.3/S10.2.3_A2.1_T4.js b/js/src/tests/test262/ch10/10.2/10.2.3/S10.2.3_A2.1_T4.js
new file mode 100644
index 000000000..cb575c533
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.2/10.2.3/S10.2.3_A2.1_T4.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.
+
+/**
+ * Global object properties have attributes { DontEnum }
+ *
+ * @path ch10/10.2/10.2.3/S10.2.3_A2.1_T4.js
+ * @description Global execution context - Other Properties
+ */
+
+//CHECK#1
+for (var x in this) {
+ if ( x === 'Math' ) {
+ $ERROR("#1: 'Math' have attribute DontEnum");
+ }
+}
+
diff --git a/js/src/tests/test262/ch10/10.2/10.2.3/S10.2.3_A2.2_T1.js b/js/src/tests/test262/ch10/10.2/10.2.3/S10.2.3_A2.2_T1.js
new file mode 100644
index 000000000..808cc1b60
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.2/10.2.3/S10.2.3_A2.2_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.
+
+/**
+ * Global object properties have attributes { DontEnum }
+ *
+ * @path ch10/10.2/10.2.3/S10.2.3_A2.2_T1.js
+ * @description Function execution context - Value Properties
+ */
+
+function test() {
+ //CHECK#1
+ for (var x in this) {
+ if ( x === 'NaN' ) {
+ $ERROR("#1: 'NaN' have attribute DontEnum");
+ } else if ( x === 'Infinity' ) {
+ $ERROR("#1: 'Infinity' have attribute DontEnum");
+ } else if ( x === 'undefined' ) {
+ $ERROR("#1: 'undefined' have attribute DontEnum");
+ }
+ }
+}
+
+test();
+
diff --git a/js/src/tests/test262/ch10/10.2/10.2.3/S10.2.3_A2.2_T2.js b/js/src/tests/test262/ch10/10.2/10.2.3/S10.2.3_A2.2_T2.js
new file mode 100644
index 000000000..ac87a58ef
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.2/10.2.3/S10.2.3_A2.2_T2.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.
+
+/**
+ * Global object properties have attributes { DontEnum }
+ *
+ * @path ch10/10.2/10.2.3/S10.2.3_A2.2_T2.js
+ * @description Function execution context - Function Properties
+ */
+
+function test() {
+ //CHECK#1
+ for (var x in this) {
+ if ( x === 'eval' ) {
+ $ERROR("#1: 'eval' have attribute DontEnum");
+ } else if ( x === 'parseInt' ) {
+ $ERROR("#1: 'parseInt' have attribute DontEnum");
+ } else if ( x === 'parseFloat' ) {
+ $ERROR("#1: 'parseFloat' have attribute DontEnum");
+ } else if ( x === 'isNaN' ) {
+ $ERROR("#1: 'isNaN' have attribute DontEnum");
+ } else if ( x === 'isFinite' ) {
+ $ERROR("#1: 'isFinite' have attribute DontEnum");
+ } else if ( x === 'decodeURI' ) {
+ $ERROR("#1: 'decodeURI' have attribute DontEnum");
+ } else if ( x === 'decodeURIComponent' ) {
+ $ERROR("#1: 'decodeURIComponent' have attribute DontEnum");
+ } else if ( x === 'encodeURI' ) {
+ $ERROR("#1: 'encodeURI' have attribute DontEnum");
+ } else if ( x === 'encodeURIComponent' ) {
+ $ERROR("#1: 'encodeURIComponent' have attribute DontEnum");
+ }
+ }
+}
+
+test();
+
diff --git a/js/src/tests/test262/ch10/10.2/10.2.3/S10.2.3_A2.2_T3.js b/js/src/tests/test262/ch10/10.2/10.2.3/S10.2.3_A2.2_T3.js
new file mode 100644
index 000000000..e6f5f4ac7
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.2/10.2.3/S10.2.3_A2.2_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.
+
+/**
+ * Global object properties have attributes { DontEnum }
+ *
+ * @path ch10/10.2/10.2.3/S10.2.3_A2.2_T3.js
+ * @description Function execution context - Constructor Properties
+ */
+
+function test() {
+ //CHECK#1
+ for (var x in this) {
+ if ( x === 'Object' ) {
+ $ERROR("#1: 'property 'Object' have attribute DontEnum");
+ } else if ( x === 'Function') {
+ $ERROR("#1: 'Function' have attribute DontEnum");
+ } else if ( x === 'String' ) {
+ $ERROR("#1: 'String' have attribute DontEnum");
+ } else if ( x === 'Number' ) {
+ $ERROR("#1: 'Number' have attribute DontEnum");
+ } else if ( x === 'Array' ) {
+ $ERROR("#1: 'Array' have attribute DontEnum");
+ } else if ( x === 'Boolean' ) {
+ $ERROR("#1: 'Boolean' have attribute DontEnum");
+ } else if ( x === 'Date' ) {
+ $ERROR("#1: 'Date' have attribute DontEnum");
+ } else if ( x === 'RegExp' ) {
+ $ERROR("#1: 'RegExp' have attribute DontEnum");
+ } else if ( x === 'Error' ) {
+ $ERROR("#1: 'Error' have attribute DontEnum");
+ } else if ( x === 'EvalError' ) {
+ $ERROR("#1: 'EvalError' have attribute DontEnum");
+ } else if ( x === 'RangeError' ) {
+ $ERROR("#1: 'RangeError' have attribute DontEnum");
+ } else if ( x === 'ReferenceError' ) {
+ $ERROR("#1: 'ReferenceError' have attribute DontEnum");
+ } else if ( x === 'SyntaxError' ) {
+ $ERROR("#1: 'SyntaxError' have attribute DontEnum");
+ } else if ( x === 'TypeError' ) {
+ $ERROR("#1: 'TypeError' have attribute DontEnum");
+ } else if ( x === 'URIError' ) {
+ $ERROR("#1: 'URIError' have attribute DontEnum");
+ }
+ }
+}
+
+test();
+
diff --git a/js/src/tests/test262/ch10/10.2/10.2.3/S10.2.3_A2.2_T4.js b/js/src/tests/test262/ch10/10.2/10.2.3/S10.2.3_A2.2_T4.js
new file mode 100644
index 000000000..3a6afa5cc
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.2/10.2.3/S10.2.3_A2.2_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.
+
+/**
+ * Global object properties have attributes { DontEnum }
+ *
+ * @path ch10/10.2/10.2.3/S10.2.3_A2.2_T4.js
+ * @description Function execution context - Other Properties
+ */
+
+function test() {
+ //CHECK#1
+ for (var x in this) {
+ if ( x === 'Math' ) {
+ $ERROR("#1: 'Math' have attribute DontEnum");
+ }
+ }
+}
+
+test();
+
diff --git a/js/src/tests/test262/ch10/10.2/10.2.3/S10.2.3_A2.3_T1.js b/js/src/tests/test262/ch10/10.2/10.2.3/S10.2.3_A2.3_T1.js
new file mode 100644
index 000000000..f7f32c563
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.2/10.2.3/S10.2.3_A2.3_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.
+
+/**
+ * Global object properties have attributes { DontEnum }
+ *
+ * @path ch10/10.2/10.2.3/S10.2.3_A2.3_T1.js
+ * @description Global execution context - Value Properties
+ */
+
+var evalStr =
+'//CHECK#1\n'+
+'for (var x in this) {\n'+
+' if ( x === \'NaN\' ) {\n'+
+' $ERROR("#1: \'NaN\' have attribute DontEnum");\n'+
+' } else if ( x === \'Infinity\' ) {\n'+
+' $ERROR("#1: \'Infinity\' have attribute DontEnum");\n'+
+' } else if ( x === \'undefined\' ) {\n'+
+' $ERROR("#1: \'undefined\' have attribute DontEnum");\n'+
+' }\n'+
+'}\n';
+
+eval(evalStr);
+
diff --git a/js/src/tests/test262/ch10/10.2/10.2.3/S10.2.3_A2.3_T2.js b/js/src/tests/test262/ch10/10.2/10.2.3/S10.2.3_A2.3_T2.js
new file mode 100644
index 000000000..8d3cfe7ee
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.2/10.2.3/S10.2.3_A2.3_T2.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.
+
+/**
+ * Global object properties have attributes { DontEnum }
+ *
+ * @path ch10/10.2/10.2.3/S10.2.3_A2.3_T2.js
+ * @description Global execution context - Function Properties
+ */
+
+var evalStr =
+'//CHECK#1\n'+
+'for (var x in this) {\n'+
+' if ( x === \'eval\' ) {\n'+
+' $ERROR("#1: \'eval\' have attribute DontEnum");\n'+
+' } else if ( x === \'parseInt\' ) {\n'+
+' $ERROR("#1: \'parseInt\' have attribute DontEnum");\n'+
+' } else if ( x === \'parseFloat\' ) {\n'+
+' $ERROR("#1: \'parseFloat\' have attribute DontEnum");\n'+
+' } else if ( x === \'isNaN\' ) {\n'+
+' $ERROR("#1: \'isNaN\' have attribute DontEnum");\n'+
+' } else if ( x === \'isFinite\' ) {\n'+
+' $ERROR("#1: \'isFinite\' have attribute DontEnum");\n'+
+' } else if ( x === \'decodeURI\' ) {\n'+
+' $ERROR("#1: \'decodeURI\' have attribute DontEnum");\n'+
+' } else if ( x === \'decodeURIComponent\' ) {\n'+
+' $ERROR("#1: \'decodeURIComponent\' have attribute DontEnum");\n'+
+' } else if ( x === \'encodeURI\' ) {\n'+
+' $ERROR("#1: \'encodeURI\' have attribute DontEnum");\n'+
+' } else if ( x === \'encodeURIComponent\' ) {\n'+
+' $ERROR("#1: \'encodeURIComponent\' have attribute DontEnum");\n'+
+' }\n'+
+'}\n';
+
+eval(evalStr);
+
diff --git a/js/src/tests/test262/ch10/10.2/10.2.3/S10.2.3_A2.3_T3.js b/js/src/tests/test262/ch10/10.2/10.2.3/S10.2.3_A2.3_T3.js
new file mode 100644
index 000000000..9ae75beb9
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.2/10.2.3/S10.2.3_A2.3_T3.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.
+
+/**
+ * Global object properties have attributes { DontEnum }
+ *
+ * @path ch10/10.2/10.2.3/S10.2.3_A2.3_T3.js
+ * @description Global execution context - Constructor Properties
+ */
+
+var evalStr =
+'//CHECK#1\n'+
+'for (var x in this) {\n'+
+' if ( x === \'Object\' ) {\n'+
+' $ERROR("#1: \'Object\' have attribute DontEnum");\n'+
+' } else if ( x === \'Function\') {\n'+
+' $ERROR("#1: \'Function\' have attribute DontEnum");\n'+
+' } else if ( x === \'String\' ) {\n'+
+' $ERROR("#1: \'String\' have attribute DontEnum");\n'+
+' } else if ( x === \'Number\' ) {\n'+
+' $ERROR("#1: \'Number\' have attribute DontEnum");\n'+
+' } else if ( x === \'Array\' ) {\n'+
+' $ERROR("#1: \'Array\' have attribute DontEnum");\n'+
+' } else if ( x === \'Boolean\' ) {\n'+
+' $ERROR("#1: \'Boolean\' have attribute DontEnum");\n'+
+' } else if ( x === \'Date\' ) {\n'+
+' $ERROR("#1: \'Date\' have attribute DontEnum");\n'+
+' } else if ( x === \'RegExp\' ) {\n'+
+' $ERROR("#1: \'RegExp\' have attribute DontEnum");\n'+
+' } else if ( x === \'Error\' ) {\n'+
+' $ERROR("#1: \'Error\' have attribute DontEnum");\n'+
+' } else if ( x === \'EvalError\' ) {\n'+
+' $ERROR("#1: \'EvalError\' have attribute DontEnum");\n'+
+' } else if ( x === \'RangeError\' ) {\n'+
+' $ERROR("#1: \'RangeError\' have attribute DontEnum");\n'+
+' } else if ( x === \'ReferenceError\' ) {\n'+
+' $ERROR("#1: \'ReferenceError\' have attribute DontEnum");\n'+
+' } else if ( x === \'SyntaxError\' ) {\n'+
+' $ERROR("#1: \'SyntaxError\' have attribute DontEnum");\n'+
+' } else if ( x === \'TypeError\' ) {\n'+
+' $ERROR("#1: \'TypeError\' have attribute DontEnum");\n'+
+' } else if ( x === \'URIError\' ) {\n'+
+' $ERROR("#1: \'URIError\' have attribute DontEnum");\n'+
+' }\n'+
+'}\n';
+
+eval(evalStr);
+
diff --git a/js/src/tests/test262/ch10/10.2/10.2.3/S10.2.3_A2.3_T4.js b/js/src/tests/test262/ch10/10.2/10.2.3/S10.2.3_A2.3_T4.js
new file mode 100644
index 000000000..ed60835c9
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.2/10.2.3/S10.2.3_A2.3_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.
+
+/**
+ * Global object properties have attributes { DontEnum }
+ *
+ * @path ch10/10.2/10.2.3/S10.2.3_A2.3_T4.js
+ * @description Global execution context - Other Properties
+ */
+
+var evalStr =
+'//CHECK#1\n'+
+'for (var x in this) {\n'+
+' if ( x === \'Math\' ) {\n'+
+' $ERROR("#1: \'Math\' have attribute DontEnum");\n'+
+' }\n'+
+'}\n';
+
+eval(evalStr);
+
diff --git a/js/src/tests/test262/ch10/10.2/10.2.3/browser.js b/js/src/tests/test262/ch10/10.2/10.2.3/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.2/10.2.3/browser.js
diff --git a/js/src/tests/test262/ch10/10.2/10.2.3/shell.js b/js/src/tests/test262/ch10/10.2/10.2.3/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.2/10.2.3/shell.js
diff --git a/js/src/tests/test262/ch10/10.2/browser.js b/js/src/tests/test262/ch10/10.2/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.2/browser.js
diff --git a/js/src/tests/test262/ch10/10.2/shell.js b/js/src/tests/test262/ch10/10.2/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.2/shell.js
diff --git a/js/src/tests/test262/ch10/10.4/10.4.1/S10.4.1_A1_T1.js b/js/src/tests/test262/ch10/10.4/10.4.1/S10.4.1_A1_T1.js
new file mode 100644
index 000000000..04abf8bef
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.1/S10.4.1_A1_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.
+
+/**
+ * Variable instantiation is performed using the global object as
+ * the variable object and using property attributes { DontDelete }
+ *
+ * @path ch10/10.4/10.4.1/S10.4.1_A1_T1.js
+ * @description Checking if deleting variable x, that is defined as var x = 1, fails
+ * @noStrict
+ */
+
+var x = 1;
+
+if (this.x !== 1) {
+ $ERROR("#1: variable x is a property of global object");
+}
+
+if(delete this.x !== false){
+ $ERROR("#2: variable x has property attribute DontDelete");
+}
+
diff --git a/js/src/tests/test262/ch10/10.4/10.4.1/S10.4.1_A1_T2.js b/js/src/tests/test262/ch10/10.4/10.4.1/S10.4.1_A1_T2.js
new file mode 100644
index 000000000..107381f2d
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.1/S10.4.1_A1_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.
+
+/**
+ * Variable instantiation is performed using the global object as
+ * the variable object and using property attributes { DontDelete }
+ *
+ * @path ch10/10.4/10.4.1/S10.4.1_A1_T2.js
+ * @description Checking if deleting variable x, that is defined as x = 1, fails
+ * @noStrict
+ */
+
+x = 1;
+
+if (this.x !== 1) {
+ $ERROR("#1: variable x is a property of global object");
+}
+
+if(delete this.x !== true){
+ $ERROR("#2: variable x has property attribute DontDelete");
+}
+
diff --git a/js/src/tests/test262/ch10/10.4/10.4.1/browser.js b/js/src/tests/test262/ch10/10.4/10.4.1/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.1/browser.js
diff --git a/js/src/tests/test262/ch10/10.4/10.4.1/shell.js b/js/src/tests/test262/ch10/10.4/10.4.1/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.1/shell.js
diff --git a/js/src/tests/test262/ch10/10.4/10.4.2/10.4.2-1-1.js b/js/src/tests/test262/ch10/10.4/10.4.2/10.4.2-1-1.js
new file mode 100644
index 000000000..233eac2c8
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.2/10.4.2-1-1.js
@@ -0,0 +1,26 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.2/10.4.2-1-1.js
+ * @description Indirect call to eval has context set to global context
+ */
+
+var __10_4_2_1_1_1 = "str";
+function testcase() {
+ try {
+
+ var _eval = eval;
+ var __10_4_2_1_1_1 = "str1";
+ if(_eval("\'str\' === __10_4_2_1_1_1") === true && // indirect eval
+ eval("\'str1\' === __10_4_2_1_1_1") === true) { // direct eval
+ return true;
+ }
+ return false;
+ } finally {
+ delete this.__10_4_2_1_1_1;
+ }
+}
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch10/10.4/10.4.2/10.4.2-1-2.js b/js/src/tests/test262/ch10/10.4/10.4.2/10.4.2-1-2.js
new file mode 100644
index 000000000..7c144f552
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.2/10.4.2-1-2.js
@@ -0,0 +1,31 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.2/10.4.2-1-2.js
+ * @description Indirect call to eval has context set to global context (nested function)
+ */
+
+var __10_4_2_1_2 = "str";
+function testcase() {
+ try {
+
+ var _eval = eval;
+ var __10_4_2_1_2 = "str1";
+ function foo() {
+ var __10_4_2_1_2 = "str2";
+ if(_eval("\'str\' === __10_4_2_1_2") === true && // indirect eval
+ eval("\'str2\' === __10_4_2_1_2") === true) { // direct eval
+ return true;
+ } else {
+ return false;
+ }
+ }
+ return foo();
+ } finally {
+ delete this.__10_4_2_1_1_2;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch10/10.4/10.4.2/10.4.2-1-3.js b/js/src/tests/test262/ch10/10.4/10.4.2/10.4.2-1-3.js
new file mode 100644
index 000000000..078ea21ab
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.2/10.4.2-1-3.js
@@ -0,0 +1,34 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.2/10.4.2-1-3.js
+ * @description Indirect call to eval has context set to global context (catch block)
+ */
+
+var __10_4_2_1_3 = "str";
+function testcase() {
+
+ try {
+
+ var _eval = eval;
+ var __10_4_2_1_3 = "str1";
+ try {
+ throw "error";
+ }
+ catch (e) {
+ var __10_4_2_1_3 = "str2";
+ if (_eval("\'str\' === __10_4_2_1_3") === true && // indirect eval
+ eval("\'str2\' === __10_4_2_1_3") === true) { // direct eval
+ return true;
+ } else {
+ return false;
+ }
+ }
+ } finally {
+ delete this.__10_4_2_1_3;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch10/10.4/10.4.2/10.4.2-1-4.js b/js/src/tests/test262/ch10/10.4/10.4.2/10.4.2-1-4.js
new file mode 100644
index 000000000..8a025f0d9
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.2/10.4.2-1-4.js
@@ -0,0 +1,29 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.2/10.4.2-1-4.js
+ * @description Indirect call to eval has context set to global context (with block)
+ */
+
+var __10_4_2_1_4 = "str";
+function testcase() {
+ try {
+ var o = new Object();
+ o.__10_4_2_1_4 = "str2";
+ var _eval = eval;
+ var __10_4_2_1_4 = "str1";
+ with (o) {
+ if (_eval("\'str\' === __10_4_2_1_4") === true && // indirect eval
+ eval("\'str2\' === __10_4_2_1_4") === true) { // direct eval
+ return true;
+ }
+ }
+ return false;
+ } finally {
+ delete this.__10_4_2_1_4;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch10/10.4/10.4.2/10.4.2-1-5.js b/js/src/tests/test262/ch10/10.4/10.4.2/10.4.2-1-5.js
new file mode 100644
index 000000000..3808a9988
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.2/10.4.2-1-5.js
@@ -0,0 +1,27 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.2/10.4.2-1-5.js
+ * @description Indirect call to eval has context set to global context (inside another eval)
+ */
+
+var __10_4_2_1_5 = "str";
+function testcase() {
+ try {
+
+ var __10_4_2_1_5 = "str1";
+ var r = eval("\
+ var _eval = eval; \
+ var __10_4_2_1_5 = \'str2\'; \
+ _eval(\"\'str\' === __10_4_2_1_5 \") && \
+ eval(\"\'str2\' === __10_4_2_1_5\")\
+ ");
+ return r;
+ } finally {
+ delete this.__10_4_2_1_5;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch10/10.4/10.4.2/10.4.2-2-c-1.js b/js/src/tests/test262/ch10/10.4/10.4.2/10.4.2-2-c-1.js
new file mode 100644
index 000000000..61d85cec0
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.2/10.4.2-2-c-1.js
@@ -0,0 +1,20 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.2/10.4.2-2-c-1.js
+ * @description Direct val code in non-strict mode - can instantiate variable in calling context
+ */
+
+
+function testcase() {
+ var x = 0;
+ return function inner() {
+ eval("var x = 1");
+ if (x === 1)
+ return true;
+ } ();
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch10/10.4/10.4.2/10.4.2-2-s.js b/js/src/tests/test262/ch10/10.4/10.4.2/10.4.2-2-s.js
new file mode 100644
index 000000000..fb00b04f5
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.2/10.4.2-2-s.js
@@ -0,0 +1,18 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.2/10.4.2-2-s.js
+ * @description Strict Mode - Strict mode eval code cannot instantiate functions in the variable environment of the caller to eval
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+ eval("(function fun(x){ return x })(10)");
+ return typeof (fun) === "undefined";
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch10/10.4/10.4.2/10.4.2-3-c-1-s.js b/js/src/tests/test262/ch10/10.4/10.4.2/10.4.2-3-c-1-s.js
new file mode 100644
index 000000000..57ee1912d
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.2/10.4.2-3-c-1-s.js
@@ -0,0 +1,21 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.2/10.4.2-3-c-1-s.js
+ * @description Direct eval code in strict mode - cannot instantiate variable in the variable environment of the calling context
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ var _10_4_2_3_c_1_s = 0;
+ function _10_4_2_3_c_1_sFunc() {
+ eval("'use strict';var _10_4_2_3_c_1_s = 1");
+ return _10_4_2_3_c_1_s===0;
+ }
+ return _10_4_2_3_c_1_sFunc();
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch10/10.4/10.4.2/10.4.2-3-c-2-s.js b/js/src/tests/test262/ch10/10.4/10.4.2/10.4.2-3-c-2-s.js
new file mode 100644
index 000000000..91caa626b
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.2/10.4.2-3-c-2-s.js
@@ -0,0 +1,22 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.2/10.4.2-3-c-2-s.js
+ * @description Calling code in strict mode - eval cannot instantiate variable in the variable environment of the calling context
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ var _10_4_2_3_c_2_s = 0;
+ function _10_4_2_3_c_2_sFunc() {
+ 'use strict';
+ eval("var _10_4_2_3_c_2_s = 1");
+ return _10_4_2_3_c_2_s===0;
+ }
+ return _10_4_2_3_c_2_sFunc();
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch10/10.4/10.4.2/10.4.2.1-1gs.js b/js/src/tests/test262/ch10/10.4/10.4.2/10.4.2.1-1gs.js
new file mode 100644
index 000000000..e0d77031f
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.2/10.4.2.1-1gs.js
@@ -0,0 +1,17 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+
+/**
+ * @path ch10/10.4/10.4.2/10.4.2.1-1gs.js
+ * @description Strict Mode - eval code cannot instantiate variable in the variable environment of the calling context that invoked the eval if the code of the calling context is strict code
+ * @onlyStrict
+ * @negative ^((?!NotEarlyError).)*$
+ */
+
+"use strict";
+eval("var x = 7;");
+x = 9;
+throw NotEarlyError;
diff --git a/js/src/tests/test262/ch10/10.4/10.4.2/10.4.2.1-2-s.js b/js/src/tests/test262/ch10/10.4/10.4.2/10.4.2.1-2-s.js
new file mode 100644
index 000000000..5fc76cb35
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.2/10.4.2.1-2-s.js
@@ -0,0 +1,19 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.2/10.4.2.1-2-s.js
+ * @description Strict Mode - Strict mode eval code cannot instantiate functions in the variable environment of the caller to eval
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+
+ eval("function _10_4_2_1_2_fun(){}");
+ return typeof _10_4_2_1_2_fun === "undefined";
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch10/10.4/10.4.2/10.4.2.1-4-s.js b/js/src/tests/test262/ch10/10.4/10.4.2/10.4.2.1-4-s.js
new file mode 100644
index 000000000..89ce85399
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.2/10.4.2.1-4-s.js
@@ -0,0 +1,18 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.2/10.4.2.1-4-s.js
+ * @description Strict Mode - Strict mode eval code cannot instantiate functions in the variable environment of the caller to eval which is contained in strict mode code
+ * @onlyStrict
+ */
+
+
+function testcase() {
+
+ eval("'use strict'; function _10_4_2_1_4_fun(){}");
+ return typeof _10_4_2_1_4_fun === "undefined";
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch10/10.4/10.4.2/S10.4.2.1_A1.js b/js/src/tests/test262/ch10/10.4/10.4.2/S10.4.2.1_A1.js
new file mode 100644
index 000000000..3a3690ce9
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.2/S10.4.2.1_A1.js
@@ -0,0 +1,17 @@
+// Copyright 2011 Google Inc. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @path ch10/10.4/10.4.2/S10.4.2.1_A1.js
+ * @description Strict indirect eval should not leak top level
+ * declarations into the global scope
+ * @onlyStrict
+ */
+
+"use strict";
+if (!('foo' in this)) {
+ (1,eval)('"use strict"; var foo = 88;');
+ if ('foo' in this) {
+ $ERROR("Strict indirect eval leaked a top level declaration");
+ }
+}
diff --git a/js/src/tests/test262/ch10/10.4/10.4.2/S10.4.2_A1.1_T1.js b/js/src/tests/test262/ch10/10.4/10.4.2/S10.4.2_A1.1_T1.js
new file mode 100644
index 000000000..077ae7be1
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.2/S10.4.2_A1.1_T1.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.
+
+/**
+ * The scope chain is initialised to contain the same objects,
+ * in the same order, as the calling context's scope chain
+ *
+ * @path ch10/10.4/10.4.2/S10.4.2_A1.1_T1.js
+ * @description eval within global execution context
+ */
+
+var i;
+var j;
+str1 = '';
+str2 = '';
+x = 1;
+y = 2;
+
+for(i in this){
+ str1+=i;
+}
+
+eval('for(j in this){\nstr2+=j;\n}');
+
+if(!(str1 === str2)){
+ $ERROR("#1: scope chain must contain same objects in the same order as the calling context");
+}
+
diff --git a/js/src/tests/test262/ch10/10.4/10.4.2/S10.4.2_A1.1_T10.js b/js/src/tests/test262/ch10/10.4/10.4.2/S10.4.2_A1.1_T10.js
new file mode 100644
index 000000000..4903b5b3b
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.2/S10.4.2_A1.1_T10.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.
+
+/**
+ * The scope chain is initialised to contain the same objects,
+ * in the same order, as the calling context's scope chain
+ *
+ * @path ch10/10.4/10.4.2/S10.4.2_A1.1_T10.js
+ * @description eval within global execution context
+ */
+
+var i;
+var j;
+str1 = '';
+str2 = '';
+var x = 1;
+var y = 2;
+
+for(i in this){
+ str1+=i;
+}
+
+eval('for(j in this){\nstr2+=j;\n}');
+
+if(!(str1 === str2)){
+ $ERROR("#1: scope chain must contain same objects in the same order as the calling context");
+}
+
diff --git a/js/src/tests/test262/ch10/10.4/10.4.2/S10.4.2_A1.1_T11.js b/js/src/tests/test262/ch10/10.4/10.4.2/S10.4.2_A1.1_T11.js
new file mode 100644
index 000000000..fb7b1690e
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.2/S10.4.2_A1.1_T11.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.
+
+/**
+ * The scope chain is initialised to contain the same objects,
+ * in the same order, as the calling context's scope chain
+ *
+ * @path ch10/10.4/10.4.2/S10.4.2_A1.1_T11.js
+ * @description eval within global execution context
+ */
+
+var i;
+var j;
+str1 = '';
+str2 = '';
+
+for(i in this){
+ str1+=i;
+}
+
+eval('for(j in this){\nstr2+=j;\n}');
+
+if(!(str1 === str2)){
+ $ERROR("#1: scope chain must contain same objects in the same order as the calling context");
+}
+
+this.x = 1;
+this.y = 2;
+
diff --git a/js/src/tests/test262/ch10/10.4/10.4.2/S10.4.2_A1.1_T2.js b/js/src/tests/test262/ch10/10.4/10.4.2/S10.4.2_A1.1_T2.js
new file mode 100644
index 000000000..b7eb20df0
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.2/S10.4.2_A1.1_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.
+
+/**
+ * The scope chain is initialised to contain the same objects,
+ * in the same order, as the calling context's scope chain
+ *
+ * @path ch10/10.4/10.4.2/S10.4.2_A1.1_T2.js
+ * @description eval within global execution context
+ */
+
+var i;
+var j;
+str1 = '';
+str2 = '';
+
+for(i in this){
+ str1+=i;
+}
+
+eval('for(j in this){\nstr2+=j;\n}');
+
+if(!(str1 === str2)){
+ $ERROR("#1: scope chain must contain same objects in the same order as the calling context");
+}
+
+var x = 1;
+var y = 2;
+
diff --git a/js/src/tests/test262/ch10/10.4/10.4.2/S10.4.2_A1.1_T3.js b/js/src/tests/test262/ch10/10.4/10.4.2/S10.4.2_A1.1_T3.js
new file mode 100644
index 000000000..3b32b2bc2
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.2/S10.4.2_A1.1_T3.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.
+
+/**
+ * The scope chain is initialised to contain the same objects,
+ * in the same order, as the calling context's scope chain
+ *
+ * @path ch10/10.4/10.4.2/S10.4.2_A1.1_T3.js
+ * @description eval within global execution context
+ */
+
+var i;
+var j;
+str1 = '';
+str2 = '';
+this.x = 1;
+this.y = 2;
+
+for(i in this){
+ str1+=i;
+}
+
+eval('for(j in this){\nstr2+=j;\n}');
+
+if(!(str1 === str2)){
+ $ERROR("#1: scope chain must contain same objects in the same order as the calling context");
+}
+
diff --git a/js/src/tests/test262/ch10/10.4/10.4.2/S10.4.2_A1.1_T4.js b/js/src/tests/test262/ch10/10.4/10.4.2/S10.4.2_A1.1_T4.js
new file mode 100644
index 000000000..c5e5d0a04
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.2/S10.4.2_A1.1_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.
+
+/**
+ * The scope chain is initialised to contain the same objects,
+ * in the same order, as the calling context's scope chain
+ *
+ * @path ch10/10.4/10.4.2/S10.4.2_A1.1_T4.js
+ * @description eval within global execution context
+ */
+
+var i;
+var j;
+str1 = '';
+str2 = '';
+x = 1;
+
+for(i in this){
+ str1+=i;
+}
+
+eval('for(j in this){\nstr2+=j;\n}');
+
+if(!(str1 === str2)){
+ $ERROR("#1: scope chain must contain same objects in the same order as the calling context");
+}
+
+y = 2;
+
diff --git a/js/src/tests/test262/ch10/10.4/10.4.2/S10.4.2_A1.1_T5.js b/js/src/tests/test262/ch10/10.4/10.4.2/S10.4.2_A1.1_T5.js
new file mode 100644
index 000000000..927a8007d
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.2/S10.4.2_A1.1_T5.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.
+
+/**
+ * The scope chain is initialised to contain the same objects,
+ * in the same order, as the calling context's scope chain
+ *
+ * @path ch10/10.4/10.4.2/S10.4.2_A1.1_T5.js
+ * @description eval within global execution context
+ */
+
+var i;
+var j;
+str1 = '';
+str2 = '';
+var x = 1;
+
+for(i in this){
+ str1+=i;
+}
+
+eval('for(j in this){\nstr2+=j;\n}');
+
+if(!(str1 === str2)){
+ $ERROR("#1: scope chain must contain same objects in the same order as the calling context");
+}
+
+var y = 2;
+
diff --git a/js/src/tests/test262/ch10/10.4/10.4.2/S10.4.2_A1.1_T6.js b/js/src/tests/test262/ch10/10.4/10.4.2/S10.4.2_A1.1_T6.js
new file mode 100644
index 000000000..b9fb461f6
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.2/S10.4.2_A1.1_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.
+
+/**
+ * The scope chain is initialised to contain the same objects,
+ * in the same order, as the calling context's scope chain
+ *
+ * @path ch10/10.4/10.4.2/S10.4.2_A1.1_T6.js
+ * @description eval within global execution context
+ */
+
+var i;
+var j;
+str1 = '';
+str2 = '';
+this.x = 1;
+
+for(i in this){
+ str1+=i;
+}
+
+eval('for(j in this){\nstr2+=j;\n}');
+
+if(!(str1 === str2)){
+ $ERROR("#1: scope chain must contain same objects in the same order as the calling context");
+}
+
+this.y = 2;
+
diff --git a/js/src/tests/test262/ch10/10.4/10.4.2/S10.4.2_A1.1_T7.js b/js/src/tests/test262/ch10/10.4/10.4.2/S10.4.2_A1.1_T7.js
new file mode 100644
index 000000000..93160490c
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.2/S10.4.2_A1.1_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.
+
+/**
+ * The scope chain is initialised to contain the same objects,
+ * in the same order, as the calling context's scope chain
+ *
+ * @path ch10/10.4/10.4.2/S10.4.2_A1.1_T7.js
+ * @description eval within global execution context
+ */
+
+var i;
+var j;
+str1 = '';
+str2 = '';
+x = 1;
+
+for(i in this){
+ str1+=i;
+}
+
+eval('for(j in this){\nstr2+=j;\n}');
+
+if(!(str1 === str2)){
+ $ERROR("#1: scope chain must contain same objects in the same order as the calling context");
+}
+
+var y = 2;
+
diff --git a/js/src/tests/test262/ch10/10.4/10.4.2/S10.4.2_A1.1_T8.js b/js/src/tests/test262/ch10/10.4/10.4.2/S10.4.2_A1.1_T8.js
new file mode 100644
index 000000000..5376140af
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.2/S10.4.2_A1.1_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.
+
+/**
+ * The scope chain is initialised to contain the same objects,
+ * in the same order, as the calling context's scope chain
+ *
+ * @path ch10/10.4/10.4.2/S10.4.2_A1.1_T8.js
+ * @description eval within global execution context
+ */
+
+var i;
+var j;
+str1 = '';
+str2 = '';
+this.x = 1;
+
+for(i in this){
+ str1+=i;
+}
+
+eval('for(j in this){\nstr2+=j;\n}');
+
+if(!(str1 === str2)){
+ $ERROR("#1: scope chain must contain same objects in the same order as the calling context");
+}
+
+var y = 2;
+
diff --git a/js/src/tests/test262/ch10/10.4/10.4.2/S10.4.2_A1.1_T9.js b/js/src/tests/test262/ch10/10.4/10.4.2/S10.4.2_A1.1_T9.js
new file mode 100644
index 000000000..76d75b8f9
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.2/S10.4.2_A1.1_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.
+
+/**
+ * The scope chain is initialised to contain the same objects,
+ * in the same order, as the calling context's scope chain
+ *
+ * @path ch10/10.4/10.4.2/S10.4.2_A1.1_T9.js
+ * @description eval within global execution context
+ */
+
+var i;
+var j;
+str1 = '';
+str2 = '';
+
+for(i in this){
+ str1+=i;
+}
+
+eval('for(j in this){\nstr2+=j;\n}');
+
+if(!(str1 === str2)){
+ $ERROR("#1: scope chain must contain same objects in the same order as the calling context");
+}
+
+x = 1;
+y = 2;
+
diff --git a/js/src/tests/test262/ch10/10.4/10.4.2/S10.4.2_A1.2_T1.js b/js/src/tests/test262/ch10/10.4/10.4.2/S10.4.2_A1.2_T1.js
new file mode 100644
index 000000000..229cfc63f
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.2/S10.4.2_A1.2_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.
+
+/**
+ * The scope chain is initialised to contain the same objects,
+ * in the same order, as the calling context's scope chain
+ *
+ * @path ch10/10.4/10.4.2/S10.4.2_A1.2_T1.js
+ * @description eval within global execution context
+ */
+
+function f(){
+ var i;
+ var j;
+ str1 = '';
+ str2 = '';
+ x = 1;
+ y = 2;
+
+ for(i in this){
+ str1+=i;
+ }
+
+ eval('for(j in this){\nstr2+=j;\n}');
+ return (str1 === str2);
+}
+
+if(!f()){
+ $ERROR("#1: scope chain must contain same objects in the same order as the calling context");
+}
+
diff --git a/js/src/tests/test262/ch10/10.4/10.4.2/S10.4.2_A1.2_T10.js b/js/src/tests/test262/ch10/10.4/10.4.2/S10.4.2_A1.2_T10.js
new file mode 100644
index 000000000..1707379cf
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.2/S10.4.2_A1.2_T10.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.
+
+/**
+ * The scope chain is initialised to contain the same objects,
+ * in the same order, as the calling context's scope chain
+ *
+ * @path ch10/10.4/10.4.2/S10.4.2_A1.2_T10.js
+ * @description eval within global execution context
+ */
+
+function f(){
+ var i;
+ var j;
+ str1 = '';
+ str2 = '';
+ var x = 1;
+ var y = 2;
+
+ for(i in this){
+ str1+=i;
+ }
+
+ eval('for(j in this){\nstr2+=j;\n}');
+
+ return (str1 === str2);
+}
+
+if(!f()){
+ $ERROR("#1: scope chain must contain same objects in the same order as the calling context");
+}
+
diff --git a/js/src/tests/test262/ch10/10.4/10.4.2/S10.4.2_A1.2_T11.js b/js/src/tests/test262/ch10/10.4/10.4.2/S10.4.2_A1.2_T11.js
new file mode 100644
index 000000000..b94f2aa56
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.2/S10.4.2_A1.2_T11.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.
+
+/**
+ * The scope chain is initialised to contain the same objects,
+ * in the same order, as the calling context's scope chain
+ *
+ * @path ch10/10.4/10.4.2/S10.4.2_A1.2_T11.js
+ * @description eval within global execution context
+ * @noStrict
+ */
+
+function f(){
+ var i;
+ var j;
+ str1 = '';
+ str2 = '';
+
+ for(i in this){
+ str1+=i;
+ }
+
+ eval('for(j in this){\nstr2+=j;\n}');
+
+ return (str1 === str2);
+
+ this.x = 1;
+ this.y = 2;
+}
+
+if(!f()){
+ $ERROR("#1: scope chain must contain same objects in the same order as the calling context");
+}
+
diff --git a/js/src/tests/test262/ch10/10.4/10.4.2/S10.4.2_A1.2_T2.js b/js/src/tests/test262/ch10/10.4/10.4.2/S10.4.2_A1.2_T2.js
new file mode 100644
index 000000000..72611dc49
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.2/S10.4.2_A1.2_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.
+
+/**
+ * The scope chain is initialised to contain the same objects,
+ * in the same order, as the calling context's scope chain
+ *
+ * @path ch10/10.4/10.4.2/S10.4.2_A1.2_T2.js
+ * @description eval within global execution context
+ */
+
+function f(){
+ var i;
+ var j;
+ str1 = '';
+ str2 = '';
+
+ for(i in this){
+ str1+=i;
+ }
+
+ eval('for(j in this){\nstr2+=j;\n}');
+
+ return (str1 === str2);
+ var x = 1;
+ var y = 2;
+}
+
+if(!f()){
+ $ERROR("#1: scope chain must contain same objects in the same order as the calling context");
+}
+
diff --git a/js/src/tests/test262/ch10/10.4/10.4.2/S10.4.2_A1.2_T3.js b/js/src/tests/test262/ch10/10.4/10.4.2/S10.4.2_A1.2_T3.js
new file mode 100644
index 000000000..f3cd1b0bf
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.2/S10.4.2_A1.2_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.
+
+/**
+ * The scope chain is initialised to contain the same objects,
+ * in the same order, as the calling context's scope chain
+ *
+ * @path ch10/10.4/10.4.2/S10.4.2_A1.2_T3.js
+ * @description eval within global execution context
+ */
+
+function f(){
+ var i;
+ var j;
+ str1 = '';
+ str2 = '';
+ this.x = 1;
+ this.y = 2;
+
+ for(i in this){
+ str1+=i;
+ }
+
+ eval('for(j in this){\nstr2+=j;\n}');
+
+ return (str1 === str2);
+}
+
+if(!f()){
+ $ERROR("#1: scope chain must contain same objects in the same order as the calling context");
+}
+
diff --git a/js/src/tests/test262/ch10/10.4/10.4.2/S10.4.2_A1.2_T4.js b/js/src/tests/test262/ch10/10.4/10.4.2/S10.4.2_A1.2_T4.js
new file mode 100644
index 000000000..cebe8f3a2
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.2/S10.4.2_A1.2_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.
+
+/**
+ * The scope chain is initialised to contain the same objects,
+ * in the same order, as the calling context's scope chain
+ *
+ * @path ch10/10.4/10.4.2/S10.4.2_A1.2_T4.js
+ * @description eval within global execution context
+ */
+
+function f(){
+ var i;
+ var j;
+ str1 = '';
+ str2 = '';
+ x = 1;
+
+ for(i in this){
+ str1+=i;
+ }
+
+ eval('for(j in this){\nstr2+=j;\n}');
+
+ return (str1 === str2);
+
+ y = 2;
+}
+
+if(!f()){
+ $ERROR("#1: scope chain must contain same objects in the same order as the calling context");
+}
+
diff --git a/js/src/tests/test262/ch10/10.4/10.4.2/S10.4.2_A1.2_T5.js b/js/src/tests/test262/ch10/10.4/10.4.2/S10.4.2_A1.2_T5.js
new file mode 100644
index 000000000..802434849
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.2/S10.4.2_A1.2_T5.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.
+
+/**
+ * The scope chain is initialised to contain the same objects,
+ * in the same order, as the calling context's scope chain
+ *
+ * @path ch10/10.4/10.4.2/S10.4.2_A1.2_T5.js
+ * @description eval within global execution context
+ */
+
+function f(){
+ var i;
+ var j;
+ str1 = '';
+ str2 = '';
+ var x = 1;
+
+ for(i in this){
+ str1+=i;
+ }
+
+ eval('for(j in this){\nstr2+=j;\n}');
+
+ return (str1 === str2);
+
+ var y = 2;
+}
+
+if(!f()){
+ $ERROR("#1: scope chain must contain same objects in the same order as the calling context");
+}
+
+
diff --git a/js/src/tests/test262/ch10/10.4/10.4.2/S10.4.2_A1.2_T6.js b/js/src/tests/test262/ch10/10.4/10.4.2/S10.4.2_A1.2_T6.js
new file mode 100644
index 000000000..275f8ce98
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.2/S10.4.2_A1.2_T6.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.
+
+/**
+ * The scope chain is initialised to contain the same objects,
+ * in the same order, as the calling context's scope chain
+ *
+ * @path ch10/10.4/10.4.2/S10.4.2_A1.2_T6.js
+ * @description eval within global execution context
+ */
+
+function f(){
+ var i;
+ var j;
+ str1 = '';
+ str2 = '';
+ this.x = 1;
+
+ for(i in this){
+ str1+=i;
+ }
+
+ eval('for(j in this){\nstr2+=j;\n}');
+
+ return (str1 === str2);
+
+ this.y = 2;
+}
+
+if(!f()){
+ $ERROR("#1: scope chain must contain same objects in the same order as the calling context");
+}
+
+
diff --git a/js/src/tests/test262/ch10/10.4/10.4.2/S10.4.2_A1.2_T7.js b/js/src/tests/test262/ch10/10.4/10.4.2/S10.4.2_A1.2_T7.js
new file mode 100644
index 000000000..1870bc1fd
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.2/S10.4.2_A1.2_T7.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.
+
+/**
+ * The scope chain is initialised to contain the same objects,
+ * in the same order, as the calling context's scope chain
+ *
+ * @path ch10/10.4/10.4.2/S10.4.2_A1.2_T7.js
+ * @description eval within global execution context
+ */
+
+function f(){
+ var i;
+ var j;
+ str1 = '';
+ str2 = '';
+ x = 1;
+
+ for(i in this){
+ str1+=i;
+ }
+
+ eval('for(j in this){\nstr2+=j;\n}');
+
+ return (str1 === str2);
+
+ var y = 2;
+}
+
+if(!f()){
+ $ERROR("#1: scope chain must contain same objects in the same order as the calling context");
+}
+
+
+
diff --git a/js/src/tests/test262/ch10/10.4/10.4.2/S10.4.2_A1.2_T8.js b/js/src/tests/test262/ch10/10.4/10.4.2/S10.4.2_A1.2_T8.js
new file mode 100644
index 000000000..8f1282460
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.2/S10.4.2_A1.2_T8.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.
+
+/**
+ * The scope chain is initialised to contain the same objects,
+ * in the same order, as the calling context's scope chain
+ *
+ * @path ch10/10.4/10.4.2/S10.4.2_A1.2_T8.js
+ * @description eval within global execution context
+ */
+
+function f(){
+ var i;
+ var j;
+ str1 = '';
+ str2 = '';
+ this.x = 1;
+
+ for(i in this){
+ str1+=i;
+ }
+
+ eval('for(j in this){\nstr2+=j;\n}');
+
+ return (str1 === str2);
+
+ var y = 2;
+}
+
+if(!f()){
+ $ERROR("#1: scope chain must contain same objects in the same order as the calling context");
+}
+
+
diff --git a/js/src/tests/test262/ch10/10.4/10.4.2/S10.4.2_A1.2_T9.js b/js/src/tests/test262/ch10/10.4/10.4.2/S10.4.2_A1.2_T9.js
new file mode 100644
index 000000000..e77ca4323
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.2/S10.4.2_A1.2_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.
+
+/**
+ * The scope chain is initialised to contain the same objects,
+ * in the same order, as the calling context's scope chain
+ *
+ * @path ch10/10.4/10.4.2/S10.4.2_A1.2_T9.js
+ * @description eval within global execution context
+ */
+
+function f(){
+ var i;
+ var j;
+ str1 = '';
+ str2 = '';
+
+ for(i in this){
+ str1+=i;
+ }
+
+ eval('for(j in this){\nstr2+=j;\n}');
+
+ return (str1 === str2);
+
+ x = 1;
+ y = 2;
+}
+
+if(!f()){
+ $ERROR("#1: scope chain must contain same objects in the same order as the calling context");
+}
+
+
diff --git a/js/src/tests/test262/ch10/10.4/10.4.2/browser.js b/js/src/tests/test262/ch10/10.4/10.4.2/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.2/browser.js
diff --git a/js/src/tests/test262/ch10/10.4/10.4.2/shell.js b/js/src/tests/test262/ch10/10.4/10.4.2/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.2/shell.js
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-1-s.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-1-s.js
new file mode 100644
index 000000000..9ed7152e4
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-1-s.js
@@ -0,0 +1,29 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-1-s.js
+ * @description this is not coerced to an object in strict mode (Number)
+ * @noStrict
+ */
+
+
+function testcase() {
+
+ function foo()
+ {
+ 'use strict';
+ return typeof(this);
+ }
+
+ function bar()
+ {
+ return typeof(this);
+ }
+
+
+ return foo.call(1) === 'number' && bar.call(1) === 'object';
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-10-s.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-10-s.js
new file mode 100644
index 000000000..d737cff1a
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-10-s.js
@@ -0,0 +1,19 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-10-s.js
+ * @description Strict Mode - checking 'this' (FunctionExpression includes strict directive prologue)
+ * @onlyStrict
+ */
+
+function testcase() {
+var f = function () {
+ "use strict";
+ return typeof this;
+}
+return f() === "undefined";
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-100-s.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-100-s.js
new file mode 100644
index 000000000..98deb941e
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-100-s.js
@@ -0,0 +1,22 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-100-s.js
+ * @description Strict Mode - checking 'this' (strict function passed as arg to String.prototype.replace from non-strict context)
+ * @onlyStrict
+ */
+
+function testcase() {
+var x = 3;
+
+function f() {
+ "use strict";
+ x = this;
+ return "a";
+}
+return ("ab".replace("b", f)==="aa") && (x===undefined);
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-100gs.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-100gs.js
new file mode 100644
index 000000000..b78f81660
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-100gs.js
@@ -0,0 +1,20 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-100gs.js
+ * @description Strict Mode - checking 'this' (strict function passed as arg to String.prototype.replace from non-strict context)
+ * @onlyStrict
+ */
+var x = 3;
+
+function f() {
+ "use strict";
+ x = this;
+ return "a";
+}
+if (("ab".replace("b", f)!=="aa") || (x!==undefined)) {
+ throw "'this' had incorrect value!";
+} \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-101-s.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-101-s.js
new file mode 100644
index 000000000..bb7c2c7a9
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-101-s.js
@@ -0,0 +1,22 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-101-s.js
+ * @description Strict Mode - checking 'this' (non-strict function passed as arg to String.prototype.replace from strict context)
+ * @noStrict
+ */
+
+function testcase() {
+var x = 3;
+
+function f() {
+ x = this;
+ return "a";
+}
+
+return (function() {"use strict"; return "ab".replace("b", f)==="aa";}()) && (x===fnGlobalObject());
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-101gs.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-101gs.js
new file mode 100644
index 000000000..bc6eba526
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-101gs.js
@@ -0,0 +1,20 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-101gs.js
+ * @description Strict Mode - checking 'this' (non-strict function passed as arg to String.prototype.replace from strict context)
+ * @noStrict
+ */
+var x = 3;
+
+function f() {
+ x = this;
+ return "a";
+}
+
+if ( (!(function() {"use strict"; return "ab".replace("b", f)==="aa";}())) || (x!==fnGlobalObject())) {
+ throw "'this' had incorrect value!";
+}
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-102-s.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-102-s.js
new file mode 100644
index 000000000..0a11390ef
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-102-s.js
@@ -0,0 +1,23 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-102-s.js
+ * @description Strict Mode - checking 'this' (strict anonymous function passed as arg to String.prototype.replace from non-strict context)
+ * @onlyStrict
+ */
+
+function testcase() {
+var x = 3;
+
+return ("ab".replace("b", (function () {
+ "use strict";
+ return function () {
+ x = this;
+ return "a";
+ }
+ })())==="aa") && (x===undefined);
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-102gs.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-102gs.js
new file mode 100644
index 000000000..90505a2fd
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-102gs.js
@@ -0,0 +1,20 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-102gs.js
+ * @description Strict Mode - checking 'this' (strict anonymous function passed as arg to String.prototype.replace from non-strict context)
+ * @onlyStrict
+ */
+var x = 3;
+if ( ("ab".replace("b", (function () {
+ "use strict";
+ return function () {
+ x = this;
+ return "a";
+ }
+ })())!=="aa") || (x!==undefined)) {
+ throw "'this' had incorrect value!";
+}
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-103.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-103.js
new file mode 100644
index 000000000..a0bc90873
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-103.js
@@ -0,0 +1,18 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-103.js
+ * @description Non strict mode should ToObject thisArg if not an object. Abstract equality operator should succeed.
+ */
+
+function testcase(){
+ Object.defineProperty(Object.prototype, "x", { get: function () { return this; } });
+ if((5).x == 0) return false;
+ if(!((5).x == 5)) return false;
+ return true;
+}
+
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-104.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-104.js
new file mode 100644
index 000000000..42f89deb3
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-104.js
@@ -0,0 +1,20 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ *
+ * @path ch10/10.4/10.4.3/10.4.3-1-104.js
+ * @onlyStrict
+ * @description Strict mode should not ToObject thisArg if not an object. Strict equality operator should succeed.
+ */
+
+
+function testcase(){
+ Object.defineProperty(Object.prototype, "x", { get: function () { "use strict"; return this; } });
+ if(!((5).x === 5)) return false;
+ return true;
+}
+
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-105.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-105.js
new file mode 100644
index 000000000..a66b850cf
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-105.js
@@ -0,0 +1,21 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * Created based on feedback in https://bugs.ecmascript.org/show_bug.cgi?id=333
+ *
+ * @path ch10/10.4/10.4.3/10.4.3-1-105.js
+ * @description Non strict mode should ToObject thisArg if not an object. Return type should be object and strict equality should fail.
+ */
+
+ function testcase(){
+ Object.defineProperty(Object.prototype, "x", { get: function () { return this; } });
+ if((5).x === 5) return false;
+ if(!(typeof (5).x === "object")) return false;
+ return true;
+}
+
+runTestCase(testcase);
+
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-106.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-106.js
new file mode 100644
index 000000000..36afbda2a
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-106.js
@@ -0,0 +1,20 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * Created based on feedback in https://bugs.ecmascript.org/show_bug.cgi?id=333
+ *
+ * @path ch10/10.4/10.4.3/10.4.3-1-106.js
+ * @onlyStrict
+ * @description Strict mode should not ToObject thisArg if not an object. Return type should be 'number'.
+ */
+
+ function testcase(){
+ Object.defineProperty(Object.prototype, "x", { get: function () { "use strict"; return this; } });
+ if(!(typeof (5).x === "number")) return false;
+ return true;
+}
+
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-10gs.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-10gs.js
new file mode 100644
index 000000000..74ee475ae
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-10gs.js
@@ -0,0 +1,18 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-10gs.js
+ * @description Strict - checking 'this' from a global scope (FunctionExpression includes strict directive prologue)
+ * @onlyStrict
+ */
+
+var f = function () {
+ "use strict";
+ return typeof this;
+}
+if (f() !== "undefined") {
+ throw "'this' had incorrect value!";
+} \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-11-s.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-11-s.js
new file mode 100644
index 000000000..8f7813338
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-11-s.js
@@ -0,0 +1,18 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-11-s.js
+ * @description Strict Mode - checking 'this' (Anonymous FunctionExpression defined within strict mode)
+ * @onlyStrict
+ */
+
+function testcase() {
+"use strict";
+return (function () {
+ return typeof this;
+})() === "undefined";
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-11gs.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-11gs.js
new file mode 100644
index 000000000..3be7db62a
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-11gs.js
@@ -0,0 +1,18 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-11gs.js
+ * @description Strict - checking 'this' from a global scope (Anonymous FunctionExpression defined within strict mode)
+ * @onlyStrict
+ */
+
+"use strict";
+if ((function () {
+ return typeof this;
+})() !== "undefined") {
+ throw "'this' had incorrect value!";
+}
+
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-12-s.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-12-s.js
new file mode 100644
index 000000000..a88b4c03f
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-12-s.js
@@ -0,0 +1,18 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-12-s.js
+ * @description Strict Mode - checking 'this' (Anonymous FunctionExpression includes strict directive prologue)
+ * @onlyStrict
+ */
+
+function testcase() {
+return (function () {
+ "use strict";
+ return typeof this;
+})() === "undefined";
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-12gs.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-12gs.js
new file mode 100644
index 000000000..0bb4a9781
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-12gs.js
@@ -0,0 +1,17 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-12gs.js
+ * @description Strict - checking 'this' from a global scope (Anonymous FunctionExpression includes strict directive prologue)
+ * @onlyStrict
+ */
+
+if ((function () {
+ "use strict";
+ return typeof this;
+})() !== "undefined") {
+ throw "'this' had incorrect value!";
+} \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-13-s.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-13-s.js
new file mode 100644
index 000000000..c4ebc9d39
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-13-s.js
@@ -0,0 +1,17 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-13-s.js
+ * @description Strict Mode - checking 'this' (Function constructor defined within strict mode)
+ * @onlyStrict
+ */
+
+function testcase() {
+"use strict";
+var f = Function("return typeof this;");
+return f() !== "undefined";
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-13gs.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-13gs.js
new file mode 100644
index 000000000..d6c4d550a
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-13gs.js
@@ -0,0 +1,16 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-13gs.js
+ * @description Strict - checking 'this' from a global scope (Function constructor defined within strict mode)
+ * @onlyStrict
+ */
+
+"use strict";
+var f = Function("return typeof this;");
+if (f() === "undefined") {
+ throw "'this' had incorrect value!";
+} \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-14-s.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-14-s.js
new file mode 100644
index 000000000..fe45b6931
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-14-s.js
@@ -0,0 +1,16 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-14-s.js
+ * @description Strict Mode - checking 'this' (Function constructor includes strict directive prologue)
+ * @onlyStrict
+ */
+
+function testcase() {
+var f = Function("\"use strict\";\nreturn typeof this;");
+return f() === "undefined";
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-14gs.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-14gs.js
new file mode 100644
index 000000000..cec5e66d8
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-14gs.js
@@ -0,0 +1,15 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-14gs.js
+ * @description Strict - checking 'this' from a global scope (Function constructor includes strict directive prologue)
+ * @onlyStrict
+ */
+
+var f = Function("\"use strict\";\nreturn typeof this;");
+if (f() !== "undefined") {
+ throw "'this' had incorrect value!";
+} \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-15-s.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-15-s.js
new file mode 100644
index 000000000..961d55b6d
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-15-s.js
@@ -0,0 +1,17 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-15-s.js
+ * @description Strict Mode - checking 'this' (New'ed Function constructor defined within strict mode)
+ * @onlyStrict
+ */
+
+function testcase() {
+"use strict";
+var f = new Function("return typeof this;");
+return f() !== "undefined";
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-15gs.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-15gs.js
new file mode 100644
index 000000000..26d75fa64
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-15gs.js
@@ -0,0 +1,16 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-15gs.js
+ * @description Strict - checking 'this' from a global scope (New'ed Function constructor defined within strict mode)
+ * @onlyStrict
+ */
+
+"use strict";
+var f = new Function("return typeof this;");
+if (f() === "undefined") {
+ throw "'this' had incorrect value!";
+}
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-16-s.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-16-s.js
new file mode 100644
index 000000000..6167f4c4a
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-16-s.js
@@ -0,0 +1,16 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-16-s.js
+ * @description Strict Mode - checking 'this' (New'ed Function constructor includes strict directive prologue)
+ * @onlyStrict
+ */
+
+function testcase() {
+var f = new Function("\"use strict\";\nreturn typeof this;");
+return f() === "undefined";
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-16gs.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-16gs.js
new file mode 100644
index 000000000..b7a2287e7
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-16gs.js
@@ -0,0 +1,15 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-16gs.js
+ * @description Strict - checking 'this' from a global scope (New'ed Function constructor includes strict directive prologue)
+ * @onlyStrict
+ */
+
+var f = new Function("\"use strict\";\nreturn typeof this;");
+if (f() !== "undefined") {
+ throw "'this' had incorrect value!";
+} \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-17-s.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-17-s.js
new file mode 100644
index 000000000..4d2caf063
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-17-s.js
@@ -0,0 +1,16 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-17-s.js
+ * @description Strict Mode - checking 'this' (eval used within strict mode)
+ * @onlyStrict
+ */
+
+function testcase() {
+"use strict";
+return (eval("typeof this") === "undefined") && (eval("this") !== fnGlobalObject());
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-17gs.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-17gs.js
new file mode 100644
index 000000000..f583c6e89
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-17gs.js
@@ -0,0 +1,15 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-17gs.js
+ * @description Strict - checking 'this' from a global scope (eval used within strict mode)
+ * @onlyStrict
+ */
+
+"use strict";
+if (eval("this") !== fnGlobalObject()) {
+ throw "'this' had incorrect value!";
+} \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-18gs.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-18gs.js
new file mode 100644
index 000000000..e1d35e497
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-18gs.js
@@ -0,0 +1,14 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-18gs.js
+ * @description Strict - checking 'this' from a global scope (eval includes strict directive prologue)
+ * @onlyStrict
+ */
+
+if (eval("\"use strict\";\nthis") !== fnGlobalObject()) {
+ throw "'this' had incorrect value!";
+} \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-19-s.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-19-s.js
new file mode 100644
index 000000000..c2d412838
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-19-s.js
@@ -0,0 +1,17 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-19-s.js
+ * @description Strict Mode - checking 'this' (indirect eval used within strict mode)
+ * @onlyStrict
+ */
+
+function testcase() {
+"use strict";
+var my_eval = eval;
+return my_eval("this") === fnGlobalObject();
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-19gs.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-19gs.js
new file mode 100644
index 000000000..2d1c35edc
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-19gs.js
@@ -0,0 +1,16 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-19gs.js
+ * @description Strict - checking 'this' from a global scope (indirect eval used within strict mode)
+ * @onlyStrict
+ */
+
+"use strict";
+var my_eval = eval;
+if (my_eval("this") !== fnGlobalObject()) {
+ throw "'this' had incorrect value!";
+}
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-2-s.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-2-s.js
new file mode 100644
index 000000000..0efe7fd65
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-2-s.js
@@ -0,0 +1,29 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-2-s.js
+ * @description this is not coerced to an object in strict mode (string)
+ * @noStrict
+ */
+
+
+function testcase() {
+
+ function foo()
+ {
+ 'use strict';
+ return typeof(this);
+ }
+
+ function bar()
+ {
+ return typeof(this);
+ }
+
+
+ return foo.call('1') === 'string' && bar.call('1') === 'object';
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-20-s.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-20-s.js
new file mode 100644
index 000000000..869bc53e4
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-20-s.js
@@ -0,0 +1,16 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-20-s.js
+ * @description Strict Mode - checking 'this' (indirect eval includes strict directive prologue)
+ * @onlyStrict
+ */
+
+function testcase() {
+var my_eval = eval;
+return my_eval("\"use strict\";\nthis") === fnGlobalObject();
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-20gs.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-20gs.js
new file mode 100644
index 000000000..48544cb0e
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-20gs.js
@@ -0,0 +1,15 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-20gs.js
+ * @description Strict - checking 'this' from a global scope (indirect eval includes strict directive prologue)
+ * @onlyStrict
+ */
+
+var my_eval = eval;
+if (my_eval("\"use strict\";\nthis") !== fnGlobalObject() ) {
+ throw "'this' had incorrect value!";
+} \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-21-s.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-21-s.js
new file mode 100644
index 000000000..915f54ce8
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-21-s.js
@@ -0,0 +1,19 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-21-s.js
+ * @description Strict Mode - checking 'this' (New'ed object from FunctionDeclaration defined within strict mode)
+ * @onlyStrict
+ */
+
+function testcase() {
+"use strict";
+function f() {
+ return this;
+}
+return ( (new f())!==fnGlobalObject()) && (typeof (new f()) !== "undefined");
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-21gs.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-21gs.js
new file mode 100644
index 000000000..b12634049
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-21gs.js
@@ -0,0 +1,19 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-21gs.js
+ * @description Strict - checking 'this' from a global scope (New'ed object from FunctionDeclaration defined within strict mode)
+ * @onlyStrict
+ */
+
+"use strict";
+function f() {
+ return this;
+}
+if (((new f()) === fnGlobalObject()) || (typeof (new f()) === "undefined")) {
+ throw "'this' had incorrect value!";
+}
+
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-22-s.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-22-s.js
new file mode 100644
index 000000000..55d66e60c
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-22-s.js
@@ -0,0 +1,20 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-22-s.js
+ * @description Strict Mode - checking 'this' (New'ed object from FunctionDeclaration includes strict directive prologue)
+ * @onlyStrict
+ */
+
+function testcase() {
+function f() {
+ "use strict";
+ return this;
+}
+return ( (new f())!==fnGlobalObject()) && (typeof (new f()) !== "undefined");
+
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-22gs.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-22gs.js
new file mode 100644
index 000000000..1abde0e2f
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-22gs.js
@@ -0,0 +1,19 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-22gs.js
+ * @description Strict - checking 'this' from a global scope (New'ed object from FunctionDeclaration includes strict directive prologue)
+ * @onlyStrict
+ */
+
+function f() {
+ "use strict";
+ return this;
+}
+if (((new f()) === fnGlobalObject()) || (typeof (new f()) === "undefined")) {
+ throw "'this' had incorrect value!";
+}
+
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-23-s.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-23-s.js
new file mode 100644
index 000000000..b2c40be4f
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-23-s.js
@@ -0,0 +1,20 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-23-s.js
+ * @description Strict Mode - checking 'this' (New'ed object from FunctionExpression defined within strict mode)
+ * @onlyStrict
+ */
+
+function testcase() {
+"use strict";
+var f = function () {
+ return this;
+}
+return ( (new f())!==fnGlobalObject()) && (typeof (new f()) !== "undefined");
+
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-23gs.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-23gs.js
new file mode 100644
index 000000000..4aab84291
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-23gs.js
@@ -0,0 +1,18 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-23gs.js
+ * @description Strict - checking 'this' from a global scope (New'ed object from FunctionExpression defined within strict mode)
+ * @onlyStrict
+ */
+
+"use strict";
+var f = function () {
+ return this;
+}
+if (((new f()) === fnGlobalObject()) || (typeof (new f()) === "undefined")) {
+ throw "'this' had incorrect value!";
+}
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-24-s.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-24-s.js
new file mode 100644
index 000000000..3499abe4d
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-24-s.js
@@ -0,0 +1,19 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-24-s.js
+ * @description Strict Mode - checking 'this' (New'ed object from FunctionExpression includes strict directive prologue)
+ * @onlyStrict
+ */
+
+function testcase() {
+var f = function () {
+ "use strict";
+ return this;
+}
+return ( (new f())!==fnGlobalObject()) && (typeof (new f()) !== "undefined");
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-24gs.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-24gs.js
new file mode 100644
index 000000000..38d5e1490
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-24gs.js
@@ -0,0 +1,18 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-24gs.js
+ * @description Strict - checking 'this' from a global scope (New'ed object from FunctionExpression includes strict directive prologue)
+ * @onlyStrict
+ */
+
+var f = function () {
+ "use strict";
+ return this;
+}
+if (((new f()) === fnGlobalObject()) || (typeof (new f()) === "undefined")) {
+ throw "'this' had incorrect value!";
+} \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-25-s.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-25-s.js
new file mode 100644
index 000000000..138802f64
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-25-s.js
@@ -0,0 +1,19 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-25-s.js
+ * @description Strict Mode - checking 'this' (New'ed object from Anonymous FunctionExpression defined within strict mode)
+ * @onlyStrict
+ */
+
+function testcase() {
+"use strict";
+var obj = new (function () {
+ return this;
+});
+return (obj !== fnGlobalObject()) && ((typeof obj) !== "undefined");
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-25gs.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-25gs.js
new file mode 100644
index 000000000..30ac917cb
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-25gs.js
@@ -0,0 +1,19 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-25gs.js
+ * @description Strict - checking 'this' from a global scope (New'ed object from Anonymous FunctionExpression defined within strict mode)
+ * @onlyStrict
+ */
+
+"use strict";
+var obj = new (function () {
+ return this;
+});
+if ((obj === fnGlobalObject()) || (typeof obj === "undefined")) {
+ throw "'this' had incorrect value!";
+}
+
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-26-s.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-26-s.js
new file mode 100644
index 000000000..a015f4082
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-26-s.js
@@ -0,0 +1,19 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-26-s.js
+ * @description Strict Mode - checking 'this' (New'ed object from Anonymous FunctionExpression includes strict directive prologue)
+ * @onlyStrict
+ */
+
+function testcase() {
+var obj = new (function () {
+ "use strict";
+ return this;
+});
+return (obj !== fnGlobalObject()) && ((typeof obj) !== "undefined");
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-26gs.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-26gs.js
new file mode 100644
index 000000000..e19bce342
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-26gs.js
@@ -0,0 +1,18 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-26gs.js
+ * @description Strict - checking 'this' from a global scope (New'ed object from Anonymous FunctionExpression includes strict directive prologue)
+ * @onlyStrict
+ */
+
+var obj = new (function () {
+ "use strict";
+ return this;
+});
+if ((obj === fnGlobalObject()) || (typeof obj === "undefined")) {
+ throw "'this' had incorrect value!";
+} \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-27-s.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-27-s.js
new file mode 100644
index 000000000..54eda820f
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-27-s.js
@@ -0,0 +1,22 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-27-s.js
+ * @description Strict Mode - checking 'this' (FunctionDeclaration defined within a FunctionDeclaration inside strict mode)
+ * @onlyStrict
+ */
+
+function testcase() {
+"use strict";
+function f1() {
+ function f() {
+ return typeof this;
+ }
+ return (f()==="undefined") && ((typeof this)==="undefined");
+}
+return f1();
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-27gs.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-27gs.js
new file mode 100644
index 000000000..0cb1cb4f2
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-27gs.js
@@ -0,0 +1,21 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-27gs.js
+ * @description Strict - checking 'this' from a global scope (FunctionDeclaration defined within a FunctionDeclaration inside strict mode)
+ * @onlyStrict
+ */
+
+"use strict";
+function f1() {
+ function f() {
+ return typeof this;
+ }
+ return (f()==="undefined") && ((typeof this)==="undefined");
+}
+if (! f1()) {
+ throw "'this' had incorrect value!";
+} \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-28-s.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-28-s.js
new file mode 100644
index 000000000..c2a5578a8
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-28-s.js
@@ -0,0 +1,22 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-28-s.js
+ * @description Strict Mode - checking 'this' (FunctionExpression defined within a FunctionDeclaration inside strict mode)
+ * @onlyStrict
+ */
+
+function testcase() {
+"use strict";
+function f1() {
+ var f = function () {
+ return typeof this;
+ }
+ return (f()==="undefined") && ((typeof this)==="undefined");
+}
+return f1();
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-28gs.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-28gs.js
new file mode 100644
index 000000000..663a18e00
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-28gs.js
@@ -0,0 +1,21 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-28gs.js
+ * @description Strict - checking 'this' from a global scope (FunctionExpression defined within a FunctionDeclaration inside strict mode)
+ * @onlyStrict
+ */
+
+"use strict";
+function f1() {
+ var f = function () {
+ return typeof this;
+ }
+ return (f()==="undefined") && ((typeof this)==="undefined");
+}
+if (! f1()) {
+ throw "'this' had incorrect value!";
+} \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-29-s.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-29-s.js
new file mode 100644
index 000000000..87ea431d7
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-29-s.js
@@ -0,0 +1,21 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-29-s.js
+ * @description Strict Mode - checking 'this' (Anonymous FunctionExpression defined within a FunctionDeclaration inside strict mode)
+ * @onlyStrict
+ */
+
+function testcase() {
+"use strict";
+function f1() {
+ return ((function () {
+ return typeof this;
+ })()==="undefined") && ((typeof this)==="undefined");
+}
+return f1();
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-29gs.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-29gs.js
new file mode 100644
index 000000000..416f1b4f3
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-29gs.js
@@ -0,0 +1,20 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-29gs.js
+ * @description Strict - checking 'this' from a global scope (Anonymous FunctionExpression defined within a FunctionDeclaration inside strict mode)
+ * @onlyStrict
+ */
+
+"use strict";
+function f1() {
+ return ((function () {
+ return typeof this;
+ })()==="undefined") && ((typeof this)==="undefined");
+}
+if (! f1()) {
+ throw "'this' had incorrect value!";
+} \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-3-s.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-3-s.js
new file mode 100644
index 000000000..19bafdcff
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-3-s.js
@@ -0,0 +1,27 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-3-s.js
+ * @description this is not coerced to an object in strict mode (undefined)
+ * @noStrict
+ */
+
+
+function testcase() {
+
+ function foo()
+ {
+ 'use strict';
+ return typeof(this);
+ }
+
+ function bar()
+ {
+ return typeof(this);
+ }
+ return foo.call(undefined) === 'undefined' && bar.call() === 'object';
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-30-s.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-30-s.js
new file mode 100644
index 000000000..b4085931b
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-30-s.js
@@ -0,0 +1,22 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-30-s.js
+ * @description Strict Mode - checking 'this' (FunctionDeclaration defined within a FunctionExpression inside strict mode)
+ * @onlyStrict
+ */
+
+function testcase() {
+"use strict";
+var f1 = function () {
+ function f() {
+ return typeof this;
+ }
+ return (f()==="undefined") && ((typeof this)==="undefined");
+}
+return f1();
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-30gs.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-30gs.js
new file mode 100644
index 000000000..ab3c6222d
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-30gs.js
@@ -0,0 +1,21 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-30gs.js
+ * @description Strict - checking 'this' from a global scope (FunctionDeclaration defined within a FunctionExpression inside strict mode)
+ * @onlyStrict
+ */
+
+"use strict";
+var f1 = function () {
+ function f() {
+ return typeof this;
+ }
+ return (f()==="undefined") && ((typeof this)==="undefined");
+}
+if (! f1()) {
+ throw "'this' had incorrect value!";
+} \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-31-s.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-31-s.js
new file mode 100644
index 000000000..dc32ca19e
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-31-s.js
@@ -0,0 +1,22 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-31-s.js
+ * @description Strict Mode - checking 'this' (FunctionExpression defined within a FunctionExpression inside strict mode)
+ * @onlyStrict
+ */
+
+function testcase() {
+"use strict";
+var f1 = function () {
+ var f = function () {
+ return typeof this;
+ }
+ return (f()==="undefined") && ((typeof this)==="undefined");
+}
+return f1();
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-31gs.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-31gs.js
new file mode 100644
index 000000000..1bbb2d161
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-31gs.js
@@ -0,0 +1,21 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-31gs.js
+ * @description Strict - checking 'this' from a global scope (FunctionExpression defined within a FunctionExpression inside strict mode)
+ * @onlyStrict
+ */
+
+"use strict";
+var f1 = function () {
+ var f = function () {
+ return typeof this;
+ }
+ return (f()==="undefined") && ((typeof this)==="undefined");
+}
+if (! f1()) {
+ throw "'this' had incorrect value!";
+} \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-32-s.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-32-s.js
new file mode 100644
index 000000000..4ba988920
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-32-s.js
@@ -0,0 +1,21 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-32-s.js
+ * @description Strict Mode - checking 'this' (Anonymous FunctionExpression defined within a FunctionExpression inside strict mode)
+ * @onlyStrict
+ */
+
+function testcase() {
+"use strict";
+var f1 = function () {
+ return ((function () {
+ return typeof this;
+ })()==="undefined") && ((typeof this)==="undefined");
+}
+return f1();
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-32gs.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-32gs.js
new file mode 100644
index 000000000..1cd2ad05a
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-32gs.js
@@ -0,0 +1,20 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-32gs.js
+ * @description Strict - checking 'this' from a global scope (Anonymous FunctionExpression defined within a FunctionExpression inside strict mode)
+ * @onlyStrict
+ */
+
+"use strict";
+var f1 = function () {
+ return ((function () {
+ return typeof this;
+ })()==="undefined") && ((typeof this)==="undefined");
+}
+if (! f1()) {
+ throw "'this' had incorrect value!";
+}
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-33-s.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-33-s.js
new file mode 100644
index 000000000..6c4d66e2e
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-33-s.js
@@ -0,0 +1,21 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-33-s.js
+ * @description Strict Mode - checking 'this' (FunctionDeclaration defined within an Anonymous FunctionExpression inside strict mode)
+ * @onlyStrict
+ */
+
+function testcase() {
+"use strict";
+return (function () {
+ function f() {
+ return typeof this;
+ }
+ return (f()==="undefined") && ((typeof this)==="undefined");
+})();
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-33gs.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-33gs.js
new file mode 100644
index 000000000..c288566cb
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-33gs.js
@@ -0,0 +1,20 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-33gs.js
+ * @description Strict - checking 'this' from a global scope (FunctionDeclaration defined within an Anonymous FunctionExpression inside strict mode)
+ * @onlyStrict
+ */
+
+"use strict";
+if (! ((function () {
+ function f() {
+ return typeof this;
+ }
+ return (f()==="undefined") && ((typeof this)==="undefined");
+})())) {
+ throw "'this' had incorrect value!";
+}
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-34-s.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-34-s.js
new file mode 100644
index 000000000..9cf25b53d
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-34-s.js
@@ -0,0 +1,21 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-34-s.js
+ * @description Strict Mode - checking 'this' (FunctionExpression defined within an Anonymous FunctionExpression inside strict mode)
+ * @onlyStrict
+ */
+
+function testcase() {
+"use strict";
+return (function () {
+ var f = function () {
+ return typeof this;
+ }
+ return (f()==="undefined") && ((typeof this)==="undefined");
+})();
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-34gs.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-34gs.js
new file mode 100644
index 000000000..72980aa41
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-34gs.js
@@ -0,0 +1,20 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-34gs.js
+ * @description Strict - checking 'this' from a global scope (FunctionExpression defined within an Anonymous FunctionExpression inside strict mode)
+ * @onlyStrict
+ */
+
+"use strict";
+if (! ((function () {
+ var f = function () {
+ return typeof this;
+ }
+ return (f()==="undefined") && ((typeof this)==="undefined");
+})())) {
+ throw "'this' had incorrect value!";
+} \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-35-s.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-35-s.js
new file mode 100644
index 000000000..8f7abb36f
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-35-s.js
@@ -0,0 +1,20 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-35-s.js
+ * @description Strict Mode - checking 'this' (Anonymous FunctionExpression defined within an Anonymous FunctionExpression inside strict mode)
+ * @onlyStrict
+ */
+
+function testcase() {
+"use strict";
+return (function () {
+ return ((function () {
+ return typeof this;
+ })()==="undefined") && ((typeof this)==="undefined");
+})();
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-35gs.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-35gs.js
new file mode 100644
index 000000000..ecee18fe3
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-35gs.js
@@ -0,0 +1,19 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-35gs.js
+ * @description Strict - checking 'this' from a global scope (Anonymous FunctionExpression defined within an Anonymous FunctionExpression inside strict mode)
+ * @onlyStrict
+ */
+
+"use strict";
+if (! ((function () {
+ return ((function () {
+ return typeof this;
+ })()==="undefined") && ((typeof this)==="undefined");
+})())) {
+ throw "'this' had incorrect value!";
+} \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-36-s.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-36-s.js
new file mode 100644
index 000000000..08bea7cc4
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-36-s.js
@@ -0,0 +1,22 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-36-s.js
+ * @description Strict Mode - checking 'this' (FunctionDeclaration defined within a FunctionDeclaration with a strict directive prologue)
+ * @onlyStrict
+ */
+
+function testcase() {
+function f1() {
+ "use strict";
+ function f() {
+ return typeof this;
+ }
+ return (f()==="undefined") && ((typeof this)==="undefined");
+}
+return f1();
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-36gs.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-36gs.js
new file mode 100644
index 000000000..88fab9f20
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-36gs.js
@@ -0,0 +1,21 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-36gs.js
+ * @description Strict - checking 'this' from a global scope (FunctionDeclaration defined within a FunctionDeclaration with a strict directive prologue)
+ * @onlyStrict
+ */
+
+function f1() {
+ "use strict";
+ function f() {
+ return typeof this;
+ }
+ return (f()==="undefined") && ((typeof this)==="undefined");
+}
+if (! f1()) {
+ throw "'this' had incorrect value!";
+} \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-37-s.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-37-s.js
new file mode 100644
index 000000000..93e7fde28
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-37-s.js
@@ -0,0 +1,22 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-37-s.js
+ * @description Strict Mode - checking 'this' (FunctionExpression defined within a FunctionDeclaration with a strict directive prologue)
+ * @onlyStrict
+ */
+
+function testcase() {
+function f1() {
+ "use strict";
+ var f = function () {
+ return typeof this;
+ }
+ return (f()==="undefined") && ((typeof this)==="undefined");
+}
+return f1();
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-37gs.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-37gs.js
new file mode 100644
index 000000000..795b6032d
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-37gs.js
@@ -0,0 +1,21 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-37gs.js
+ * @description Strict - checking 'this' from a global scope (FunctionExpression defined within a FunctionDeclaration with a strict directive prologue)
+ * @onlyStrict
+ */
+
+function f1() {
+ "use strict";
+ var f = function () {
+ return typeof this;
+ }
+ return (f()==="undefined") && ((typeof this)==="undefined");
+}
+if (! f1()) {
+ throw "'this' had incorrect value!";
+} \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-38-s.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-38-s.js
new file mode 100644
index 000000000..f496d4ed0
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-38-s.js
@@ -0,0 +1,21 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-38-s.js
+ * @description Strict Mode - checking 'this' (Anonymous FunctionExpression defined within a FunctionDeclaration with a strict directive prologue)
+ * @onlyStrict
+ */
+
+function testcase() {
+function f1() {
+ "use strict";
+ return ((function () {
+ return typeof this;
+ })()==="undefined") && ((typeof this)==="undefined");
+}
+return f1();
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-38gs.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-38gs.js
new file mode 100644
index 000000000..1c00b742e
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-38gs.js
@@ -0,0 +1,20 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-38gs.js
+ * @description Strict - checking 'this' from a global scope (Anonymous FunctionExpression defined within a FunctionDeclaration with a strict directive prologue)
+ * @onlyStrict
+ */
+
+function f1() {
+ "use strict";
+ return ((function () {
+ return typeof this;
+ })()==="undefined") && ((typeof this)==="undefined");
+}
+if (! f1()) {
+ throw "'this' had incorrect value!";
+} \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-39-s.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-39-s.js
new file mode 100644
index 000000000..22478bc26
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-39-s.js
@@ -0,0 +1,22 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-39-s.js
+ * @description Strict Mode - checking 'this' (FunctionDeclaration defined within a FunctionExpression with a strict directive prologue)
+ * @onlyStrict
+ */
+
+function testcase() {
+var f1 = function () {
+ "use strict";
+ function f() {
+ return typeof this;
+ }
+ return (f()==="undefined") && ((typeof this)==="undefined");
+}
+return f1();
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-39gs.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-39gs.js
new file mode 100644
index 000000000..7ec3adf91
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-39gs.js
@@ -0,0 +1,21 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-39gs.js
+ * @description Strict - checking 'this' from a global scope (FunctionDeclaration defined within a FunctionExpression with a strict directive prologue)
+ * @onlyStrict
+ */
+
+var f1 = function () {
+ "use strict";
+ function f() {
+ return typeof this;
+ }
+ return (f()==="undefined") && ((typeof this)==="undefined");
+}
+if (! f1()) {
+ throw "'this' had incorrect value!";
+} \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-4-s.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-4-s.js
new file mode 100644
index 000000000..28bd8f059
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-4-s.js
@@ -0,0 +1,29 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-4-s.js
+ * @description this is not coerced to an object in strict mode (boolean)
+ * @noStrict
+ */
+
+
+function testcase() {
+
+ function foo()
+ {
+ 'use strict';
+ return typeof(this);
+ }
+
+ function bar()
+ {
+ return typeof(this);
+ }
+
+
+ return foo.call(true) === 'boolean' && bar.call(true) === 'object';
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-40-s.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-40-s.js
new file mode 100644
index 000000000..b90817f63
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-40-s.js
@@ -0,0 +1,22 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-40-s.js
+ * @description Strict Mode - checking 'this' (FunctionExpression defined within a FunctionExpression with a strict directive prologue)
+ * @onlyStrict
+ */
+
+function testcase() {
+var f1 = function () {
+ "use strict";
+ var f = function () {
+ return typeof this;
+ }
+ return (f()==="undefined") && ((typeof this)==="undefined");
+}
+return f1();
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-40gs.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-40gs.js
new file mode 100644
index 000000000..2d8fbf0ba
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-40gs.js
@@ -0,0 +1,21 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-40gs.js
+ * @description Strict - checking 'this' from a global scope (FunctionExpression defined within a FunctionExpression with a strict directive prologue)
+ * @onlyStrict
+ */
+
+var f1 = function () {
+ "use strict";
+ var f = function () {
+ return typeof this;
+ }
+ return (f()==="undefined") && ((typeof this)==="undefined");
+}
+if (! f1()) {
+ throw "'this' had incorrect value!";
+} \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-41-s.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-41-s.js
new file mode 100644
index 000000000..48495e392
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-41-s.js
@@ -0,0 +1,21 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-41-s.js
+ * @description Strict Mode - checking 'this' (Anonymous FunctionExpression defined within a FunctionExpression with a strict directive prologue)
+ * @onlyStrict
+ */
+
+function testcase() {
+var f1 = function () {
+ "use strict";
+ return ((function () {
+ return typeof this;
+ })()==="undefined") && ((typeof this)==="undefined");
+}
+return f1();
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-41gs.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-41gs.js
new file mode 100644
index 000000000..43cba61c8
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-41gs.js
@@ -0,0 +1,20 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-41gs.js
+ * @description Strict - checking 'this' from a global scope (Anonymous FunctionExpression defined within a FunctionExpression with a strict directive prologue)
+ * @onlyStrict
+ */
+
+var f1 = function () {
+ "use strict";
+ return ((function () {
+ return typeof this;
+ })()==="undefined") && ((typeof this)==="undefined");
+}
+if (! f1()) {
+ throw "'this' had incorrect value!";
+} \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-42-s.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-42-s.js
new file mode 100644
index 000000000..c4f705857
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-42-s.js
@@ -0,0 +1,21 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-42-s.js
+ * @description Strict Mode - checking 'this' (FunctionDeclaration defined within an Anonymous FunctionExpression with a strict directive prologue)
+ * @onlyStrict
+ */
+
+function testcase() {
+return (function () {
+ "use strict";
+ function f() {
+ return typeof this;
+ }
+ return (f()==="undefined") && ((typeof this)==="undefined");
+})();
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-42gs.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-42gs.js
new file mode 100644
index 000000000..b1802bf16
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-42gs.js
@@ -0,0 +1,20 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-42gs.js
+ * @description Strict - checking 'this' from a global scope (FunctionDeclaration defined within an Anonymous FunctionExpression with a strict directive prologue)
+ * @onlyStrict
+ */
+
+if (! ((function () {
+ "use strict";
+ function f() {
+ return typeof this;
+ }
+ return (f()==="undefined") && ((typeof this)==="undefined");
+})())) {
+ throw "'this' had incorrect value!";
+} \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-43-s.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-43-s.js
new file mode 100644
index 000000000..6575e56b9
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-43-s.js
@@ -0,0 +1,21 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-43-s.js
+ * @description Strict Mode - checking 'this' (FunctionExpression defined within an Anonymous FunctionExpression with a strict directive prologue)
+ * @onlyStrict
+ */
+
+function testcase() {
+return (function () {
+ "use strict";
+ var f = function () {
+ return typeof this;
+ }
+ return (f()==="undefined") && ((typeof this)==="undefined");
+})();
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-43gs.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-43gs.js
new file mode 100644
index 000000000..0da4b7871
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-43gs.js
@@ -0,0 +1,20 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-43gs.js
+ * @description Strict - checking 'this' from a global scope (FunctionExpression defined within an Anonymous FunctionExpression with a strict directive prologue)
+ * @onlyStrict
+ */
+
+if (! ((function () {
+ "use strict";
+ var f = function () {
+ return typeof this;
+ }
+ return (f()==="undefined") && ((typeof this)==="undefined");
+})())) {
+ throw "'this' had incorrect value!";
+} \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-44-s.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-44-s.js
new file mode 100644
index 000000000..b7ac11d8d
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-44-s.js
@@ -0,0 +1,20 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-44-s.js
+ * @description Strict Mode - checking 'this' (Anonymous FunctionExpression defined within an Anonymous FunctionExpression with a strict directive prologue)
+ * @onlyStrict
+ */
+
+function testcase() {
+return (function () {
+ "use strict";
+ return ((function () {
+ return typeof this;
+ })()==="undefined") && ((typeof this)==="undefined");
+})();
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-44gs.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-44gs.js
new file mode 100644
index 000000000..2300e4acb
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-44gs.js
@@ -0,0 +1,19 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-44gs.js
+ * @description Strict - checking 'this' from a global scope (Anonymous FunctionExpression defined within an Anonymous FunctionExpression with a strict directive prologue)
+ * @onlyStrict
+ */
+
+if (! ((function () {
+ "use strict";
+ return ((function () {
+ return typeof this;
+ })()==="undefined") && ((typeof this)==="undefined");
+})())) {
+ throw "'this' had incorrect value!";
+} \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-45-s.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-45-s.js
new file mode 100644
index 000000000..e23f9fef0
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-45-s.js
@@ -0,0 +1,22 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-45-s.js
+ * @description Strict Mode - checking 'this' (FunctionDeclaration with a strict directive prologue defined within a FunctionDeclaration)
+ * @noStrict
+ */
+
+function testcase() {
+function f1() {
+ function f() {
+ "use strict";
+ return typeof this;
+ }
+ return (f()==="undefined") && (this===fnGlobalObject());
+}
+return f1();
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-45gs.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-45gs.js
new file mode 100644
index 000000000..ce99d6574
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-45gs.js
@@ -0,0 +1,21 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-45gs.js
+ * @description Strict - checking 'this' from a global scope (FunctionDeclaration with a strict directive prologue defined within a FunctionDeclaration)
+ * @noStrict
+ */
+
+function f1() {
+ function f() {
+ "use strict";
+ return typeof this;
+ }
+ return (f()==="undefined") && (this===fnGlobalObject());
+}
+if (! f1()) {
+ throw "'this' had incorrect value!";
+} \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-46-s.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-46-s.js
new file mode 100644
index 000000000..5945b2b21
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-46-s.js
@@ -0,0 +1,22 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-46-s.js
+ * @description Strict Mode - checking 'this' (FunctionExpression with a strict directive prologue defined within a FunctionDeclaration)
+ * @noStrict
+ */
+
+function testcase() {
+function f1() {
+ var f = function () {
+ "use strict";
+ return typeof this;
+ }
+ return (f()==="undefined") && (this===fnGlobalObject());
+}
+return f1();
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-46gs.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-46gs.js
new file mode 100644
index 000000000..3d0ddd895
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-46gs.js
@@ -0,0 +1,21 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-46gs.js
+ * @description Strict - checking 'this' from a global scope (FunctionExpression with a strict directive prologue defined within a FunctionDeclaration)
+ * @noStrict
+ */
+
+function f1() {
+ var f = function () {
+ "use strict";
+ return typeof this;
+ }
+ return (f()==="undefined") && (this===fnGlobalObject());
+}
+if (! f1()) {
+ throw "'this' had incorrect value!";
+} \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-47-s.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-47-s.js
new file mode 100644
index 000000000..6a5fe9d40
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-47-s.js
@@ -0,0 +1,21 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-47-s.js
+ * @description Strict Mode - checking 'this' (Anonymous FunctionExpression with a strict directive prologue defined within a FunctionDeclaration)
+ * @noStrict
+ */
+
+function testcase() {
+function f1() {
+ return ((function () {
+ "use strict";
+ return typeof this;
+ })()==="undefined") && (this===fnGlobalObject());
+}
+return f1();
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-47gs.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-47gs.js
new file mode 100644
index 000000000..78884f8c6
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-47gs.js
@@ -0,0 +1,20 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-47gs.js
+ * @description Strict - checking 'this' from a global scope (Anonymous FunctionExpression with a strict directive prologue defined within a FunctionDeclaration)
+ * @noStrict
+ */
+
+function f1() {
+ return ((function () {
+ "use strict";
+ return typeof this;
+ })()==="undefined") && (this===fnGlobalObject());
+}
+if (! f1()) {
+ throw "'this' had incorrect value!";
+} \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-48-s.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-48-s.js
new file mode 100644
index 000000000..3c4d49af4
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-48-s.js
@@ -0,0 +1,22 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-48-s.js
+ * @description Strict Mode - checking 'this' (FunctionDeclaration with a strict directive prologue defined within a FunctionExpression)
+ * @noStrict
+ */
+
+function testcase() {
+var f1 = function () {
+ function f() {
+ "use strict";
+ return typeof this;
+ }
+ return (f()==="undefined") && (this===fnGlobalObject());
+}
+return f1();
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-48gs.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-48gs.js
new file mode 100644
index 000000000..b6d619176
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-48gs.js
@@ -0,0 +1,21 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-48gs.js
+ * @description Strict - checking 'this' from a global scope (FunctionDeclaration with a strict directive prologue defined within a FunctionExpression)
+ * @noStrict
+ */
+
+var f1 = function () {
+ function f() {
+ "use strict";
+ return typeof this;
+ }
+ return (f()==="undefined") && (this===fnGlobalObject());
+}
+if (! f1()) {
+ throw "'this' had incorrect value!";
+} \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-49-s.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-49-s.js
new file mode 100644
index 000000000..3ae616eaa
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-49-s.js
@@ -0,0 +1,22 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-49-s.js
+ * @description Strict Mode - checking 'this' (FunctionExpression with a strict directive prologue defined within a FunctionExpression)
+ * @noStrict
+ */
+
+function testcase() {
+var f1 = function () {
+ var f = function () {
+ "use strict";
+ return typeof this;
+ }
+ return (f()==="undefined") && (this===fnGlobalObject());
+}
+return f1();
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-49gs.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-49gs.js
new file mode 100644
index 000000000..d6aee3a91
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-49gs.js
@@ -0,0 +1,21 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-49gs.js
+ * @description Strict - checking 'this' from a global scope (FunctionExpression with a strict directive prologue defined within a FunctionExpression)
+ * @noStrict
+ */
+
+var f1 = function () {
+ var f = function () {
+ "use strict";
+ return typeof this;
+ }
+ return (f()==="undefined") && (this===fnGlobalObject());
+}
+if (! f1()) {
+ throw "'this' had incorrect value!";
+} \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-5-s.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-5-s.js
new file mode 100644
index 000000000..5d64cea6b
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-5-s.js
@@ -0,0 +1,32 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-5-s.js
+ * @description this is not coerced to an object in strict mode (function)
+ * @onlyStrict
+ */
+
+
+function testcase() {
+
+ function foo()
+ {
+ 'use strict';
+ return typeof(this);
+ }
+
+ function bar()
+ {
+ return typeof(this);
+ }
+
+ function foobar()
+ {
+ }
+
+ return foo.call(foobar) === 'function' && bar.call(foobar) === 'function';
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-50-s.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-50-s.js
new file mode 100644
index 000000000..ad273ecb1
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-50-s.js
@@ -0,0 +1,21 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-50-s.js
+ * @description Strict Mode - checking 'this' (Anonymous FunctionExpression with a strict directive prologue defined within a FunctionExpression)
+ * @noStrict
+ */
+
+function testcase() {
+var f1 = function () {
+ return ((function () {
+ "use strict";
+ return typeof this;
+ })()==="undefined") && (this===fnGlobalObject());
+}
+return f1();
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-50gs.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-50gs.js
new file mode 100644
index 000000000..21cd879ef
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-50gs.js
@@ -0,0 +1,20 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-50gs.js
+ * @description Strict - checking 'this' from a global scope (Anonymous FunctionExpression with a strict directive prologue defined within a FunctionExpression)
+ * @noStrict
+ */
+
+var f1 = function () {
+ return ((function () {
+ "use strict";
+ return typeof this;
+ })()==="undefined") && (this===fnGlobalObject());
+}
+if (! f1()) {
+ throw "'this' had incorrect value!";
+} \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-51-s.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-51-s.js
new file mode 100644
index 000000000..e8935366e
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-51-s.js
@@ -0,0 +1,21 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-51-s.js
+ * @description Strict Mode - checking 'this' (FunctionDeclaration with a strict directive prologue defined within an Anonymous FunctionExpression)
+ * @noStrict
+ */
+
+function testcase() {
+return (function () {
+ function f() {
+ "use strict";
+ return typeof this;
+ }
+ return (f()==="undefined") && (this===fnGlobalObject());
+})();
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-51gs.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-51gs.js
new file mode 100644
index 000000000..52f8e35a6
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-51gs.js
@@ -0,0 +1,20 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-51gs.js
+ * @description Strict - checking 'this' from a global scope (FunctionDeclaration with a strict directive prologue defined within an Anonymous FunctionExpression)
+ * @noStrict
+ */
+
+if (! ((function () {
+ function f() {
+ "use strict";
+ return typeof this;
+ }
+ return (f()==="undefined") && (this===fnGlobalObject());
+})())) {
+ throw "'this' had incorrect value!";
+} \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-52-s.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-52-s.js
new file mode 100644
index 000000000..b2c3a0082
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-52-s.js
@@ -0,0 +1,21 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-52-s.js
+ * @description Strict Mode - checking 'this' (FunctionExpression with a strict directive prologue defined within an Anonymous FunctionExpression)
+ * @noStrict
+ */
+
+function testcase() {
+return (function () {
+ var f = function () {
+ "use strict";
+ return typeof this;
+ }
+ return (f()==="undefined") && (this===fnGlobalObject());
+})();
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-52gs.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-52gs.js
new file mode 100644
index 000000000..cc617750d
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-52gs.js
@@ -0,0 +1,20 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-52gs.js
+ * @description Strict - checking 'this' from a global scope (FunctionExpression with a strict directive prologue defined within an Anonymous FunctionExpression)
+ * @noStrict
+ */
+
+if (! ((function () {
+ var f = function () {
+ "use strict";
+ return typeof this;
+ }
+ return (f()==="undefined") && (this===fnGlobalObject());
+})())) {
+ throw "'this' had incorrect value!";
+} \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-53-s.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-53-s.js
new file mode 100644
index 000000000..2324bf44f
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-53-s.js
@@ -0,0 +1,20 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-53-s.js
+ * @description Strict Mode - checking 'this' (Anonymous FunctionExpression with a strict directive prologue defined within an Anonymous FunctionExpression)
+ * @noStrict
+ */
+
+function testcase() {
+return (function () {
+ return ((function () {
+ "use strict";
+ return typeof this;
+ })()==="undefined") && (this===fnGlobalObject());
+})();
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-53gs.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-53gs.js
new file mode 100644
index 000000000..0c6581f2e
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-53gs.js
@@ -0,0 +1,19 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-53gs.js
+ * @description Strict - checking 'this' from a global scope (Anonymous FunctionExpression with a strict directive prologue defined within an Anonymous FunctionExpression)
+ * @noStrict
+ */
+
+if (! ((function () {
+ return ((function () {
+ "use strict";
+ return typeof this;
+ })()==="undefined") && (this===fnGlobalObject());
+})())) {
+ throw "'this' had incorrect value!";
+} \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-54-s.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-54-s.js
new file mode 100644
index 000000000..ac481d610
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-54-s.js
@@ -0,0 +1,17 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-54-s.js
+ * @description Strict Mode - checking 'this' (Literal getter defined within strict mode)
+ * @onlyStrict
+ */
+
+function testcase() {
+"use strict";
+var o = { get foo() { return this; } }
+return o.foo===o;
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-54gs.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-54gs.js
new file mode 100644
index 000000000..571ad634e
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-54gs.js
@@ -0,0 +1,16 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-54gs.js
+ * @description Strict - checking 'this' from a global scope (Literal getter defined within strict mode)
+ * @onlyStrict
+ */
+
+"use strict";
+var o = { get foo() { return this; } }
+if (o.foo!==o) {
+ throw "'this' had incorrect value!";
+} \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-55-s.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-55-s.js
new file mode 100644
index 000000000..49acc2d11
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-55-s.js
@@ -0,0 +1,16 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-55-s.js
+ * @description Strict Mode - checking 'this' (Literal getter includes strict directive prologue)
+ * @onlyStrict
+ */
+
+function testcase() {
+var o = { get foo() { "use strict"; return this; } }
+return o.foo===o;
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-55gs.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-55gs.js
new file mode 100644
index 000000000..ab3ccbbc5
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-55gs.js
@@ -0,0 +1,15 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-55gs.js
+ * @description Strict - checking 'this' from a global scope (Literal getter includes strict directive prologue)
+ * @onlyStrict
+ */
+
+var o = { get foo() { "use strict"; return this; } }
+if (o.foo!==o) {
+ throw "'this' had incorrect value!";
+} \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-56-s.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-56-s.js
new file mode 100644
index 000000000..1a492c462
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-56-s.js
@@ -0,0 +1,19 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-56-s.js
+ * @description Strict Mode - checking 'this' (Literal setter defined within strict mode)
+ * @onlyStrict
+ */
+
+function testcase() {
+"use strict";
+var x = 2;
+var o = { set foo(stuff) { x=this; } }
+o.foo = 3;
+return x===o;
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-56gs.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-56gs.js
new file mode 100644
index 000000000..7ea7c7a3f
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-56gs.js
@@ -0,0 +1,18 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-56gs.js
+ * @description Strict - checking 'this' from a global scope (Literal setter defined within strict mode)
+ * @onlyStrict
+ */
+
+"use strict";
+var x = 2;
+var o = { set foo(stuff) { x=this; } }
+o.foo = 3;
+if (x!==o) {
+ throw "'this' had incorrect value!";
+}
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-57-s.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-57-s.js
new file mode 100644
index 000000000..bcd4ef62c
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-57-s.js
@@ -0,0 +1,18 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-57-s.js
+ * @description Strict Mode - checking 'this' (Literal setter includes strict directive prologue)
+ * @onlyStrict
+ */
+
+function testcase() {
+var x = 2;
+var o = { set foo(stuff) { "use strict"; x=this; } }
+o.foo = 3;
+return x===o;
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-57gs.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-57gs.js
new file mode 100644
index 000000000..e59df3357
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-57gs.js
@@ -0,0 +1,17 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-57gs.js
+ * @description Strict - checking 'this' from a global scope (Literal setter includes strict directive prologue)
+ * @onlyStrict
+ */
+
+var x = 2;
+var o = { set foo(stuff) { "use strict"; x=this; } }
+o.foo = 3;
+if (x!==o) {
+ throw "'this' had incorrect value!";
+}
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-58-s.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-58-s.js
new file mode 100644
index 000000000..964f8d435
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-58-s.js
@@ -0,0 +1,18 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-58-s.js
+ * @description Strict Mode - checking 'this' (Injected getter defined within strict mode)
+ * @onlyStrict
+ */
+
+function testcase() {
+"use strict";
+var o = {};
+Object.defineProperty(o, "foo", { get: function() { return this; } });
+return o.foo===o;
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-58gs.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-58gs.js
new file mode 100644
index 000000000..166e44079
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-58gs.js
@@ -0,0 +1,17 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-58gs.js
+ * @description Strict - checking 'this' from a global scope (Injected getter defined within strict mode)
+ * @onlyStrict
+ */
+
+"use strict";
+var o = {};
+Object.defineProperty(o, "foo", { get : function() { return this; } });
+if (o.foo!==o) {
+ throw "'this' had incorrect value!";
+} \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-59-s.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-59-s.js
new file mode 100644
index 000000000..7d0afddf5
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-59-s.js
@@ -0,0 +1,17 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-59-s.js
+ * @description Strict Mode - checking 'this' (Injected getter includes strict directive prologue)
+ * @onlyStrict
+ */
+
+function testcase() {
+var o = {};
+Object.defineProperty(o, "foo", { get: function() { "use strict"; return this; } });
+return o.foo===o;
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-59gs.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-59gs.js
new file mode 100644
index 000000000..09e1d0648
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-59gs.js
@@ -0,0 +1,16 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-59gs.js
+ * @description Strict - checking 'this' from a global scope (Injected getter includes strict directive prologue)
+ * @onlyStrict
+ */
+
+var o = {};
+Object.defineProperty(o, "foo", { get: function() { "use strict"; return this; } });
+if (o.foo!==o) {
+ throw "'this' had incorrect value!";
+} \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-60-s.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-60-s.js
new file mode 100644
index 000000000..1bd803bee
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-60-s.js
@@ -0,0 +1,20 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-60-s.js
+ * @description Strict Mode - checking 'this' (Injected setter defined within strict mode)
+ * @onlyStrict
+ */
+
+function testcase() {
+"use strict";
+var o = {};
+var x = 2;
+Object.defineProperty(o, "foo", { set: function(stuff) { x=this; } });
+o.foo = 3;
+return x===o;
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-60gs.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-60gs.js
new file mode 100644
index 000000000..09053dbd1
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-60gs.js
@@ -0,0 +1,19 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-60gs.js
+ * @description Strict - checking 'this' from a global scope (Injected setter defined within strict mode)
+ * @onlyStrict
+ */
+
+"use strict";
+var o = {};
+var x = 2;
+Object.defineProperty(o, "foo", { set: function(stuff) { x=this; } });
+o.foo = 3;
+if (x!==o) {
+ throw "'this' had incorrect value!";
+} \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-61-s.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-61-s.js
new file mode 100644
index 000000000..23586b250
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-61-s.js
@@ -0,0 +1,19 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-61-s.js
+ * @description Strict Mode - checking 'this' (Injected setter includes strict directive prologue)
+ * @onlyStrict
+ */
+
+function testcase() {
+var o = {};
+var x = 2;
+Object.defineProperty(o, "foo", { set: function(stuff) { "use strict"; x=this; } });
+o.foo = 3;
+return x===o;
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-61gs.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-61gs.js
new file mode 100644
index 000000000..2d31c32d8
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-61gs.js
@@ -0,0 +1,18 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-61gs.js
+ * @description Strict - checking 'this' from a global scope (Injected setter includes strict directive prologue)
+ * @onlyStrict
+ */
+
+var o = {};
+var x = 2;
+Object.defineProperty(o, "foo", { set: function(stuff) { "use strict"; x=this; } });
+o.foo = 3;
+if (x!==o) {
+ throw "'this' had incorrect value!";
+}
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-62-s.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-62-s.js
new file mode 100644
index 000000000..a2e3c0bb8
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-62-s.js
@@ -0,0 +1,17 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-62-s.js
+ * @description Strict Mode - checking 'this' (strict function declaration called by non-strict function declaration)
+ * @onlyStrict
+ */
+
+function testcase() {
+function f() { "use strict"; return this;};
+function foo() { return f();}
+return foo()===undefined;
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-62gs.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-62gs.js
new file mode 100644
index 000000000..9cd2ae0e7
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-62gs.js
@@ -0,0 +1,16 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-62gs.js
+ * @description Strict - checking 'this' from a global scope (strict function declaration called by non-strict function declaration)
+ * @onlyStrict
+ */
+
+function f() { "use strict"; return this;};
+function foo() { return f();}
+if (foo()!==undefined){
+ throw "'this' had incorrect value!";
+} \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-63-s.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-63-s.js
new file mode 100644
index 000000000..5b93d280b
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-63-s.js
@@ -0,0 +1,16 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-63-s.js
+ * @description Strict Mode - checking 'this' (strict function declaration called by non-strict eval)
+ * @onlyStrict
+ */
+
+function testcase() {
+function f() { "use strict"; return this===undefined;};
+return eval("f();");
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-63gs.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-63gs.js
new file mode 100644
index 000000000..07f7a9cee
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-63gs.js
@@ -0,0 +1,15 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-63gs.js
+ * @description Strict - checking 'this' from a global scope (strict function declaration called by non-strict eval)
+ * @onlyStrict
+ */
+
+function f() { "use strict"; return this===undefined;};
+if (! eval("f();")){
+ throw "'this' had incorrect value!";
+} \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-64-s.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-64-s.js
new file mode 100644
index 000000000..ddb042449
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-64-s.js
@@ -0,0 +1,16 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-64-s.js
+ * @description Strict Mode - checking 'this' (strict function declaration called by non-strict Function constructor)
+ * @onlyStrict
+ */
+
+function testcase() {
+fnGlobalObject().f = function() { "use strict"; return this===undefined;};
+return Function("return f();")();
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-64gs.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-64gs.js
new file mode 100644
index 000000000..6877c8341
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-64gs.js
@@ -0,0 +1,15 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-64gs.js
+ * @description Strict - checking 'this' from a global scope (strict function declaration called by non-strict Function constructor)
+ * @onlyStrict
+ */
+
+function f() { "use strict"; return this===undefined;};
+if (! (Function("return f();")())){
+ throw "'this' had incorrect value!";
+} \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-65-s.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-65-s.js
new file mode 100644
index 000000000..5b0f20a65
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-65-s.js
@@ -0,0 +1,16 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-65-s.js
+ * @description Strict Mode - checking 'this' (strict function declaration called by non-strict new'ed Function constructor)
+ * @onlyStrict
+ */
+
+function testcase() {
+fnGlobalObject().f = function() { "use strict"; return this===undefined;};
+return (new Function("return f();"))();
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-65gs.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-65gs.js
new file mode 100644
index 000000000..567a12360
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-65gs.js
@@ -0,0 +1,15 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-65gs.js
+ * @description Strict - checking 'this' from a global scope (strict function declaration called by non-strict new'ed Function constructor)
+ * @onlyStrict
+ */
+
+function f() { "use strict"; return this===undefined;};
+if (! ( (new Function("return f();")) () )){
+ throw "'this' had incorrect value!";
+} \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-66-s.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-66-s.js
new file mode 100644
index 000000000..3b4401827
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-66-s.js
@@ -0,0 +1,16 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-66-s.js
+ * @description Strict Mode - checking 'this' (strict function declaration called by Function.prototype.apply())
+ * @onlyStrict
+ */
+
+function testcase() {
+function f() { "use strict"; return this===undefined;};
+return f.apply();
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-66gs.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-66gs.js
new file mode 100644
index 000000000..29a609b7a
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-66gs.js
@@ -0,0 +1,15 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-66gs.js
+ * @description Strict - checking 'this' from a global scope (strict function declaration called by Function.prototype.apply())
+ * @onlyStrict
+ */
+
+function f() { "use strict"; return this===undefined;};
+if (! f.apply()){
+ throw "'this' had incorrect value!";
+} \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-67-s.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-67-s.js
new file mode 100644
index 000000000..baf57dc0c
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-67-s.js
@@ -0,0 +1,16 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-67-s.js
+ * @description Strict Mode - checking 'this' (strict function declaration called by Function.prototype.apply(null))
+ * @onlyStrict
+ */
+
+function testcase() {
+function f() { "use strict"; return this===null;};
+return f.apply(null);
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-67gs.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-67gs.js
new file mode 100644
index 000000000..9122b9fde
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-67gs.js
@@ -0,0 +1,15 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-67gs.js
+ * @description Strict - checking 'this' from a global scope (strict function declaration called by Function.prototype.apply(null))
+ * @onlyStrict
+ */
+
+function f() { "use strict"; return this===null;};
+if (! f.apply(null)){
+ throw "'this' had incorrect value!";
+}
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-68-s.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-68-s.js
new file mode 100644
index 000000000..10a5294e1
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-68-s.js
@@ -0,0 +1,16 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-68-s.js
+ * @description Strict Mode - checking 'this' (strict function declaration called by Function.prototype.apply(undefined))
+ * @onlyStrict
+ */
+
+function testcase() {
+function f() { "use strict"; return this===undefined;};
+return f.apply(undefined);
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-68gs.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-68gs.js
new file mode 100644
index 000000000..5bfeee3f0
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-68gs.js
@@ -0,0 +1,15 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-68gs.js
+ * @description Strict - checking 'this' from a global scope (strict function declaration called by Function.prototype.apply(undefined))
+ * @onlyStrict
+ */
+
+function f() { "use strict"; return this===undefined;};
+if (! f.apply(undefined)){
+ throw "'this' had incorrect value!";
+} \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-69-s.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-69-s.js
new file mode 100644
index 000000000..8db3b94ce
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-69-s.js
@@ -0,0 +1,17 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-69-s.js
+ * @description Strict Mode - checking 'this' (strict function declaration called by Function.prototype.apply(someObject))
+ * @onlyStrict
+ */
+
+function testcase() {
+var o = {};
+function f() { "use strict"; return this===o;};
+return f.apply(o);
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-69gs.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-69gs.js
new file mode 100644
index 000000000..f32b45575
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-69gs.js
@@ -0,0 +1,16 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-69gs.js
+ * @description Strict - checking 'this' from a global scope (strict function declaration called by Function.prototype.apply(someObject))
+ * @onlyStrict
+ */
+
+var o = {};
+function f() { "use strict"; return this===o;};
+if (! f.apply(o)){
+ throw "'this' had incorrect value!";
+} \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-7-s.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-7-s.js
new file mode 100644
index 000000000..ae370f766
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-7-s.js
@@ -0,0 +1,20 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-7-s.js
+ * @description Strict Mode - checking 'this' (FunctionDeclaration defined within strict mode)
+ * @onlyStrict
+ */
+
+
+function testcase() {
+"use strict";
+function f() {
+ return typeof this;
+}
+return f() === "undefined";
+}
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-70-s.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-70-s.js
new file mode 100644
index 000000000..d1bf918ee
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-70-s.js
@@ -0,0 +1,16 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-70-s.js
+ * @description Strict Mode - checking 'this' (strict function declaration called by Function.prototype.apply(globalObject))
+ * @onlyStrict
+ */
+
+function testcase() {
+function f() { "use strict"; return this;};
+return f.apply(fnGlobalObject()) === fnGlobalObject();
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-70gs.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-70gs.js
new file mode 100644
index 000000000..0044b8afd
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-70gs.js
@@ -0,0 +1,15 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-70gs.js
+ * @description Strict - checking 'this' from a global scope (strict function declaration called by Function.prototype.apply(globalObject))
+ * @onlyStrict
+ */
+
+function f() { "use strict"; return this;};
+if (f.apply(fnGlobalObject()) !== fnGlobalObject()){
+ throw "'this' had incorrect value!";
+} \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-71-s.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-71-s.js
new file mode 100644
index 000000000..5fe5dcba3
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-71-s.js
@@ -0,0 +1,16 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-71-s.js
+ * @description Strict Mode - checking 'this' (strict function declaration called by Function.prototype.call())
+ * @onlyStrict
+ */
+
+function testcase() {
+function f() { "use strict"; return this===undefined;};
+return f.call();
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-71gs.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-71gs.js
new file mode 100644
index 000000000..c978be9ad
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-71gs.js
@@ -0,0 +1,15 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-71gs.js
+ * @description Strict - checking 'this' from a global scope (strict function declaration called by Function.prototype.call())
+ * @onlyStrict
+ */
+
+function f() { "use strict"; return this===undefined;};
+if (! f.call()){
+ throw "'this' had incorrect value!";
+} \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-72-s.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-72-s.js
new file mode 100644
index 000000000..b9c669291
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-72-s.js
@@ -0,0 +1,16 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-72-s.js
+ * @description Strict Mode - checking 'this' (strict function declaration called by Function.prototype.call(null))
+ * @onlyStrict
+ */
+
+function testcase() {
+function f() { "use strict"; return this===null;};
+return f.call(null);
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-72gs.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-72gs.js
new file mode 100644
index 000000000..49ca243d1
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-72gs.js
@@ -0,0 +1,15 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-72gs.js
+ * @description Strict - checking 'this' from a global scope (strict function declaration called by Function.prototype.call(null))
+ * @onlyStrict
+ */
+
+function f() { "use strict"; return this===null;};
+if (! f.call(null)){
+ throw "'this' had incorrect value!";
+} \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-73-s.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-73-s.js
new file mode 100644
index 000000000..e04b5d7be
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-73-s.js
@@ -0,0 +1,16 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-73-s.js
+ * @description Strict Mode - checking 'this' (strict function declaration called by Function.prototype.call(undefined))
+ * @onlyStrict
+ */
+
+function testcase() {
+function f() { "use strict"; return this===undefined;};
+return f.call(undefined);
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-73gs.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-73gs.js
new file mode 100644
index 000000000..10a3176db
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-73gs.js
@@ -0,0 +1,15 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-73gs.js
+ * @description Strict - checking 'this' from a global scope (strict function declaration called by Function.prototype.call(undefined))
+ * @onlyStrict
+ */
+
+function f() { "use strict"; return this===undefined;};
+if (! f.call(undefined)){
+ throw "'this' had incorrect value!";
+} \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-74-s.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-74-s.js
new file mode 100644
index 000000000..7e2d746e3
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-74-s.js
@@ -0,0 +1,17 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-74-s.js
+ * @description Strict Mode - checking 'this' (strict function declaration called by Function.prototype.call(someObject))
+ * @onlyStrict
+ */
+
+function testcase() {
+var o = {};
+function f() { "use strict"; return this===o;};
+return f.call(o);
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-74gs.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-74gs.js
new file mode 100644
index 000000000..27a73d67f
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-74gs.js
@@ -0,0 +1,16 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-74gs.js
+ * @description Strict - checking 'this' from a global scope (strict function declaration called by Function.prototype.call(someObject))
+ * @onlyStrict
+ */
+
+var o = {};
+function f() { "use strict"; return this===o;};
+if (! f.call(o)){
+ throw "'this' had incorrect value!";
+} \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-75-s.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-75-s.js
new file mode 100644
index 000000000..fa8f4d4b0
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-75-s.js
@@ -0,0 +1,16 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-75-s.js
+ * @description Strict Mode - checking 'this' (strict function declaration called by Function.prototype.call(globalObject))
+ * @onlyStrict
+ */
+
+function testcase() {
+function f() { "use strict"; return this;};
+return f.call(fnGlobalObject()) === fnGlobalObject();
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-75gs.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-75gs.js
new file mode 100644
index 000000000..3df699177
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-75gs.js
@@ -0,0 +1,15 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-75gs.js
+ * @description Strict - checking 'this' from a global scope (strict function declaration called by Function.prototype.call(globalObject))
+ * @onlyStrict
+ */
+
+function f() { "use strict"; return this;};
+if (f.call(fnGlobalObject()) !== fnGlobalObject()){
+ throw "'this' had incorrect value!";
+}
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-76-s.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-76-s.js
new file mode 100644
index 000000000..7918f0dfa
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-76-s.js
@@ -0,0 +1,16 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-76-s.js
+ * @description Strict Mode - checking 'this' (strict function declaration called by Function.prototype.bind()())
+ * @onlyStrict
+ */
+
+function testcase() {
+function f() { "use strict"; return this===undefined;};
+return f.bind()();
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-76gs.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-76gs.js
new file mode 100644
index 000000000..f61d0e324
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-76gs.js
@@ -0,0 +1,15 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-76gs.js
+ * @description Strict - checking 'this' from a global scope (strict function declaration called by Function.prototype.bind()())
+ * @onlyStrict
+ */
+
+function f() { "use strict"; return this===undefined;};
+if (! (f.bind()())){
+ throw "'this' had incorrect value!";
+} \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-77-s.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-77-s.js
new file mode 100644
index 000000000..fb5614dd9
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-77-s.js
@@ -0,0 +1,16 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-77-s.js
+ * @description Strict Mode - checking 'this' (strict function declaration called by Function.prototype.bind(null)())
+ * @onlyStrict
+ */
+
+function testcase() {
+function f() { "use strict"; return this===null;};
+return f.bind(null)();
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-77gs.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-77gs.js
new file mode 100644
index 000000000..51d38c398
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-77gs.js
@@ -0,0 +1,15 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-77gs.js
+ * @description Strict - checking 'this' from a global scope (strict function declaration called by Function.prototype.bind(null)())
+ * @onlyStrict
+ */
+
+function f() { "use strict"; return this===null;};
+if (! (f.bind(null)())){
+ throw "'this' had incorrect value!";
+} \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-78-s.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-78-s.js
new file mode 100644
index 000000000..3d50f279c
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-78-s.js
@@ -0,0 +1,16 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-78-s.js
+ * @description Strict Mode - checking 'this' (strict function declaration called by Function.prototype.bind(undefined)())
+ * @onlyStrict
+ */
+
+function testcase() {
+function f() { "use strict"; return this===undefined;};
+return f.bind(undefined)();
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-78gs.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-78gs.js
new file mode 100644
index 000000000..8d67642fa
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-78gs.js
@@ -0,0 +1,15 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-78gs.js
+ * @description Strict - checking 'this' from a global scope (strict function declaration called by Function.prototype.bind(undefined)())
+ * @onlyStrict
+ */
+
+function f() { "use strict"; return this===undefined;};
+if (! (f.bind(undefined)())){
+ throw "'this' had incorrect value!";
+} \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-79-s.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-79-s.js
new file mode 100644
index 000000000..5dace0a45
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-79-s.js
@@ -0,0 +1,17 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-79-s.js
+ * @description Strict Mode - checking 'this' (strict function declaration called by Function.prototype.bind(someObject)())
+ * @onlyStrict
+ */
+
+function testcase() {
+var o = {};
+function f() { "use strict"; return this===o;};
+return f.bind(o)();
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-79gs.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-79gs.js
new file mode 100644
index 000000000..a347c004a
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-79gs.js
@@ -0,0 +1,16 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-79gs.js
+ * @description Strict - checking 'this' from a global scope (strict function declaration called by Function.prototype.bind(someObject)())
+ * @onlyStrict
+ */
+
+var o = {};
+function f() { "use strict"; return this===o;};
+if (! (f.bind(o)())){
+ throw "'this' had incorrect value!";
+} \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-7gs.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-7gs.js
new file mode 100644
index 000000000..23b1c0583
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-7gs.js
@@ -0,0 +1,18 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-7gs.js
+ * @description Strict - checking 'this' from a global scope (FunctionDeclaration defined within strict mode)
+ * @onlyStrict
+ */
+
+"use strict";
+function f() {
+ return typeof this;
+}
+if (f() !== "undefined") {
+ throw "'this' had incorrect value!";
+}
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-8-s.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-8-s.js
new file mode 100644
index 000000000..7d6beaa1a
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-8-s.js
@@ -0,0 +1,20 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-8-s.js
+ * @description Strict Mode - checking 'this' (FunctionDeclaration includes strict directive prologue)
+ * @onlyStrict
+ */
+
+
+function testcase() {
+function f() {
+ "use strict";
+ return typeof this;
+}
+return f() === "undefined";
+}
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-80-s.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-80-s.js
new file mode 100644
index 000000000..86951b61a
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-80-s.js
@@ -0,0 +1,16 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-80-s.js
+ * @description Strict Mode - checking 'this' (strict function declaration called by Function.prototype.bind(globalObject)())
+ * @onlyStrict
+ */
+
+function testcase() {
+function f() { "use strict"; return this;};
+return f.bind(fnGlobalObject())() === fnGlobalObject();
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-80gs.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-80gs.js
new file mode 100644
index 000000000..e3ed02e6a
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-80gs.js
@@ -0,0 +1,15 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-80gs.js
+ * @description Strict - checking 'this' from a global scope (strict function declaration called by Function.prototype.bind(globalObject)())
+ * @onlyStrict
+ */
+
+function f() { "use strict"; return this;};
+if (f.bind(fnGlobalObject())() !== fnGlobalObject()){
+ throw "'this' had incorrect value!";
+} \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-81-s.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-81-s.js
new file mode 100644
index 000000000..61be6b784
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-81-s.js
@@ -0,0 +1,17 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-81-s.js
+ * @description Strict Mode - checking 'this' (non-strict function declaration called by strict function declaration)
+ * @noStrict
+ */
+
+function testcase() {
+function f() { return this!==undefined;};
+function foo() { "use strict"; return f();}
+return foo();
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-81gs.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-81gs.js
new file mode 100644
index 000000000..0544e0cd7
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-81gs.js
@@ -0,0 +1,16 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-81gs.js
+ * @description Strict - checking 'this' from a global scope (non-strict function declaration called by strict function declaration)
+ * @noStrict
+ */
+
+function f() { return this!==undefined;};
+function foo() { "use strict"; return f();}
+if (! foo()){
+ throw "'this' had incorrect value!";
+} \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-82-s.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-82-s.js
new file mode 100644
index 000000000..0a2b16600
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-82-s.js
@@ -0,0 +1,16 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-82-s.js
+ * @description Strict Mode - checking 'this' (non-strict function declaration called by strict eval)
+ * @noStrict
+ */
+
+function testcase() {
+function f() { return this!==undefined;};
+return (function () {"use strict"; return eval("f();");})();
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-82gs.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-82gs.js
new file mode 100644
index 000000000..305435eeb
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-82gs.js
@@ -0,0 +1,15 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-82gs.js
+ * @description Strict - checking 'this' from a global scope (non-strict function declaration called by strict eval)
+ * @noStrict
+ */
+
+function f() { return this!==undefined;};
+if (! ((function () {"use strict"; return eval("f();");})()) ){
+ throw "'this' had incorrect value!";
+}
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-83-s.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-83-s.js
new file mode 100644
index 000000000..f03adeff5
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-83-s.js
@@ -0,0 +1,16 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-83-s.js
+ * @description Strict Mode - checking 'this' (non-strict function declaration called by strict Function constructor)
+ * @noStrict
+ */
+
+function testcase() {
+fnGlobalObject().f = function() {return this!==undefined;};
+return (function () {return Function("\"use strict\";return f();")();})();
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-83gs.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-83gs.js
new file mode 100644
index 000000000..dfe59d84e
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-83gs.js
@@ -0,0 +1,15 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-83gs.js
+ * @description Strict - checking 'this' from a global scope (non-strict function declaration called by strict Function constructor)
+ * @noStrict
+ */
+
+function f() {return this!==undefined;};
+if (! ((function () {return Function("\"use strict\";return f();")();})()) ){
+ throw "'this' had incorrect value!";
+}
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-84-s.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-84-s.js
new file mode 100644
index 000000000..807817846
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-84-s.js
@@ -0,0 +1,16 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-84-s.js
+ * @description Strict Mode - checking 'this' (non-strict function declaration called by strict new'ed Function constructor)
+ * @noStrict
+ */
+
+function testcase() {
+fnGlobalObject().f = function() { return this!==undefined;};
+return (function () {return new Function("\"use strict\";return f();")();})();
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-84gs.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-84gs.js
new file mode 100644
index 000000000..23a20910d
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-84gs.js
@@ -0,0 +1,15 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-84gs.js
+ * @description Strict - checking 'this' from a global scope (non-strict function declaration called by strict new'ed Function constructor)
+ * @noStrict
+ */
+
+function f() { return this!==undefined;};
+if (! ((function () {return new Function("\"use strict\";return f();")();})()) ){
+ throw "'this' had incorrect value!";
+} \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-85-s.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-85-s.js
new file mode 100644
index 000000000..abdb33b92
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-85-s.js
@@ -0,0 +1,16 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-85-s.js
+ * @description Strict Mode - checking 'this' (non-strict function declaration called by strict Function.prototype.apply())
+ * @noStrict
+ */
+
+function testcase() {
+function f() { return this!==undefined;};
+return (function () {"use strict"; return f.apply();})();
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-85gs.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-85gs.js
new file mode 100644
index 000000000..093115f32
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-85gs.js
@@ -0,0 +1,15 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-85gs.js
+ * @description Strict - checking 'this' from a global scope (non-strict function declaration called by strict Function.prototype.apply())
+ * @noStrict
+ */
+
+function f() { return this!==undefined;};
+if (! ((function () {"use strict"; return f.apply();})())){
+ throw "'this' had incorrect value!";
+}
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-86-s.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-86-s.js
new file mode 100644
index 000000000..fca8007f3
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-86-s.js
@@ -0,0 +1,16 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-86-s.js
+ * @description Strict Mode - checking 'this' (non-strict function declaration called by strict Function.prototype.apply(null))
+ * @noStrict
+ */
+
+function testcase() {
+function f() { return this===fnGlobalObject();};
+return (function () {"use strict"; return f.apply(null);})();
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-86gs.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-86gs.js
new file mode 100644
index 000000000..f1e23cce2
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-86gs.js
@@ -0,0 +1,15 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-86gs.js
+ * @description Strict - checking 'this' from a global scope (non-strict function declaration called by strict Function.prototype.apply(null))
+ * @noStrict
+ */
+
+function f() { return this===fnGlobalObject();};
+if (! ((function () {"use strict"; return f.apply(null);})())){
+ throw "'this' had incorrect value!";
+}
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-87-s.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-87-s.js
new file mode 100644
index 000000000..be4505ace
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-87-s.js
@@ -0,0 +1,16 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-87-s.js
+ * @description Strict Mode - checking 'this' (non-strict function declaration called by strict Function.prototype.apply(undefined))
+ * @noStrict
+ */
+
+function testcase() {
+function f() { return this===fnGlobalObject()};
+return (function () {"use strict"; return f.apply(undefined);})();
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-87gs.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-87gs.js
new file mode 100644
index 000000000..af76c9a8b
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-87gs.js
@@ -0,0 +1,15 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-87gs.js
+ * @description Strict - checking 'this' from a global scope (non-strict function declaration called by strict Function.prototype.apply(undefined))
+ * @noStrict
+ */
+
+function f() { return this===fnGlobalObject();};
+if (! ((function () {"use strict"; return f.apply(undefined);})())){
+ throw "'this' had incorrect value!";
+} \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-88-s.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-88-s.js
new file mode 100644
index 000000000..72c424567
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-88-s.js
@@ -0,0 +1,17 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-88-s.js
+ * @description Strict Mode - checking 'this' (non-strict function declaration called by strict Function.prototype.apply(someObject))
+ * @onlyStrict
+ */
+
+function testcase() {
+var o = {};
+function f() { return this===o;};
+return (function () {"use strict"; return f.apply(o);})();
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-88gs.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-88gs.js
new file mode 100644
index 000000000..8b85f6993
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-88gs.js
@@ -0,0 +1,16 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-88gs.js
+ * @description Strict - checking 'this' from a global scope (non-strict function declaration called by strict Function.prototype.apply(someObject))
+ * @onlyStrict
+ */
+
+var o = {};
+function f() { return this===o;};
+if (! ((function () {"use strict"; return f.apply(o);})())){
+ throw "'this' had incorrect value!";
+} \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-89-s.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-89-s.js
new file mode 100644
index 000000000..451851d5b
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-89-s.js
@@ -0,0 +1,16 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-89-s.js
+ * @description Strict Mode - checking 'this' (non-strict function declaration called by strict Function.prototype.apply(globalObject))
+ * @onlyStrict
+ */
+
+function testcase() {
+function f() { return this;};
+return (function () {"use strict"; return f.apply(fnGlobalObject()); })() === fnGlobalObject();
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-89gs.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-89gs.js
new file mode 100644
index 000000000..68f415a64
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-89gs.js
@@ -0,0 +1,15 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-89gs.js
+ * @description Strict - checking 'this' from a global scope (non-strict function declaration called by strict Function.prototype.apply(globalObject))
+ * @onlyStrict
+ */
+
+function f() { return this;};
+if ((function () {"use strict"; return f.apply(fnGlobalObject());})() !== fnGlobalObject()){
+ throw "'this' had incorrect value!";
+} \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-8gs.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-8gs.js
new file mode 100644
index 000000000..814fb7ec7
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-8gs.js
@@ -0,0 +1,18 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-8gs.js
+ * @description Strict - checking 'this' from a global scope (FunctionDeclaration includes strict directive prologue)
+ * @onlyStrict
+ */
+
+function f() {
+ "use strict";
+ return typeof this;
+}
+if (f() !== "undefined") {
+ throw "'this' had incorrect value!";
+}
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-9-s.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-9-s.js
new file mode 100644
index 000000000..38ca374e7
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-9-s.js
@@ -0,0 +1,19 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-9-s.js
+ * @description Strict Mode - checking 'this' (FunctionExpression defined within strict mode)
+ * @onlyStrict
+ */
+
+function testcase() {
+"use strict";
+var f = function () {
+ return typeof this;
+}
+return f() === "undefined";
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-90-s.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-90-s.js
new file mode 100644
index 000000000..0b6a4b3f1
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-90-s.js
@@ -0,0 +1,16 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-90-s.js
+ * @description Strict Mode - checking 'this' (non-strict function declaration called by strict Function.prototype.call())
+ * @noStrict
+ */
+
+function testcase() {
+function f() { return this===fnGlobalObject();};
+return (function () {"use strict"; return f.call(); })();
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-90gs.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-90gs.js
new file mode 100644
index 000000000..78a91247f
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-90gs.js
@@ -0,0 +1,15 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-90gs.js
+ * @description Strict - checking 'this' from a global scope (non-strict function declaration called by strict Function.prototype.call())
+ * @noStrict
+ */
+
+function f() { return this===fnGlobalObject();};
+if (! ((function () {"use strict"; return f.call();})())){
+ throw "'this' had incorrect value!";
+}
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-91-s.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-91-s.js
new file mode 100644
index 000000000..2dc4007e9
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-91-s.js
@@ -0,0 +1,16 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-91-s.js
+ * @description Strict Mode - checking 'this' (non-strict function declaration called by strict Function.prototype.call(null))
+ * @noStrict
+ */
+
+function testcase() {
+function f() { return this===fnGlobalObject();};
+return (function () {"use strict"; return f.call(null); })();
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-91gs.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-91gs.js
new file mode 100644
index 000000000..c1052a773
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-91gs.js
@@ -0,0 +1,15 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-91gs.js
+ * @description Strict - checking 'this' from a global scope (non-strict function declaration called by strict Function.prototype.call(null))
+ * @noStrict
+ */
+
+function f() { return this===fnGlobalObject();};
+if (! ((function () {"use strict"; return f.call(null); })())){
+ throw "'this' had incorrect value!";
+}
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-92-s.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-92-s.js
new file mode 100644
index 000000000..3a04a7b6f
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-92-s.js
@@ -0,0 +1,16 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-92-s.js
+ * @description Strict Mode - checking 'this' (non-strict function declaration called by strict Function.prototype.call(undefined))
+ * @noStrict
+ */
+
+function testcase() {
+function f() { return this===fnGlobalObject();};
+return (function () {"use strict"; return f.call(undefined);})();
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-92gs.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-92gs.js
new file mode 100644
index 000000000..4517302f3
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-92gs.js
@@ -0,0 +1,15 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-92gs.js
+ * @description Strict - checking 'this' from a global scope (non-strict function declaration called by strict Function.prototype.call(undefined))
+ * @noStrict
+ */
+
+function f() { return this===fnGlobalObject();};
+if (! ((function () {"use strict"; return f.call(undefined);})())){
+ throw "'this' had incorrect value!";
+}
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-93-s.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-93-s.js
new file mode 100644
index 000000000..e8da599e7
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-93-s.js
@@ -0,0 +1,17 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-93-s.js
+ * @description Strict Mode - checking 'this' (non-strict function declaration called by strict Function.prototype.call(someObject))
+ * @onlyStrict
+ */
+
+function testcase() {
+var o = {};
+function f() { return this===o;};
+return (function () {"use strict"; return f.call(o); })();
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-93gs.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-93gs.js
new file mode 100644
index 000000000..44bd495b4
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-93gs.js
@@ -0,0 +1,16 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-93gs.js
+ * @description Strict - checking 'this' from a global scope (non-strict function declaration called by strict Function.prototype.call(someObject))
+ * @onlyStrict
+ */
+
+var o = {};
+function f() { return this===o;};
+if (! ((function () {"use strict"; return f.call(o); })())){
+ throw "'this' had incorrect value!";
+}
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-94-s.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-94-s.js
new file mode 100644
index 000000000..655ac9e76
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-94-s.js
@@ -0,0 +1,16 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-94-s.js
+ * @description Strict Mode - checking 'this' (non-strict function declaration called by strict Function.prototype.call(globalObject))
+ * @onlyStrict
+ */
+
+function testcase() {
+function f() { return this===fnGlobalObject();};
+return (function () {"use strict"; return f.call(fnGlobalObject());})();
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-94gs.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-94gs.js
new file mode 100644
index 000000000..e752c688e
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-94gs.js
@@ -0,0 +1,15 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-94gs.js
+ * @description Strict - checking 'this' from a global scope (non-strict function declaration called by strict Function.prototype.call(globalObject))
+ * @onlyStrict
+ */
+
+function f() { return this===fnGlobalObject();};
+if (! ((function () {"use strict"; return f.call(fnGlobalObject());})())){
+ throw "'this' had incorrect value!";
+}
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-95-s.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-95-s.js
new file mode 100644
index 000000000..db48e89d9
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-95-s.js
@@ -0,0 +1,16 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-95-s.js
+ * @description Strict Mode - checking 'this' (non-strict function declaration called by strict Function.prototype.bind()())
+ * @noStrict
+ */
+
+function testcase() {
+function f() { return this===fnGlobalObject();};
+return (function () {"use strict"; return f.bind()(); })();
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-95gs.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-95gs.js
new file mode 100644
index 000000000..5d5fc09b8
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-95gs.js
@@ -0,0 +1,15 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-95gs.js
+ * @description Strict - checking 'this' from a global scope (non-strict function declaration called by strict Function.prototype.bind()())
+ * @noStrict
+ */
+
+function f() { return this===fnGlobalObject();};
+if (! ((function () {"use strict"; return f.bind()(); })())){
+ throw "'this' had incorrect value!";
+}
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-96-s.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-96-s.js
new file mode 100644
index 000000000..3c4e652c3
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-96-s.js
@@ -0,0 +1,16 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-96-s.js
+ * @description Strict Mode - checking 'this' (non-strict function declaration called by strict Function.prototype.bind(null)())
+ * @noStrict
+ */
+
+function testcase() {
+function f() { return this===fnGlobalObject();};
+return (function () {"use strict"; return f.bind(null)(); })();
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-96gs.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-96gs.js
new file mode 100644
index 000000000..cbfe417c4
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-96gs.js
@@ -0,0 +1,15 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-96gs.js
+ * @description Strict - checking 'this' from a global scope (non-strict function declaration called by strict Function.prototype.bind(null)())
+ * @noStrict
+ */
+
+function f() { return this===fnGlobalObject();};
+if (! ((function () {"use strict"; return f.bind(null)(); })())){
+ throw "'this' had incorrect value!";
+}
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-97-s.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-97-s.js
new file mode 100644
index 000000000..feac73bd6
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-97-s.js
@@ -0,0 +1,16 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-97-s.js
+ * @description Strict Mode - checking 'this' (non-strict function declaration called by strict Function.prototype.bind(undefined)())
+ * @noStrict
+ */
+
+function testcase() {
+function f() { return this===fnGlobalObject();};
+return (function () {"use strict"; return f.bind(undefined)();})();
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-97gs.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-97gs.js
new file mode 100644
index 000000000..1e79dd96e
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-97gs.js
@@ -0,0 +1,15 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-97gs.js
+ * @description Strict - checking 'this' from a global scope (non-strict function declaration called by strict Function.prototype.bind(undefined)())
+ * @noStrict
+ */
+
+function f() { return this===fnGlobalObject();};
+if (! ((function () {"use strict"; return f.bind(undefined)(); })())){
+ throw "'this' had incorrect value!";
+}
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-98-s.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-98-s.js
new file mode 100644
index 000000000..1c07cafc6
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-98-s.js
@@ -0,0 +1,17 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-98-s.js
+ * @description Strict Mode - checking 'this' (non-strict function declaration called by strict Function.prototype.bind(someObject)())
+ * @onlyStrict
+ */
+
+function testcase() {
+var o = {};
+function f() { return this===o;};
+return (function () {"use strict"; return f.bind(o)();})();
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-98gs.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-98gs.js
new file mode 100644
index 000000000..c72e9dcc6
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-98gs.js
@@ -0,0 +1,16 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-98gs.js
+ * @description Strict - checking 'this' from a global scope (non-strict function declaration called by strict Function.prototype.bind(someObject)())
+ * @onlyStrict
+ */
+
+var o = {};
+function f() { return this===o;};
+if (! ((function () {"use strict"; return f.bind(o)();})())){
+ throw "'this' had incorrect value!";
+}
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-99-s.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-99-s.js
new file mode 100644
index 000000000..47b1dac4d
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-99-s.js
@@ -0,0 +1,16 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-99-s.js
+ * @description Strict Mode - checking 'this' (non-strict function declaration called by strict Function.prototype.bind(globalObject)())
+ * @onlyStrict
+ */
+
+function testcase() {
+function f() { return this===fnGlobalObject();};
+return (function () {"use strict"; return f.bind(fnGlobalObject())();})();
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-99gs.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-99gs.js
new file mode 100644
index 000000000..5e9730d9f
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-99gs.js
@@ -0,0 +1,15 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-99gs.js
+ * @description Strict - checking 'this' from a global scope (non-strict function declaration called by strict Function.prototype.bind(globalObject)())
+ * @onlyStrict
+ */
+
+function f() { return this===fnGlobalObject();};
+if (! ((function () {"use strict"; return f.bind(fnGlobalObject())();})())){
+ throw "'this' had incorrect value!";
+}
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-9gs.js b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-9gs.js
new file mode 100644
index 000000000..56c150c89
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/10.4.3-1-9gs.js
@@ -0,0 +1,18 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.4/10.4.3/10.4.3-1-9gs.js
+ * @description Strict - checking 'this' from a global scope (FunctionExpression defined within strict mode)
+ * @onlyStrict
+ */
+
+"use strict";
+var f = function () {
+ return typeof this;
+}
+if (f() !== "undefined") {
+ throw "'this' had incorrect value!";
+} \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/S10.4.3_A1.js b/js/src/tests/test262/ch10/10.4/10.4.3/S10.4.3_A1.js
new file mode 100644
index 000000000..ea2432219
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/S10.4.3_A1.js
@@ -0,0 +1,16 @@
+// Copyright 2011 Google, Inc. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @path ch10/10.4/10.4.3/S10.4.3_A1.js
+ * @description When calling a strict anonymous function as a
+ * function, "this" should be bound to undefined.
+ * @onlyStrict
+ */
+
+"use strict";
+var that = (function() { return this; })();
+if (that !== undefined) {
+ $ERROR('#1: "this" leaked as: ' + that);
+}
+
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/browser.js b/js/src/tests/test262/ch10/10.4/10.4.3/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/browser.js
diff --git a/js/src/tests/test262/ch10/10.4/10.4.3/shell.js b/js/src/tests/test262/ch10/10.4/10.4.3/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/10.4.3/shell.js
diff --git a/js/src/tests/test262/ch10/10.4/S10.4A1.1_T2.js b/js/src/tests/test262/ch10/10.4/S10.4A1.1_T2.js
new file mode 100644
index 000000000..080aad06a
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/S10.4A1.1_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.
+
+/**
+ * Every function call enters a new execution context
+ *
+ * @path ch10/10.4/S10.4A1.1_T2.js
+ * @description Recursive function call
+ */
+
+var y;
+
+function f(a){
+ var x;
+
+ if (a === 1)
+ return x;
+ else {
+ if(x === undefined) {
+ x = 0;
+ } else {
+ x = 1;
+ }
+ return f(1);
+ }
+}
+
+y = f(0);
+
+if(!(y === undefined)){
+ $ERROR("#1: Recursive function calls shares execution context");
+}
+
diff --git a/js/src/tests/test262/ch10/10.4/S10.4_A1.1_T1.js b/js/src/tests/test262/ch10/10.4/S10.4_A1.1_T1.js
new file mode 100644
index 000000000..408d50770
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/S10.4_A1.1_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.
+
+/**
+ * Every function call enters a new execution context
+ *
+ * @path ch10/10.4/S10.4_A1.1_T1.js
+ * @description Sequence of function calls
+ */
+
+var y;
+
+function f(){
+ var x;
+
+ if(x === undefined) {
+ x = 0;
+ } else {
+ x = 1;
+ }
+
+ return x;
+}
+
+y = f();
+y = f();
+
+if(!(y === 0)){
+ $ERROR("#1: Sequenced function calls shares execution context");
+}
+
diff --git a/js/src/tests/test262/ch10/10.4/browser.js b/js/src/tests/test262/ch10/10.4/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/browser.js
diff --git a/js/src/tests/test262/ch10/10.4/shell.js b/js/src/tests/test262/ch10/10.4/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.4/shell.js
diff --git a/js/src/tests/test262/ch10/10.5/10.5-1-s.js b/js/src/tests/test262/ch10/10.5/10.5-1-s.js
new file mode 100644
index 000000000..fc841a5e4
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.5/10.5-1-s.js
@@ -0,0 +1,24 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.5/10.5-1-s.js
+ * @description Strict Mode - arguments object is immutable
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+ try {
+ (function fun() {
+ eval("arguments = 10");
+ })(30);
+ return false;
+ } catch (e) {
+ return (e instanceof SyntaxError);
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch10/10.5/10.5-1gs.js b/js/src/tests/test262/ch10/10.5/10.5-1gs.js
new file mode 100644
index 000000000..aafbeb333
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.5/10.5-1gs.js
@@ -0,0 +1,20 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+
+/**
+ * @path ch10/10.5/10.5-1gs.js
+ * @description Strict Mode - arguments cannot be assigned to in a strict function
+ * @onlyStrict
+ * @negative ^((?!NotEarlyError).)*$
+ */
+
+"use strict";
+throw NotEarlyError;
+
+function f_10_5_1_gs(){
+ arguments = 7;
+}
+
diff --git a/js/src/tests/test262/ch10/10.5/10.5-7-b-1-s.js b/js/src/tests/test262/ch10/10.5/10.5-7-b-1-s.js
new file mode 100644
index 000000000..e1855c7c6
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.5/10.5-7-b-1-s.js
@@ -0,0 +1,23 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.5/10.5-7-b-1-s.js
+ * @description Strict Mode - arguments object is immutable in eval'ed functions
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+
+ try {
+ eval("(function _10_5_7_b_1_fun() { arguments = 10;} ());");
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch10/10.5/10.5-7-b-2-s.js b/js/src/tests/test262/ch10/10.5/10.5-7-b-2-s.js
new file mode 100644
index 000000000..47820009e
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.5/10.5-7-b-2-s.js
@@ -0,0 +1,23 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.5/10.5-7-b-2-s.js
+ * @description Strict Mode - arguments object index assignment is allowed
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+
+ function _10_5_7_b_2_fun() {
+ arguments[7] = 12;
+ return arguments[7] === 12;
+ };
+
+ return _10_5_7_b_2_fun(30);
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch10/10.5/10.5-7-b-3-s.js b/js/src/tests/test262/ch10/10.5/10.5-7-b-3-s.js
new file mode 100644
index 000000000..4f4a66dcd
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.5/10.5-7-b-3-s.js
@@ -0,0 +1,23 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.5/10.5-7-b-3-s.js
+ * @description Strict Mode - Adding property to the arguments object successful under strict mode
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+
+ function _10_5_7_b_3_fun() {
+ arguments[1] = 12;
+ return arguments[0] = 30 && arguments[1] === 12;
+ };
+
+ return _10_5_7_b_3_fun(30);
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch10/10.5/10.5-7-b-4-s.js b/js/src/tests/test262/ch10/10.5/10.5-7-b-4-s.js
new file mode 100644
index 000000000..c695446b4
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.5/10.5-7-b-4-s.js
@@ -0,0 +1,24 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.5/10.5-7-b-4-s.js
+ * @description Strict Mode - Deleting property of the arguments object successful under strict mode
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+
+ function _10_5_7_b_4_fun() {
+ var _10_5_7_b_4_1 = arguments[0] === 30 && arguments[1] === 12;
+ delete arguments[1];
+ var _10_5_7_b_4_2 = arguments[0] === 30 && typeof arguments[1] === "undefined";
+ return _10_5_7_b_4_1 && _10_5_7_b_4_2;
+ };
+ return _10_5_7_b_4_fun(30, 12);
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch10/10.5/browser.js b/js/src/tests/test262/ch10/10.5/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.5/browser.js
diff --git a/js/src/tests/test262/ch10/10.5/shell.js b/js/src/tests/test262/ch10/10.5/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.5/shell.js
diff --git a/js/src/tests/test262/ch10/10.6/10.6-10-c-ii-1-s.js b/js/src/tests/test262/ch10/10.6/10.6-10-c-ii-1-s.js
new file mode 100644
index 000000000..dcc3c49f9
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.6/10.6-10-c-ii-1-s.js
@@ -0,0 +1,22 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.6/10.6-10-c-ii-1-s.js
+ * @description arguments[i] remains same after changing actual parameters in strict mode
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ function foo(a,b,c)
+ {
+ 'use strict';
+ a = 1; b = 'str'; c = 2.1;
+ return (arguments[0] === 10 && arguments[1] === 'sss' && arguments[2] === 1);
+ }
+ return foo(10, 'sss', 1);
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch10/10.6/10.6-10-c-ii-1.js b/js/src/tests/test262/ch10/10.6/10.6-10-c-ii-1.js
new file mode 100644
index 000000000..f0db64ee2
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.6/10.6-10-c-ii-1.js
@@ -0,0 +1,21 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.6/10.6-10-c-ii-1.js
+ * @description arguments[i] change with actual parameters
+ */
+
+
+function testcase() {
+ function foo(a,b,c)
+ {
+ a = 1; b = 'str'; c = 2.1;
+ if(arguments[0] === 1 && arguments[1] === 'str' && arguments[2] === 2.1)
+ return true;
+ }
+ return foo(10,'sss',1);
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch10/10.6/10.6-10-c-ii-2-s.js b/js/src/tests/test262/ch10/10.6/10.6-10-c-ii-2-s.js
new file mode 100644
index 000000000..58143f841
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.6/10.6-10-c-ii-2-s.js
@@ -0,0 +1,23 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.6/10.6-10-c-ii-2-s.js
+ * @description arguments[i] doesn't map to actual parameters in strict mode
+ * @onlyStrict
+ */
+
+
+function testcase() {
+
+ function foo(a,b,c)
+ {
+ 'use strict';
+ arguments[0] = 1; arguments[1] = 'str'; arguments[2] = 2.1;
+ return 10 === a && 'sss' === b && 1 === c;
+ }
+ return foo(10,'sss',1);
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch10/10.6/10.6-10-c-ii-2.js b/js/src/tests/test262/ch10/10.6/10.6-10-c-ii-2.js
new file mode 100644
index 000000000..5891dfe3b
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.6/10.6-10-c-ii-2.js
@@ -0,0 +1,22 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.6/10.6-10-c-ii-2.js
+ * @description arguments[i] map to actual parameter
+ */
+
+
+function testcase() {
+
+ function foo(a,b,c)
+ {
+ arguments[0] = 1; arguments[1] = 'str'; arguments[2] = 2.1;
+ if(1 === a && 'str' === b && 2.1 === c)
+ return true;
+ }
+ return foo(10,'sss',1);
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch10/10.6/10.6-11-b-1.js b/js/src/tests/test262/ch10/10.6/10.6-11-b-1.js
new file mode 100644
index 000000000..bcf937d63
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.6/10.6-11-b-1.js
@@ -0,0 +1,54 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.6/10.6-11-b-1.js
+ * @description Arguments Object has index property '0' as its own property, it shoulde be writable, enumerable, configurable and does not invoke the setter defined on Object.prototype[0] (Step 11.b)
+ */
+
+
+function testcase() {
+ try {
+ var data = "data";
+ var getFunc = function () {
+ return data;
+ };
+
+ var setFunc = function (value) {
+ data = value;
+ };
+
+ Object.defineProperty(Object.prototype, "0", {
+ get: getFunc,
+ set: setFunc,
+ configurable: true
+ });
+
+ var argObj = (function () { return arguments })(1);
+
+ var verifyValue = false;
+ verifyValue = (argObj[0] === 1);
+
+ var verifyEnumerable = false;
+ for (var p in argObj) {
+ if (p === "0" && argObj.hasOwnProperty("0")) {
+ verifyEnumerable = true;
+ }
+ }
+
+ var verifyWritable = false;
+ argObj[0] = 1001;
+ verifyWritable = (argObj[0] === 1001);
+
+ var verifyConfigurable = false;
+ delete argObj[0];
+ verifyConfigurable = argObj.hasOwnProperty("0");
+
+ return verifyValue && verifyWritable && verifyEnumerable && !verifyConfigurable && data === "data";
+ } finally {
+ delete Object.prototype[0];
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch10/10.6/10.6-12-1.js b/js/src/tests/test262/ch10/10.6/10.6-12-1.js
new file mode 100644
index 000000000..12746eb1e
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.6/10.6-12-1.js
@@ -0,0 +1,21 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.6/10.6-12-1.js
+ * @description Accessing callee property of Arguments object is allowed
+ */
+
+
+function testcase() {
+ try
+ {
+ arguments.callee;
+ return true;
+ }
+ catch (e) {
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch10/10.6/10.6-12-2.js b/js/src/tests/test262/ch10/10.6/10.6-12-2.js
new file mode 100644
index 000000000..11a1793f4
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.6/10.6-12-2.js
@@ -0,0 +1,22 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.6/10.6-12-2.js
+ * @description arguments.callee has correct attributes
+ */
+
+
+function testcase() {
+
+ var desc = Object.getOwnPropertyDescriptor(arguments,"callee");
+ if(desc.configurable === true &&
+ desc.enumerable === false &&
+ desc.writable === true &&
+ desc.hasOwnProperty('get') == false &&
+ desc.hasOwnProperty('put') == false)
+ return true;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch10/10.6/10.6-13-1.js b/js/src/tests/test262/ch10/10.6/10.6-13-1.js
new file mode 100644
index 000000000..d871a9ccb
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.6/10.6-13-1.js
@@ -0,0 +1,21 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.6/10.6-13-1.js
+ * @description Accessing caller property of Arguments object is allowed
+ */
+
+
+function testcase() {
+ try
+ {
+ arguments.caller;
+ return true;
+ }
+ catch (e) {
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch10/10.6/10.6-13-a-1.js b/js/src/tests/test262/ch10/10.6/10.6-13-a-1.js
new file mode 100644
index 000000000..a7b3f2ee6
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.6/10.6-13-a-1.js
@@ -0,0 +1,45 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.6/10.6-13-a-1.js
+ * @description In non-strict mode, arguments object should have its own 'callee' property defined (Step 13.a)
+ */
+
+
+function testcase() {
+ try {
+ Object.defineProperty(Object.prototype, "callee", {
+ value: 1,
+ writable: false,
+ configurable: true
+ });
+
+ var argObj = (function () { return arguments })();
+
+ var verifyValue = false;
+ verifyValue = typeof argObj.callee === "function";
+
+ var verifyWritable = false;
+ argObj.callee = 1001;
+ verifyWritable = (argObj.callee === 1001);
+
+ var verifyEnumerable = false;
+ for (var p in argObj) {
+ if (p === "callee" && argObj.hasOwnProperty("callee")) {
+ verifyEnumerable = true;
+ }
+ }
+
+ var verifyConfigurable = false;
+ delete argObj.callee;
+ verifyConfigurable = argObj.hasOwnProperty("callee");
+
+ return verifyValue && verifyWritable && !verifyEnumerable && !verifyConfigurable;
+ } finally {
+ delete Object.prototype.callee;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch10/10.6/10.6-13-a-2.js b/js/src/tests/test262/ch10/10.6/10.6-13-a-2.js
new file mode 100644
index 000000000..b68171258
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.6/10.6-13-a-2.js
@@ -0,0 +1,35 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.6/10.6-13-a-2.js
+ * @description A direct call to arguments.callee.caller should work
+ */
+
+
+function testcase() {
+ var called = false;
+
+ function test1(flag) {
+ if (flag!==true) {
+ test2();
+ } else {
+ called = true;
+ }
+ }
+
+ function test2() {
+ if(arguments.callee.caller===undefined) {
+ called=true; // Extension not supported - fake it
+ } else {
+ arguments.callee.caller(true);
+ }
+ }
+
+ test1();
+ return called;
+}
+
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.6/10.6-13-a-3.js b/js/src/tests/test262/ch10/10.6/10.6-13-a-3.js
new file mode 100644
index 000000000..ddd03a68c
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.6/10.6-13-a-3.js
@@ -0,0 +1,36 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.6/10.6-13-a-3.js
+ * @description An indirect call to arguments.callee.caller should work
+ */
+
+
+function testcase() {
+ var called = false;
+
+ function test1(flag) {
+ if (flag!==true) {
+ test2();
+ } else {
+ called = true;
+ }
+ }
+
+ function test2() {
+ if (arguments.callee.caller===undefined) {
+ called = true; //Extension not supported - fake it
+ } else {
+ var explicit = arguments.callee.caller;
+ explicit(true);
+ }
+ }
+
+ test1();
+ return called;
+}
+
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch10/10.6/10.6-13-b-1-s.js b/js/src/tests/test262/ch10/10.6/10.6-13-b-1-s.js
new file mode 100644
index 000000000..d44b475af
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.6/10.6-13-b-1-s.js
@@ -0,0 +1,24 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.6/10.6-13-b-1-s.js
+ * @description Accessing caller property of Arguments object throws TypeError in strict mode
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ 'use strict';
+ try
+ {
+ arguments.caller;
+ }
+ catch (e) {
+ if(e instanceof TypeError)
+ return true;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch10/10.6/10.6-13-b-2-s.js b/js/src/tests/test262/ch10/10.6/10.6-13-b-2-s.js
new file mode 100644
index 000000000..0f1b2b764
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.6/10.6-13-b-2-s.js
@@ -0,0 +1,19 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.6/10.6-13-b-2-s.js
+ * @description arguments.caller exists in strict mode
+ * @onlyStrict
+ */
+
+
+function testcase() {
+
+ 'use strict';
+ var desc = Object.getOwnPropertyDescriptor(arguments,"caller");
+ return desc!== undefined;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch10/10.6/10.6-13-b-3-s.js b/js/src/tests/test262/ch10/10.6/10.6-13-b-3-s.js
new file mode 100644
index 000000000..d85e084f1
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.6/10.6-13-b-3-s.js
@@ -0,0 +1,26 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.6/10.6-13-b-3-s.js
+ * @description arguments.caller is non-configurable in strict mode
+ * @onlyStrict
+ */
+
+
+function testcase() {
+
+ 'use strict';
+ var desc = Object.getOwnPropertyDescriptor(arguments,"caller");
+
+ return (desc.configurable === false &&
+ desc.enumerable === false &&
+ desc.hasOwnProperty('value') == false &&
+ desc.hasOwnProperty('writable') == false &&
+ desc.hasOwnProperty('get') == true &&
+ desc.hasOwnProperty('set') == true);
+
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch10/10.6/10.6-13-c-1-s.js b/js/src/tests/test262/ch10/10.6/10.6-13-c-1-s.js
new file mode 100644
index 000000000..f17a9b37b
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.6/10.6-13-c-1-s.js
@@ -0,0 +1,24 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.6/10.6-13-c-1-s.js
+ * @description Accessing callee property of Arguments object throws TypeError in strict mode
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ 'use strict';
+ try
+ {
+ arguments.callee;
+ return false;
+ }
+ catch (e) {
+ return (e instanceof TypeError);
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch10/10.6/10.6-13-c-2-s.js b/js/src/tests/test262/ch10/10.6/10.6-13-c-2-s.js
new file mode 100644
index 000000000..e08e77003
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.6/10.6-13-c-2-s.js
@@ -0,0 +1,19 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.6/10.6-13-c-2-s.js
+ * @description arguments.callee is exists in strict mode
+ * @onlyStrict
+ */
+
+
+function testcase() {
+
+ 'use strict';
+ var desc = Object.getOwnPropertyDescriptor(arguments,"callee");
+ return desc !== undefined;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch10/10.6/10.6-13-c-3-s.js b/js/src/tests/test262/ch10/10.6/10.6-13-c-3-s.js
new file mode 100644
index 000000000..8122932bd
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.6/10.6-13-c-3-s.js
@@ -0,0 +1,24 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.6/10.6-13-c-3-s.js
+ * @description arguments.callee is non-configurable in strict mode
+ * @onlyStrict
+ */
+
+
+function testcase() {
+
+ 'use strict';
+ var desc = Object.getOwnPropertyDescriptor(arguments,"callee");
+ return (desc.configurable === false &&
+ desc.enumerable === false &&
+ desc.hasOwnProperty('value') == false &&
+ desc.hasOwnProperty('writable') == false &&
+ desc.hasOwnProperty('get') == true &&
+ desc.hasOwnProperty('set') == true);
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch10/10.6/10.6-14-1-s.js b/js/src/tests/test262/ch10/10.6/10.6-14-1-s.js
new file mode 100644
index 000000000..aebc6fa1c
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.6/10.6-14-1-s.js
@@ -0,0 +1,20 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.6/10.6-14-1-s.js
+ * @description Strict Mode - 'callee' exists and 'caller' exists under strict mode
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+ var argObj = function () {
+ return arguments;
+ } ();
+ return argObj.hasOwnProperty("callee") && argObj.hasOwnProperty("caller");
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch10/10.6/10.6-14-b-1-s.js b/js/src/tests/test262/ch10/10.6/10.6-14-b-1-s.js
new file mode 100644
index 000000000..51cbfff4d
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.6/10.6-14-b-1-s.js
@@ -0,0 +1,28 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.6/10.6-14-b-1-s.js
+ * @description Strict Mode - [[Enumerable]] attribute value in 'caller' is false under strict mode
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+
+ var argObj = function () {
+ return arguments;
+ } ();
+
+ var verifyEnumerable = false;
+ for (var _10_6_14_b_1 in argObj) {
+ if (argObj.hasOwnProperty(_10_6_14_b_1) && _10_6_14_b_1 === "caller") {
+ verifyEnumerable = true;
+ }
+ }
+ return !verifyEnumerable && argObj.hasOwnProperty("caller");
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch10/10.6/10.6-14-b-4-s.js b/js/src/tests/test262/ch10/10.6/10.6-14-b-4-s.js
new file mode 100644
index 000000000..748c630a9
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.6/10.6-14-b-4-s.js
@@ -0,0 +1,27 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.6/10.6-14-b-4-s.js
+ * @description Strict Mode - TypeError is thrown when accessing the [[Set]] attribute in 'caller' under strict mode
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+
+ var argObj = function () {
+ return arguments;
+ } ();
+
+ try {
+ argObj.caller = {};
+ return false;
+ } catch (e) {
+ return e instanceof TypeError;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch10/10.6/10.6-14-c-1-s.js b/js/src/tests/test262/ch10/10.6/10.6-14-c-1-s.js
new file mode 100644
index 000000000..cade0a537
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.6/10.6-14-c-1-s.js
@@ -0,0 +1,28 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.6/10.6-14-c-1-s.js
+ * @description Strict Mode - [[Enumerable]] attribute value in 'callee' is false under strict mode
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+
+ var argObj = function () {
+ return arguments;
+ } ();
+
+ var verifyEnumerable = false;
+ for (var _10_6_14_c_1 in argObj) {
+ if (argObj.hasOwnProperty(_10_6_14_c_1) && _10_6_14_c_1 === "callee") {
+ verifyEnumerable = true;
+ }
+ }
+ return !verifyEnumerable && argObj.hasOwnProperty("callee");
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch10/10.6/10.6-14-c-4-s.js b/js/src/tests/test262/ch10/10.6/10.6-14-c-4-s.js
new file mode 100644
index 000000000..1238570c4
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.6/10.6-14-c-4-s.js
@@ -0,0 +1,27 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.6/10.6-14-c-4-s.js
+ * @description Strict Mode - TypeError is thrown when accessing the [[Set]] attribute in 'callee' under strict mode
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+
+ var argObj = function () {
+ return arguments;
+ } ();
+
+ try {
+ argObj.callee = {};
+ return false;
+ } catch (e) {
+ return e instanceof TypeError;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch10/10.6/10.6-1gs.js b/js/src/tests/test262/ch10/10.6/10.6-1gs.js
new file mode 100644
index 000000000..f77fd3c57
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.6/10.6-1gs.js
@@ -0,0 +1,17 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+
+/**
+ * @path ch10/10.6/10.6-1gs.js
+ * @description Strict Mode - arguments.callee cannot be accessed in a strict function, but does not throw an early error
+ * @onlyStrict
+ */
+
+"use strict";
+function f_10_6_1_gs(){
+ return arguments.callee;
+}
+
diff --git a/js/src/tests/test262/ch10/10.6/10.6-2gs.js b/js/src/tests/test262/ch10/10.6/10.6-2gs.js
new file mode 100644
index 000000000..e13cc02f5
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.6/10.6-2gs.js
@@ -0,0 +1,19 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+
+/**
+ * @path ch10/10.6/10.6-2gs.js
+ * @description Strict Mode - arguments.callee cannot be accessed in a strict function
+ * @onlyStrict
+ * @negative .
+ */
+
+"use strict";
+function f_10_6_1_gs(){
+ return arguments.callee;
+}
+f_10_6_1_gs();
+
diff --git a/js/src/tests/test262/ch10/10.6/10.6-5-1.js b/js/src/tests/test262/ch10/10.6/10.6-5-1.js
new file mode 100644
index 000000000..f058239fe
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.6/10.6-5-1.js
@@ -0,0 +1,16 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.6/10.6-5-1.js
+ * @description [[Prototype]] property of Arguments is set to Object prototype object
+ */
+
+
+function testcase() {
+ if(Object.getPrototypeOf(arguments) === Object.getPrototypeOf({}))
+ return true;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch10/10.6/10.6-6-1.js b/js/src/tests/test262/ch10/10.6/10.6-6-1.js
new file mode 100644
index 000000000..d0ec15e27
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.6/10.6-6-1.js
@@ -0,0 +1,17 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.6/10.6-6-1.js
+ * @description 'length property of arguments object exists
+ */
+
+
+function testcase() {
+
+ var desc = Object.getOwnPropertyDescriptor(arguments,"length");
+ return desc !== undefined
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch10/10.6/10.6-6-2.js b/js/src/tests/test262/ch10/10.6/10.6-6-2.js
new file mode 100644
index 000000000..afad35fd0
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.6/10.6-6-2.js
@@ -0,0 +1,20 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.6/10.6-6-2.js
+ * @description 'length' property of arguments object has correct attributes
+ */
+
+
+function testcase() {
+
+ var desc = Object.getOwnPropertyDescriptor(arguments,"length");
+ if(desc.configurable === true &&
+ desc.enumerable === false &&
+ desc.writable === true )
+ return true;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch10/10.6/10.6-6-3.js b/js/src/tests/test262/ch10/10.6/10.6-6-3.js
new file mode 100644
index 000000000..e7838e8a4
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.6/10.6-6-3.js
@@ -0,0 +1,16 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.6/10.6-6-3.js
+ * @description 'length' property of arguments object for 0 argument function exists
+ */
+
+
+function testcase() {
+ var arguments= undefined;
+ return (function () {return arguments.length !== undefined})();
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch10/10.6/10.6-6-4.js b/js/src/tests/test262/ch10/10.6/10.6-6-4.js
new file mode 100644
index 000000000..6a3a77b23
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.6/10.6-6-4.js
@@ -0,0 +1,16 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.6/10.6-6-4.js
+ * @description 'length' property of arguments object for 0 argument function call is 0 even with formal parameters
+ */
+
+
+function testcase() {
+ var arguments= undefined;
+ return (function (a,b,c) {return arguments.length === 0})();
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch10/10.6/10.6-7-1.js b/js/src/tests/test262/ch10/10.6/10.6-7-1.js
new file mode 100644
index 000000000..30fd4f373
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.6/10.6-7-1.js
@@ -0,0 +1,53 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch10/10.6/10.6-7-1.js
+ * @description Arguments Object has length as its own property and does not invoke the setter defined on Object.prototype.length (Step 7)
+ */
+
+
+function testcase() {
+ try {
+ var data = "data";
+ var getFunc = function () {
+ return 12;
+ };
+
+ var setFunc = function (value) {
+ data = value;
+ };
+
+ Object.defineProperty(Object.prototype, "length", {
+ get: getFunc,
+ set: setFunc,
+ configurable: true
+ });
+
+ var verifyValue = false;
+ var argObj = (function () { return arguments })();
+ verifyValue = (argObj.length === 0);
+
+ var verifyWritable = false;
+ argObj.length = 1001;
+ verifyWritable = (argObj.length === 1001);
+
+ var verifyEnumerable = false;
+ for (var p in argObj) {
+ if (p === "length") {
+ verifyEnumerable = true;
+ }
+ }
+
+ var verifyConfigurable = false;
+ delete argObj.length;
+ verifyConfigurable = argObj.hasOwnProperty("length");
+
+ return verifyValue && verifyWritable && !verifyEnumerable && !verifyConfigurable && data === "data";
+ } finally {
+ delete Object.prototype.length;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch10/10.6/S10.6_A1.js b/js/src/tests/test262/ch10/10.6/S10.6_A1.js
new file mode 100644
index 000000000..89df9c4dd
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.6/S10.6_A1.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.
+
+/**
+ * When control enters an execution context for function code,
+ * an arguments object is created and initialised
+ *
+ * @path ch10/10.6/S10.6_A1.js
+ * @description Executing function which uses arguments object
+ */
+
+//CHECK#1
+function f1(){
+ return arguments;
+}
+
+try{
+ var x = f1();
+}
+catch(e){
+ $ERROR("#1: arguments doesn't exists");
+}
+
+//CHECK#2
+var f2 = function(){
+ return arguments;
+}
+
+try{
+ var x = f2();
+}
+catch(e){
+ $ERROR("#2: arguments doesn't exists");
+}
+
diff --git a/js/src/tests/test262/ch10/10.6/S10.6_A2.js b/js/src/tests/test262/ch10/10.6/S10.6_A2.js
new file mode 100644
index 000000000..18698be00
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.6/S10.6_A2.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.
+
+/**
+ * The value of the internal [[Prototype]] property of the
+ * created arguments object is the original Object prototype object, the one
+ * that is the initial value of Object.prototype
+ *
+ * @path ch10/10.6/S10.6_A2.js
+ * @description Checking arguments.constructor.prototype===Object.prototype
+ */
+
+//CHECK#1
+function f1(){
+ return arguments.constructor.prototype;
+}
+try{
+ if(f1() !== Object.prototype){
+ $ERROR('#1: arguments.constructor.prototype === Object.prototype');
+ }
+}
+catch(e){
+ $ERROR("#1: arguments doesn't exists");
+}
+
+//CHECK#2
+var f2 = function(){return arguments.constructor.prototype;};
+try{
+ if(f2() !== Object.prototype){
+ $ERROR('#2: arguments.constructor.prototype === Object.prototype');
+ }
+}
+catch(e){
+ $ERROR("#2: arguments doesn't exists");
+}
+
diff --git a/js/src/tests/test262/ch10/10.6/S10.6_A3_T1.js b/js/src/tests/test262/ch10/10.6/S10.6_A3_T1.js
new file mode 100644
index 000000000..234d6ad1a
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.6/S10.6_A3_T1.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.
+
+/**
+ * A property is created with name callee with property
+ * attributes { DontEnum } and no others
+ *
+ * @path ch10/10.6/S10.6_A3_T1.js
+ * @description Checking existence of arguments.callee property
+ */
+
+//CHECK#1
+function f1(){
+ return arguments.hasOwnProperty("callee");
+}
+try{
+ if(f1() !== true){
+ $ERROR("#1: arguments object doesn't contains property 'callee'");
+ }
+}
+catch(e){
+ $ERROR("#1: arguments object doesn't exists");
+}
+
+//CHECK#2
+var f2 = function(){return arguments.hasOwnProperty("callee");};
+try{
+ if(f2() !== true){
+ $ERROR("#2: arguments object doesn't contains property 'callee'");
+ }
+}
+catch(e){
+ $ERROR("#2: arguments object doesn't exists");
+}
+
diff --git a/js/src/tests/test262/ch10/10.6/S10.6_A3_T2.js b/js/src/tests/test262/ch10/10.6/S10.6_A3_T2.js
new file mode 100644
index 000000000..327e5cf36
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.6/S10.6_A3_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.
+
+/**
+ * A property is created with name callee with property
+ * attributes { DontEnum } and no others
+ *
+ * @path ch10/10.6/S10.6_A3_T2.js
+ * @description Checking if enumerating the arguments.callee property fails
+ */
+
+//CHECK#1
+function f1(){
+ for(var x in arguments){
+ if (x === "callee"){
+ return false;
+ }
+ }
+ return true;
+}
+
+try{
+ if(!f1()){
+ $ERROR("#1: A property callee don't have attribute { DontEnum }");
+ }
+}
+catch(e){
+ $ERROR("#1: arguments object don't exists");
+}
+
+//CHECK#2
+var f2 = function(){
+ for(var x in arguments){
+ if (x === "callee"){
+ return false;
+ }
+ }
+ return true;
+}
+
+try{
+ if(!f2()){
+ $ERROR("#2: A property callee don't have attribute { DontEnum }");
+ }
+}
+catch(e){
+ $ERROR("#2: arguments object don't exists");
+}
+
diff --git a/js/src/tests/test262/ch10/10.6/S10.6_A3_T3.js b/js/src/tests/test262/ch10/10.6/S10.6_A3_T3.js
new file mode 100644
index 000000000..4b2626570
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.6/S10.6_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.
+
+/**
+ * A property is created with name callee with property
+ * attributes { DontEnum } and no others
+ *
+ * @path ch10/10.6/S10.6_A3_T3.js
+ * @description Checking if deleting arguments.callee property fails
+ * @noStrict
+ */
+
+//CHECK#1
+function f1(){
+ return (delete arguments.callee);
+}
+
+try{
+ if(!f1()){
+ $ERROR("#1: A property callee have attribute { DontDelete }");
+ }
+}
+catch(e){
+ $ERROR("#1: arguments object don't exists");
+}
+
+//CHECK#2
+var f2 = function(){
+ return (delete arguments.callee);
+}
+
+try{
+ if(!f2()){
+ $ERROR("#2: A property callee have attribute { DontDelete }");
+ }
+}
+catch(e){
+ $ERROR("#2: arguments object don't exists");
+}
+
diff --git a/js/src/tests/test262/ch10/10.6/S10.6_A3_T4.js b/js/src/tests/test262/ch10/10.6/S10.6_A3_T4.js
new file mode 100644
index 000000000..c83983507
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.6/S10.6_A3_T4.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.
+
+/**
+ * A property is created with name callee with property
+ * attributes { DontEnum } and no others
+ *
+ * @path ch10/10.6/S10.6_A3_T4.js
+ * @description Overriding arguments.callee property
+ * @noStrict
+ */
+
+var str = "something different";
+//CHECK#1
+function f1(){
+ arguments.callee = str;
+ return arguments;
+}
+
+try{
+ if(f1().callee !== str){
+ $ERROR("#1: A property callee have attribute { ReadOnly }");
+ }
+}
+catch(e){
+ $ERROR("#1: arguments object don't exists");
+}
+
+//CHECK#2
+var f2 = function(){
+ arguments.callee = str;
+ return arguments;
+ }
+try{
+ if(f2().callee !== str){
+ $ERROR("#2: A property callee have attribute { ReadOnly }");
+ }
+}
+catch(e){
+ $ERROR("#2: arguments object don't exists");
+}
+
diff --git a/js/src/tests/test262/ch10/10.6/S10.6_A4.js b/js/src/tests/test262/ch10/10.6/S10.6_A4.js
new file mode 100644
index 000000000..b49902a45
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.6/S10.6_A4.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.
+
+/**
+ * The initial value of the created property callee is the
+ * Function object being executed
+ *
+ * @path ch10/10.6/S10.6_A4.js
+ * @description Checking that arguments.callee === function object
+ * @noStrict
+ */
+
+//CHECK#1
+function f1(){
+ return arguments.callee;
+}
+
+try{
+ if(f1 !== f1()){
+ $ERROR('#1: arguments.callee === f1');
+ }
+}
+catch(e){
+ $ERROR("#1: arguments object doesn't exists");
+}
+
+//CHECK#2
+var f2 = function(){return arguments.callee;};
+
+try{
+ if(f2 !== f2()){
+ $ERROR('#2: arguments.callee === f2');
+ }
+}
+catch(e){
+ $ERROR("#1: arguments object doesn't exists");
+}
+
diff --git a/js/src/tests/test262/ch10/10.6/S10.6_A5_T1.js b/js/src/tests/test262/ch10/10.6/S10.6_A5_T1.js
new file mode 100644
index 000000000..a76e58d47
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.6/S10.6_A5_T1.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.
+
+/**
+ * A property is created with name length with property
+ * attributes { DontEnum } and no others
+ *
+ * @path ch10/10.6/S10.6_A5_T1.js
+ * @description Checking existence of arguments.length property
+ */
+
+//CHECK#1
+function f1(){
+ return arguments.hasOwnProperty("length");
+}
+try{
+ if(f1() !== true){
+ $ERROR("#1: arguments object doesn't contains property 'length'");
+ }
+}
+catch(e){
+ $ERROR("#1: arguments object doesn't exists");
+}
+
+//CHECK#2
+var f2 = function(){return arguments.hasOwnProperty("length");};
+try{
+ if(f2() !== true){
+ $ERROR("#2: arguments object doesn't contains property 'length'");
+ }
+}
+catch(e){
+ $ERROR("#2: arguments object doesn't exists");
+}
+
diff --git a/js/src/tests/test262/ch10/10.6/S10.6_A5_T2.js b/js/src/tests/test262/ch10/10.6/S10.6_A5_T2.js
new file mode 100644
index 000000000..a0f4df7a9
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.6/S10.6_A5_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.
+
+/**
+ * A property is created with name length with property
+ * attributes { DontEnum } and no others
+ *
+ * @path ch10/10.6/S10.6_A5_T2.js
+ * @description Checking if enumerating the arguments.length property fails
+ */
+
+//CHECK#1
+function f1(){
+ for(var x in arguments){
+ if (x === "length"){
+ return false;
+ }
+ }
+ return true;
+}
+
+try{
+ if(!f1()){
+ $ERROR("#1: A property length don't have attribute { DontEnum }");
+ }
+}
+catch(e){
+ $ERROR("#1: arguments object don't exists");
+}
+
+//CHECK#2
+var f2 = function(){
+ for(var x in arguments){
+ if (x === "length"){
+ return false;
+ }
+ }
+ return true;
+}
+
+try{
+ if(!f2()){
+ $ERROR("#2: A property length don't have attribute { DontEnum }");
+ }
+}
+catch(e){
+ $ERROR("#2: arguments object don't exists");
+}
+
diff --git a/js/src/tests/test262/ch10/10.6/S10.6_A5_T3.js b/js/src/tests/test262/ch10/10.6/S10.6_A5_T3.js
new file mode 100644
index 000000000..c8187fac8
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.6/S10.6_A5_T3.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.
+
+/**
+ * A property is created with name length with property
+ * attributes { DontEnum } and no others
+ *
+ * @path ch10/10.6/S10.6_A5_T3.js
+ * @description Checking if deleting arguments.length property fails
+ */
+
+//CHECK#1
+function f1(){
+ return (delete arguments.length);
+}
+
+try{
+ if(!f1()){
+ $ERROR("#1: A property length have attribute { DontDelete }");
+ }
+}
+catch(e){
+ $ERROR("#1: arguments object don't exists");
+}
+
+//CHECK#2
+var f2 = function(){
+ return (delete arguments.length);
+}
+
+try{
+ if(!f2()){
+ $ERROR("#2: A property length have attribute { DontDelete }");
+ }
+}
+catch(e){
+ $ERROR("#2: arguments object don't exists");
+}
+
diff --git a/js/src/tests/test262/ch10/10.6/S10.6_A5_T4.js b/js/src/tests/test262/ch10/10.6/S10.6_A5_T4.js
new file mode 100644
index 000000000..7178bf424
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.6/S10.6_A5_T4.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.
+
+/**
+ * A property is created with name length with property
+ * attributes { DontEnum } and no others
+ *
+ * @path ch10/10.6/S10.6_A5_T4.js
+ * @description Overriding arguments.length property
+ */
+
+var str = "something different";
+//CHECK#1
+function f1(){
+ arguments.length = str;
+ return arguments;
+}
+
+try{
+ if(f1().length !== str){
+ $ERROR("#1: A property length have attribute { ReadOnly }");
+ }
+}
+catch(e){
+ $ERROR("#1: arguments object don't exists");
+}
+
+//CHECK#2
+var f2 = function(){
+ arguments.length = str;
+ return arguments;
+ };
+try{
+ if(f2().length !== str){
+ $ERROR("#2: A property length have attribute { ReadOnly }");
+ }
+}
+catch(e){
+ $ERROR("#2: arguments object don't exists");
+}
+
diff --git a/js/src/tests/test262/ch10/10.6/S10.6_A6.js b/js/src/tests/test262/ch10/10.6/S10.6_A6.js
new file mode 100644
index 000000000..3f1d0d1c1
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.6/S10.6_A6.js
@@ -0,0 +1,67 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * The initial value of the created property length is the number
+ * of actual parameter values supplied by the caller
+ *
+ * @path ch10/10.6/S10.6_A6.js
+ * @description Create function, that returned arguments.length
+ */
+
+function f1(){
+ return arguments.length;
+}
+
+//CHECK#1
+if(!(f1() === 0)){
+ $ERROR('#1: argument.length === 0');
+}
+
+//CHECK#2
+if(!(f1(0) === 1)){
+ $ERROR('#2: argument.length === 1');
+}
+
+//CHECK#3
+if(!(f1(0, 1) === 2)){
+ $ERROR('#3: argument.length === 2');
+}
+
+//CHECK#4
+if(!(f1(0, 1, 2) === 3)){
+ $ERROR('#4: argument.length === 3');
+}
+
+//CHECK#5
+if(!(f1(0, 1, 2, 3) === 4)){
+ $ERROR('#5: argument.length === 4');
+}
+
+var f2 = function(){return arguments.length;};
+
+//CHECK#6
+if(!(f2() === 0)){
+ $ERROR('#6: argument.length === 0');
+}
+
+//CHECK#7
+if(!(f2(0) === 1)){
+ $ERROR('#7: argument.length === 1');
+}
+
+//CHECK#8
+if(!(f2(0, 1) === 2)){
+ $ERROR('#8: argument.length === 2');
+}
+
+//CHECK#9
+if(!(f2(0, 1, 2) === 3)){
+ $ERROR('#9: argument.length === 3');
+}
+
+//CHECK#10
+if(!(f2(0, 1, 2, 3) === 4)){
+ $ERROR('#10: argument.length === 4');
+}
+
diff --git a/js/src/tests/test262/ch10/10.6/S10.6_A7.js b/js/src/tests/test262/ch10/10.6/S10.6_A7.js
new file mode 100644
index 000000000..f013ba013
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.6/S10.6_A7.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.
+
+/**
+ * Get arguments of function
+ *
+ * @path ch10/10.6/S10.6_A7.js
+ * @description Use property arguments
+ */
+
+function f1() {
+ return arguments;
+}
+
+//CHECK#1-5
+for(var i = 1; i < 5; i++){
+if (f1(1,2,3,4,5)[i] !== (i+1))
+ $ERROR("#"+i+": Returning function's arguments work wrong, f1(1,2,3,4,5)["+i+"] !== "+(i+1));
+}
+
diff --git a/js/src/tests/test262/ch10/10.6/browser.js b/js/src/tests/test262/ch10/10.6/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.6/browser.js
diff --git a/js/src/tests/test262/ch10/10.6/shell.js b/js/src/tests/test262/ch10/10.6/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch10/10.6/shell.js
diff --git a/js/src/tests/test262/ch10/browser.js b/js/src/tests/test262/ch10/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch10/browser.js
diff --git a/js/src/tests/test262/ch10/shell.js b/js/src/tests/test262/ch10/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch10/shell.js
diff --git a/js/src/tests/test262/ch11/11.1/11.1.1/11.1.1-1gs.js b/js/src/tests/test262/ch11/11.1/11.1.1/11.1.1-1gs.js
new file mode 100644
index 000000000..0f2b30b5d
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.1/11.1.1/11.1.1-1gs.js
@@ -0,0 +1,16 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+
+/**
+ * @path ch11/11.1/11.1.1/11.1.1-1gs.js
+ * @description Strict Mode - 'this' object at the global scope is not undefined
+ * @onlyStrict
+ */
+
+"use strict";
+if (this===undefined) {
+ throw NotEarlyError;
+}
diff --git a/js/src/tests/test262/ch11/11.1/11.1.1/S11.1.1_A1.js b/js/src/tests/test262/ch11/11.1/11.1.1/S11.1.1_A1.js
new file mode 100644
index 000000000..c68c32736
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.1/11.1.1/S11.1.1_A1.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.
+
+/**
+ * The "this" is reserved word
+ *
+ * @path ch11/11.1/11.1.1/S11.1.1_A1.js
+ * @description Checking if execution of "this=1" fails
+ * @negative
+ */
+
+this = 1;
+
diff --git a/js/src/tests/test262/ch11/11.1/11.1.1/S11.1.1_A3.1.js b/js/src/tests/test262/ch11/11.1/11.1.1/S11.1.1_A3.1.js
new file mode 100644
index 000000000..4094fa914
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.1/11.1.1/S11.1.1_A3.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.
+
+/**
+ * Being in function code, "this" and eval("this"), called as a functions, return the global object
+ *
+ * @path ch11/11.1/11.1.1/S11.1.1_A3.1.js
+ * @description Creating function which returns "this" or eval("this")
+ * @noStrict
+ */
+
+//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/js/src/tests/test262/ch11/11.1/11.1.1/S11.1.1_A3.2.js b/js/src/tests/test262/ch11/11.1/11.1.1/S11.1.1_A3.2.js
new file mode 100644
index 000000000..ca0d5e699
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.1/11.1.1/S11.1.1_A3.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.
+
+/**
+ * Being in function code, "this" and eval("this"), called as a constructors, return the object
+ *
+ * @path ch11/11.1/11.1.1/S11.1.1_A3.2.js
+ * @description Create function. It have property, that returned "this"
+ * @noStrict
+ */
+
+//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/js/src/tests/test262/ch11/11.1/11.1.1/S11.1.1_A4.1.js b/js/src/tests/test262/ch11/11.1/11.1.1/S11.1.1_A4.1.js
new file mode 100644
index 000000000..38e2adbbd
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.1/11.1.1/S11.1.1_A4.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.
+
+/**
+ * Being in anonymous code, "this" and eval("this"), called as a function, return the global object
+ *
+ * @path ch11/11.1/11.1.1/S11.1.1_A4.1.js
+ * @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
+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/js/src/tests/test262/ch11/11.1/11.1.1/S11.1.1_A4.2.js b/js/src/tests/test262/ch11/11.1/11.1.1/S11.1.1_A4.2.js
new file mode 100644
index 000000000..cd37d6824
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.1/11.1.1/S11.1.1_A4.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.
+
+/**
+ * Being in anonymous code, "this" and eval("this"), called as a constructor, return the object
+ *
+ * @path ch11/11.1/11.1.1/S11.1.1_A4.2.js
+ * @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
+MyFunction = new Function("this.THIS = eval(\'this\')");
+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/js/src/tests/test262/ch11/11.1/11.1.1/browser.js b/js/src/tests/test262/ch11/11.1/11.1.1/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.1/11.1.1/browser.js
diff --git a/js/src/tests/test262/ch11/11.1/11.1.1/shell.js b/js/src/tests/test262/ch11/11.1/11.1.1/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.1/11.1.1/shell.js
diff --git a/js/src/tests/test262/ch11/11.1/11.1.2/S11.1.2_A1_T1.js b/js/src/tests/test262/ch11/11.1/11.1.2/S11.1.2_A1_T1.js
new file mode 100644
index 000000000..46955d3ca
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.1/11.1.2/S11.1.2_A1_T1.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.
+
+/**
+ * The result of evaluating an Identifier is always a value of type Reference
+ *
+ * @path ch11/11.1/11.1.2/S11.1.2_A1_T1.js
+ * @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/js/src/tests/test262/ch11/11.1/11.1.2/S11.1.2_A1_T2.js b/js/src/tests/test262/ch11/11.1/11.1.2/S11.1.2_A1_T2.js
new file mode 100644
index 000000000..df170468d
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.1/11.1.2/S11.1.2_A1_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.
+
+/**
+ * The result of evaluating an Identifier is always a value of type Reference
+ *
+ * @path ch11/11.1/11.1.2/S11.1.2_A1_T2.js
+ * @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/js/src/tests/test262/ch11/11.1/11.1.2/browser.js b/js/src/tests/test262/ch11/11.1/11.1.2/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.1/11.1.2/browser.js
diff --git a/js/src/tests/test262/ch11/11.1/11.1.2/shell.js b/js/src/tests/test262/ch11/11.1/11.1.2/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.1/11.1.2/shell.js
diff --git a/js/src/tests/test262/ch11/11.1/11.1.4/11.1.4-0.js b/js/src/tests/test262/ch11/11.1/11.1.4/11.1.4-0.js
new file mode 100644
index 000000000..60d4b1d8c
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.1/11.1.4/11.1.4-0.js
@@ -0,0 +1,18 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch11/11.1/11.1.4/11.1.4-0.js
+ * @description elements elided at the end of an array do not contribute to its length
+ */
+
+
+function testcase() {
+ var a = [,];
+ if (a.length === 1) {
+ return true;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch11/11.1/11.1.4/11.1.4_4-5-1.js b/js/src/tests/test262/ch11/11.1/11.1.4/11.1.4_4-5-1.js
new file mode 100644
index 000000000..15de1077b
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.1/11.1.4/11.1.4_4-5-1.js
@@ -0,0 +1,32 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * Refer 11.1.4;
+ * The production
+ * ElementList : Elisionopt AssignmentExpression
+ * 5.Call the [[DefineOwnProperty]] internal method of array with arguments ToString(firstIndex), the Property Descriptor { [[Value]]: initValue, [[Writable]]: true
+ * , [[Enumerable]]: true, [[Configurable]]: true}, and false.
+ *
+ * @path ch11/11.1/11.1.4/11.1.4_4-5-1.js
+ * @description Initialize array using ElementList (Elisionopt AssignmentExpression) when index property (read-only) exists in Array.prototype (step 5)
+ */
+
+
+function testcase() {
+ try {
+ Object.defineProperty(Array.prototype, "0", {
+ value: 100,
+ writable: false,
+ configurable: true
+ });
+ var arr = [101];
+
+ return arr.hasOwnProperty("0") && arr[0] === 101;
+ } finally {
+ delete Array.prototype[0];
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch11/11.1/11.1.4/11.1.4_5-6-1.js b/js/src/tests/test262/ch11/11.1/11.1.4/11.1.4_5-6-1.js
new file mode 100644
index 000000000..14e02a1b7
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.1/11.1.4/11.1.4_5-6-1.js
@@ -0,0 +1,32 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * Refer 11.1.4;
+ * The production
+ * ElementList : ElementList , Elisionopt AssignmentExpression
+ * 6.Call the [[DefineOwnProperty]] internal method of array with arguments ToString(ToUint32((pad+len)) and the Property Descriptor { [[Value]]: initValue
+ * , [[Writable]]: true, [[Enumerable]]: true, [[Configurable]]: true}, and false.
+ *
+ * @path ch11/11.1/11.1.4/11.1.4_5-6-1.js
+ * @description Initialize array using ElementList (ElementList , Elisionopt AssignmentExpression) when index property (read-only) exists in Array.prototype (step 6)
+ */
+
+
+function testcase() {
+ try {
+ Object.defineProperty(Array.prototype, "1", {
+ value: 100,
+ writable: false,
+ configurable: true
+ });
+ var arr = [101, 12];
+
+ return arr.hasOwnProperty("1") && arr[1] === 12;
+ } finally {
+ delete Array.prototype[1];
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch11/11.1/11.1.4/S11.1.4_A1.1.js b/js/src/tests/test262/ch11/11.1/11.1.4/S11.1.4_A1.1.js
new file mode 100644
index 000000000..6e202534b
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.1/11.1.4/S11.1.4_A1.1.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.
+
+/**
+ * Evaluate the production ArrayLiteral: [ ]
+ *
+ * @path ch11/11.1/11.1.4/S11.1.4_A1.1.js
+ * @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/js/src/tests/test262/ch11/11.1/11.1.4/S11.1.4_A1.2.js b/js/src/tests/test262/ch11/11.1/11.1.4/S11.1.4_A1.2.js
new file mode 100644
index 000000000..e1b0ff3ee
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.1/11.1.4/S11.1.4_A1.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.
+
+/**
+ * Evaluate the production ArrayLiteral: [ Elision ]
+ *
+ * @path ch11/11.1/11.1.4/S11.1.4_A1.2.js
+ * @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/js/src/tests/test262/ch11/11.1/11.1.4/S11.1.4_A1.3.js b/js/src/tests/test262/ch11/11.1/11.1.4/S11.1.4_A1.3.js
new file mode 100644
index 000000000..6682a8eef
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.1/11.1.4/S11.1.4_A1.3.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.
+
+/**
+ * Evaluate the production ArrayLiteral: [ AssignmentExpression ]
+ *
+ * @path ch11/11.1/11.1.4/S11.1.4_A1.3.js
+ * @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/js/src/tests/test262/ch11/11.1/11.1.4/S11.1.4_A1.4.js b/js/src/tests/test262/ch11/11.1/11.1.4/S11.1.4_A1.4.js
new file mode 100644
index 000000000..28e67233e
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.1/11.1.4/S11.1.4_A1.4.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.
+
+/**
+ * Evaluate the production ArrayLiteral: [ Elision, AssignmentExpression ]
+ *
+ * @path ch11/11.1/11.1.4/S11.1.4_A1.4.js
+ * @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/js/src/tests/test262/ch11/11.1/11.1.4/S11.1.4_A1.5.js b/js/src/tests/test262/ch11/11.1/11.1.4/S11.1.4_A1.5.js
new file mode 100644
index 000000000..d08183f2e
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.1/11.1.4/S11.1.4_A1.5.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.
+
+/**
+ * Evaluate the production ArrayLiteral: [ AssignmentExpression, Elision ]
+ *
+ * @path ch11/11.1/11.1.4/S11.1.4_A1.5.js
+ * @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/js/src/tests/test262/ch11/11.1/11.1.4/S11.1.4_A1.6.js b/js/src/tests/test262/ch11/11.1/11.1.4/S11.1.4_A1.6.js
new file mode 100644
index 000000000..589eb3c0d
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.1/11.1.4/S11.1.4_A1.6.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.
+
+/**
+ * Evaluate the production ArrayLiteral: [ Elision, AssignmentExpression, Elision ]
+ *
+ * @path ch11/11.1/11.1.4/S11.1.4_A1.6.js
+ * @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/js/src/tests/test262/ch11/11.1/11.1.4/S11.1.4_A1.7.js b/js/src/tests/test262/ch11/11.1/11.1.4/S11.1.4_A1.7.js
new file mode 100644
index 000000000..4689d6b00
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.1/11.1.4/S11.1.4_A1.7.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.
+
+/**
+ * Evaluate the production ArrayLiteral: [ AssignmentExpression, Elision, AssignmentExpression ]
+ *
+ * @path ch11/11.1/11.1.4/S11.1.4_A1.7.js
+ * @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/js/src/tests/test262/ch11/11.1/11.1.4/S11.1.4_A2.js b/js/src/tests/test262/ch11/11.1/11.1.4/S11.1.4_A2.js
new file mode 100644
index 000000000..3e1c699fb
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.1/11.1.4/S11.1.4_A2.js
@@ -0,0 +1,128 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * Create multi dimensional array
+ *
+ * @path ch11/11.1/11.1.4/S11.1.4_A2.js
+ * @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/js/src/tests/test262/ch11/11.1/11.1.4/browser.js b/js/src/tests/test262/ch11/11.1/11.1.4/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.1/11.1.4/browser.js
diff --git a/js/src/tests/test262/ch11/11.1/11.1.4/shell.js b/js/src/tests/test262/ch11/11.1/11.1.4/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.1/11.1.4/shell.js
diff --git a/js/src/tests/test262/ch11/11.1/11.1.5/11.1.5-0-1.js b/js/src/tests/test262/ch11/11.1/11.1.5/11.1.5-0-1.js
new file mode 100644
index 000000000..5ff963de5
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.1/11.1.5/11.1.5-0-1.js
@@ -0,0 +1,27 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * it isn't clear what specific requirements of the specificaiton are being tested here. This test should
+ * probably be replaced by some more targeted tests. AllenWB
+ *
+ * @path ch11/11.1/11.1.5/11.1.5-0-1.js
+ * @description Object literal - get set property
+ */
+
+
+function testcase() {
+ var s1 = "In getter";
+ var s2 = "In setter";
+ var s3 = "Modified by setter";
+ eval("var o = {get foo(){ return s1;},set foo(arg){return s2 = s3}};");
+ if(o.foo !== s1)
+ return false;
+ o.foo=10;
+ if(s2 !== s3)
+ return false;
+ return true;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch11/11.1/11.1.5/11.1.5-0-2.js b/js/src/tests/test262/ch11/11.1/11.1.5/11.1.5-0-2.js
new file mode 100644
index 000000000..3f820b441
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.1/11.1.5/11.1.5-0-2.js
@@ -0,0 +1,32 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * it isn't clear what specific requirements of the specificaiton are being tested here. This test should
+ * probably be replaced by some more targeted tests. AllenWB
+ *
+ * @path ch11/11.1/11.1.5/11.1.5-0-2.js
+ * @description Object literal - multiple get set properties
+ */
+
+
+function testcase() {
+ var s1 = "First getter";
+ var s2 = "First setter";
+ var s3 = "Second getter";
+ eval("var o = {get foo(){ return s1;},set foo(arg){return s2 = s3}, get bar(){ return s3}, set bar(arg){ s3 = arg;}};");
+ if(o.foo !== s1)
+ return false;
+ o.foo = 10;
+ if(s2 !== s3)
+ return false;
+ if(o.bar !== s3)
+ return false;
+ o.bar = "Second setter";
+ if(o.bar !== "Second setter")
+ return false;
+ return true;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch11/11.1/11.1.5/11.1.5-1-s.js b/js/src/tests/test262/ch11/11.1/11.1.5/11.1.5-1-s.js
new file mode 100644
index 000000000..371c0aceb
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.1/11.1.5/11.1.5-1-s.js
@@ -0,0 +1,23 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch11/11.1/11.1.5/11.1.5-1-s.js
+ * @description Strict Mode - SyntaxError is thrown when 'eval' occurs as the Identifier in a PropertySetParameterList of a PropertyAssignment that is contained in strict code
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+
+ try {
+ eval("var obj = {set _11_1_5_1_fun(eval) {}};");
+ return false;
+ } catch (e) {
+ return (e instanceof SyntaxError);
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch11/11.1/11.1.5/11.1.5-1gs.js b/js/src/tests/test262/ch11/11.1/11.1.5/11.1.5-1gs.js
new file mode 100644
index 000000000..6d7766e3e
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.1/11.1.5/11.1.5-1gs.js
@@ -0,0 +1,14 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch11/11.1/11.1.5/11.1.5-1gs.js
+ * @description Strict Mode - SyntaxError is thrown when 'eval' occurs as the Identifier in a PropertySetParameterList of a PropertyAssignment that is contained in strict code
+ * @onlyStrict
+ * @negative ^((?!NotEarlyError).)*$
+ */
+"use strict";
+throw NotEarlyError;
+var obj = { set _11_1_5_1_fun(eval) {}};
diff --git a/js/src/tests/test262/ch11/11.1/11.1.5/11.1.5-2-s.js b/js/src/tests/test262/ch11/11.1/11.1.5/11.1.5-2-s.js
new file mode 100644
index 000000000..5b763b78a
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.1/11.1.5/11.1.5-2-s.js
@@ -0,0 +1,23 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch11/11.1/11.1.5/11.1.5-2-s.js
+ * @description Strict Mode - SyntaxError is thrown when 'arguments' occurs as the Identifier in a PropertySetParameterList of a PropertyAssignment that is contained in strict code
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+
+ try {
+ eval("var obj = {set _11_1_5_2_fun(arguments) {} };");
+ return false;
+ } catch (e) {
+ return (e instanceof SyntaxError);
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch11/11.1/11.1.5/11.1.5-2gs.js b/js/src/tests/test262/ch11/11.1/11.1.5/11.1.5-2gs.js
new file mode 100644
index 000000000..f45f20b51
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.1/11.1.5/11.1.5-2gs.js
@@ -0,0 +1,14 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch11/11.1/11.1.5/11.1.5-2gs.js
+ * @description Strict Mode - SyntaxError is thrown when eval code contains an ObjectLiteral with more than one definition of any data property
+ * @onlyStrict
+ * @negative ^((?!NotEarlyError).)*$
+ */
+"use strict";
+throw NotEarlyError;
+var obj = { _11_1_5_2_gs: 10, _11_1_5_2_gs: 10 };
diff --git a/js/src/tests/test262/ch11/11.1/11.1.5/11.1.5-3-s.js b/js/src/tests/test262/ch11/11.1/11.1.5/11.1.5-3-s.js
new file mode 100644
index 000000000..72219037e
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.1/11.1.5/11.1.5-3-s.js
@@ -0,0 +1,22 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch11/11.1/11.1.5/11.1.5-3-s.js
+ * @description Strict Mode - SyntaxError is thrown when 'evals' occurs as the Identifier in a PropertySetParameterList of a PropertyAssignment if its FunctionBody is strict code
+ * @onlyStrict
+ */
+
+
+function testcase() {
+
+ try {
+ eval("var obj = {set _11_1_5_3_fun(eval) { \"use strict\"; }};");
+ return false;
+ } catch (e) {
+ return (e instanceof SyntaxError);
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch11/11.1/11.1.5/11.1.5-4-s.js b/js/src/tests/test262/ch11/11.1/11.1.5/11.1.5-4-s.js
new file mode 100644
index 000000000..8e4185c91
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.1/11.1.5/11.1.5-4-s.js
@@ -0,0 +1,22 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch11/11.1/11.1.5/11.1.5-4-s.js
+ * @description Strict Mode - SyntaxError is thrown when 'arguments' occurs as the Identifier in a PropertySetParameterList of a PropertyAssignment if its FunctionBody is strict code
+ * @onlyStrict
+ */
+
+
+function testcase() {
+
+ try {
+ eval("var obj = {set _11_1_5_4_fun(arguments) {\"use strict\";}};");
+ return false;
+ } catch (e) {
+ return (e instanceof SyntaxError);
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch11/11.1/11.1.5/11.1.5_3-3-1.js b/js/src/tests/test262/ch11/11.1/11.1.5/11.1.5_3-3-1.js
new file mode 100644
index 000000000..54b381128
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.1/11.1.5/11.1.5_3-3-1.js
@@ -0,0 +1,31 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * Refer 11.1.5;
+ * The production
+ * PropertyNameAndValueList : PropertyAssignment
+ * 3.Call the [[DefineOwnProperty]] internal method of obj with arguments propId.name, propId.descriptor, and false.
+ *
+ * @path ch11/11.1/11.1.5/11.1.5_3-3-1.js
+ * @description Object initialization using PropertyNameAndValueList (PropertyAssignment) when property (read-only) exists in Object.prototype (step 3)
+ */
+
+
+function testcase() {
+ try {
+ Object.defineProperty(Object.prototype, "prop", {
+ value: 100,
+ writable: false,
+ configurable: true
+ });
+ var obj = { prop: 12 };
+
+ return obj.hasOwnProperty("prop") && obj.prop === 12;
+ } finally {
+ delete Object.prototype.prop;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch11/11.1/11.1.5/11.1.5_4-4-a-2.js b/js/src/tests/test262/ch11/11.1/11.1.5/11.1.5_4-4-a-2.js
new file mode 100644
index 000000000..837c309b3
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.1/11.1.5/11.1.5_4-4-a-2.js
@@ -0,0 +1,23 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * Refer 11.1.5;
+ * The production
+ * PropertyNameAndValueList : PropertyNameAndValueList , PropertyAssignment
+ * 4. If previous is not undefined then throw a SyntaxError exception if any of the following conditions are true
+ * a. This production is contained in strict code and IsDataDescriptor(previous) is true and IsDataDescriptor(propId.descriptor) is true
+ *
+ * @path ch11/11.1/11.1.5/11.1.5_4-4-a-2.js
+ * @description Object literal - Duplicate data property name allowed if not in strict mode
+ */
+
+
+function testcase() {
+
+ eval("({foo:0,foo:1});");
+ return true;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch11/11.1/11.1.5/11.1.5_4-4-a-3.js b/js/src/tests/test262/ch11/11.1/11.1.5/11.1.5_4-4-a-3.js
new file mode 100644
index 000000000..9d37ec89d
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.1/11.1.5/11.1.5_4-4-a-3.js
@@ -0,0 +1,23 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * Refer 11.1.5;
+ * The production
+ * PropertyNameAndValueList : PropertyNameAndValueList , PropertyAssignment
+ * 4. If previous is not undefined then throw a SyntaxError exception if any of the following conditions are true
+ * a. This production is contained in strict code and IsDataDescriptor(previous) is true and IsDataDescriptor(propId.descriptor) is true
+ *
+ * @path ch11/11.1/11.1.5/11.1.5_4-4-a-3.js
+ * @description Object literal - Duplicate data property name allowed gets last defined value
+ */
+
+
+function testcase() {
+
+ var o = eval("({foo:0,foo:1});");
+ return o.foo===1;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch11/11.1/11.1.5/11.1.5_4-5-1.js b/js/src/tests/test262/ch11/11.1/11.1.5/11.1.5_4-5-1.js
new file mode 100644
index 000000000..ff06c134b
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.1/11.1.5/11.1.5_4-5-1.js
@@ -0,0 +1,32 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * Refer 11.1.5;
+ * The production
+ * PropertyNameAndValueList : PropertyNameAndValueList , PropertyAssignment
+ * 5.Call the [[DefineOwnProperty]] internal method of obj with arguments propId.name, propId.descriptor, and false.
+ *
+ * @path ch11/11.1/11.1.5/11.1.5_4-5-1.js
+ * @description Object initialization using PropertyNameAndValueList (PropertyNameAndValueList , PropertyAssignment) when property (read-only) exists in Object.prototype (Step 5)
+ */
+
+
+function testcase() {
+ try {
+ Object.defineProperty(Object.prototype, "prop2", {
+ value: 100,
+ writable: false,
+ configurable: true
+ });
+
+ var obj = { prop1: 101, prop2: 12 };
+
+ return obj.hasOwnProperty("prop2");
+ } finally {
+ delete Object.prototype.prop2;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch11/11.1/11.1.5/11.1.5_5-4-1.js b/js/src/tests/test262/ch11/11.1/11.1.5/11.1.5_5-4-1.js
new file mode 100644
index 000000000..7af0a34ec
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.1/11.1.5/11.1.5_5-4-1.js
@@ -0,0 +1,27 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * Refer 11.1.5;
+ * The production
+ * PropertyAssignment : PropertyName : AssignmentExpression
+ * 4.Let desc be the Property Descriptor{[[Value]]: propValue, [[Writable]]: true, [[Enumerable]]: true, [[Configurable]]: true}
+ *
+ * @path ch11/11.1/11.1.5/11.1.5_5-4-1.js
+ * @description Object literal - property descriptor for assignment expression
+ */
+
+
+function testcase() {
+
+ var o = {foo : 1};
+ var desc = Object.getOwnPropertyDescriptor(o,"foo");
+ if(desc.value === 1 &&
+ desc.writable === true &&
+ desc.enumerable === true &&
+ desc.configurable === true)
+ return true;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch11/11.1/11.1.5/11.1.5_6-2-1-s.js b/js/src/tests/test262/ch11/11.1/11.1.5/11.1.5_6-2-1-s.js
new file mode 100644
index 000000000..090d90944
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.1/11.1.5/11.1.5_6-2-1-s.js
@@ -0,0 +1,30 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch11/11.1/11.1.5/11.1.5_6-2-1-s.js
+ * @description Strict Mode - SyntaxError is thrown when an assignment to a reserved word or a future reserved word is contained in strict code
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+
+ try {
+ eval("var obj = {\
+ get _11_1_5_6_2_1() {\
+ public = 42;\
+ return public;\
+ }\
+ };");
+
+ var _11_1_5_6_2_1 = obj._11_1_5_6_2_1;
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch11/11.1/11.1.5/11.1.5_6-2-2-s.js b/js/src/tests/test262/ch11/11.1/11.1.5/11.1.5_6-2-2-s.js
new file mode 100644
index 000000000..32afa56ed
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.1/11.1.5/11.1.5_6-2-2-s.js
@@ -0,0 +1,29 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch11/11.1/11.1.5/11.1.5_6-2-2-s.js
+ * @description Strict Mode - SyntaxError is thrown when an assignment to a reserved word or a future reserved word is made inside a strict mode FunctionBody of a PropertyAssignment
+ * @onlyStrict
+ */
+
+
+function testcase() {
+
+ try {
+ eval("var obj = {\
+ get _11_1_5_6_2_2() {\
+ \"use strict\";\
+ public = 42;\
+ return public;\
+ }\
+ };\
+ var _11_1_5_6_2_2 = obj._11_1_5_6_2_2;");
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch11/11.1/11.1.5/11.1.5_6-3-1.js b/js/src/tests/test262/ch11/11.1/11.1.5/11.1.5_6-3-1.js
new file mode 100644
index 000000000..6514561d9
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.1/11.1.5/11.1.5_6-3-1.js
@@ -0,0 +1,25 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * Refer 11.1.5;
+ * The production
+ * PropertyAssignment : get PropertyName ( ) { FunctionBody }
+ * 3.Let desc be the Property Descriptor{[[Get]]: closure, [[Enumerable]]: true, [[Configurable]]: true}
+ *
+ * @path ch11/11.1/11.1.5/11.1.5_6-3-1.js
+ * @description Object literal - property descriptor for get property assignment
+ */
+
+
+function testcase() {
+
+ eval("var o = {get foo(){return 1;}};");
+ var desc = Object.getOwnPropertyDescriptor(o,"foo");
+ if(desc.enumerable === true &&
+ desc.configurable === true)
+ return true;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch11/11.1/11.1.5/11.1.5_6-3-2.js b/js/src/tests/test262/ch11/11.1/11.1.5/11.1.5_6-3-2.js
new file mode 100644
index 000000000..dc0665d69
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.1/11.1.5/11.1.5_6-3-2.js
@@ -0,0 +1,23 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * Refer 11.1.5;
+ * The production
+ * PropertyAssignment : get PropertyName ( ) { FunctionBody }
+ * 3.Let desc be the Property Descriptor{[[Get]]: closure, [[Enumerable]]: true, [[Configurable]]: true}
+ *
+ * @path ch11/11.1/11.1.5/11.1.5_6-3-2.js
+ * @description Object literal - property descriptor for get property assignment should not create a set function
+ */
+
+
+function testcase() {
+
+ eval("var o = {get foo(){return 1;}};");
+ var desc = Object.getOwnPropertyDescriptor(o,"foo");
+ return desc.set === undefined
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch11/11.1/11.1.5/11.1.5_7-2-1-s.js b/js/src/tests/test262/ch11/11.1/11.1.5/11.1.5_7-2-1-s.js
new file mode 100644
index 000000000..71aacfa2e
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.1/11.1.5/11.1.5_7-2-1-s.js
@@ -0,0 +1,30 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch11/11.1/11.1.5/11.1.5_7-2-1-s.js
+ * @description Strict Mode - SyntaxError is thrown when an assignment to a reserved word is contained in strict code
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+
+ try {
+ eval("var data = \"data\";\
+ var obj = {\
+ set _11_1_5_7_2_1(value) {\
+ public = 42;\
+ data = value;\
+ }\
+ };\
+ obj._11_1_5_7_2_1 = 1;");
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch11/11.1/11.1.5/11.1.5_7-2-2-s.js b/js/src/tests/test262/ch11/11.1/11.1.5/11.1.5_7-2-2-s.js
new file mode 100644
index 000000000..b351a43f7
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.1/11.1.5/11.1.5_7-2-2-s.js
@@ -0,0 +1,30 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch11/11.1/11.1.5/11.1.5_7-2-2-s.js
+ * @description Strict Mode - SyntaxError is thrown when an assignment to a reserved word is made in a strict FunctionBody of a PropertyAssignment
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+
+ try {
+ eval("var data = \"data\";\
+ var obj = {\
+ set _11_1_5_7_2_2(value) {\
+ public = 42;\
+ data = value;\
+ }\
+ };\
+ obj._11_1_5_7_2_2 = 1;");
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch11/11.1/11.1.5/11.1.5_7-3-1.js b/js/src/tests/test262/ch11/11.1/11.1.5/11.1.5_7-3-1.js
new file mode 100644
index 000000000..ae453873d
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.1/11.1.5/11.1.5_7-3-1.js
@@ -0,0 +1,25 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * Refer 11.1.5;
+ * The production
+ * PropertyAssignment : set PropertyName( PropertySetParameterList ) { FunctionBody }
+ * 3.Let desc be the Property Descriptor{[[Set]]: closure, [[Enumerable]]: true, [[Configurable]]: true}
+ *
+ * @path ch11/11.1/11.1.5/11.1.5_7-3-1.js
+ * @description Object literal - property descriptor for set property assignment
+ */
+
+
+function testcase() {
+
+ eval("var o = {set foo(arg){return 1;}};");
+ var desc = Object.getOwnPropertyDescriptor(o,"foo");
+ if(desc.enumerable === true &&
+ desc.configurable === true)
+ return true;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch11/11.1/11.1.5/11.1.5_7-3-2.js b/js/src/tests/test262/ch11/11.1/11.1.5/11.1.5_7-3-2.js
new file mode 100644
index 000000000..216f80a2e
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.1/11.1.5/11.1.5_7-3-2.js
@@ -0,0 +1,23 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * Refer 11.1.5;
+ * The production
+ * PropertyAssignment : get PropertyName ( ) { FunctionBody }
+ * 3.Let desc be the Property Descriptor{[[Get]]: closure, [[Enumerable]]: true, [[Configurable]]: true}
+ *
+ * @path ch11/11.1/11.1.5/11.1.5_7-3-2.js
+ * @description Object literal - property descriptor for set property assignment should not create a get function
+ */
+
+
+function testcase() {
+
+ eval("var o = {set foo(arg){}};");
+ var desc = Object.getOwnPropertyDescriptor(o,"foo");
+ return desc.get === undefined
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch11/11.1/11.1.5/S11.1.5_A1.1.js b/js/src/tests/test262/ch11/11.1/11.1.5/S11.1.5_A1.1.js
new file mode 100644
index 000000000..0f4a1936e
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.1/11.1.5/S11.1.5_A1.1.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.
+
+/**
+ * Evaluate the production ObjectLiteral: { }
+ *
+ * @path ch11/11.1/11.1.5/S11.1.5_A1.1.js
+ * @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/js/src/tests/test262/ch11/11.1/11.1.5/S11.1.5_A1.2.js b/js/src/tests/test262/ch11/11.1/11.1.5/S11.1.5_A1.2.js
new file mode 100644
index 000000000..9eff82640
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.1/11.1.5/S11.1.5_A1.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.
+
+/**
+ * Evaluate the production ObjectLiteral: { NumericLiteral : AssignmentExpression}
+ *
+ * @path ch11/11.1/11.1.5/S11.1.5_A1.2.js
+ * @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/js/src/tests/test262/ch11/11.1/11.1.5/S11.1.5_A1.3.js b/js/src/tests/test262/ch11/11.1/11.1.5/S11.1.5_A1.3.js
new file mode 100644
index 000000000..dea77e509
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.1/11.1.5/S11.1.5_A1.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.
+
+/**
+ * Evaluate the production ObjectLiteral: { StringLiteral : AssignmentExpression}
+ *
+ * @path ch11/11.1/11.1.5/S11.1.5_A1.3.js
+ * @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/js/src/tests/test262/ch11/11.1/11.1.5/S11.1.5_A1.4.js b/js/src/tests/test262/ch11/11.1/11.1.5/S11.1.5_A1.4.js
new file mode 100644
index 000000000..5919596dc
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.1/11.1.5/S11.1.5_A1.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.
+
+/**
+ * Evaluate the production ObjectLiteral: { Identifier : AssignmentExpression}
+ *
+ * @path ch11/11.1/11.1.5/S11.1.5_A1.4.js
+ * @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/js/src/tests/test262/ch11/11.1/11.1.5/S11.1.5_A2.js b/js/src/tests/test262/ch11/11.1/11.1.5/S11.1.5_A2.js
new file mode 100644
index 000000000..808578392
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.1/11.1.5/S11.1.5_A2.js
@@ -0,0 +1,94 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * Evaluate the production ObjectLiteral: { PropertyName : AssignmentExpression }
+ *
+ * @path ch11/11.1/11.1.5/S11.1.5_A2.js
+ * @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/js/src/tests/test262/ch11/11.1/11.1.5/S11.1.5_A3.js b/js/src/tests/test262/ch11/11.1/11.1.5/S11.1.5_A3.js
new file mode 100644
index 000000000..1d0024a9f
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.1/11.1.5/S11.1.5_A3.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.
+
+/**
+ * Evaluate the production ObjectLiteral: { PropertyNameAndValueList }
+ *
+ * @path ch11/11.1/11.1.5/S11.1.5_A3.js
+ * @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/js/src/tests/test262/ch11/11.1/11.1.5/S11.1.5_A4.1.js b/js/src/tests/test262/ch11/11.1/11.1.5/S11.1.5_A4.1.js
new file mode 100644
index 000000000..b1d2a2f90
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.1/11.1.5/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.
+
+/**
+ * The PropertyName is not really a BooleanLiteral
+ *
+ * @path ch11/11.1/11.1.5/S11.1.5_A4.1.js
+ * @description Checking if execution of "var object = {true : 1}" does not fail
+ */
+
+//CHECK#1
+var object = {true : 1};
+
diff --git a/js/src/tests/test262/ch11/11.1/11.1.5/S11.1.5_A4.2.js b/js/src/tests/test262/ch11/11.1/11.1.5/S11.1.5_A4.2.js
new file mode 100644
index 000000000..ebeb5fbc6
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.1/11.1.5/S11.1.5_A4.2.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.
+
+/**
+ * The PropertyName is not really a nullLiteral
+ *
+ * @path ch11/11.1/11.1.5/S11.1.5_A4.2.js
+ * @description Checking if execution of "var object = {null : true}" does not fail
+ */
+
+//CHECK#1
+var object = {null : true};
diff --git a/js/src/tests/test262/ch11/11.1/11.1.5/S11.1.5_A4.3.js b/js/src/tests/test262/ch11/11.1/11.1.5/S11.1.5_A4.3.js
new file mode 100644
index 000000000..03c89ee99
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.1/11.1.5/S11.1.5_A4.3.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.
+
+/**
+ * The PropertyName is undefined, ToString(BooleanLiteral), ToString(nullLiteral)
+ *
+ * @path ch11/11.1/11.1.5/S11.1.5_A4.3.js
+ * @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/js/src/tests/test262/ch11/11.1/11.1.5/browser.js b/js/src/tests/test262/ch11/11.1/11.1.5/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.1/11.1.5/browser.js
diff --git a/js/src/tests/test262/ch11/11.1/11.1.5/shell.js b/js/src/tests/test262/ch11/11.1/11.1.5/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.1/11.1.5/shell.js
diff --git a/js/src/tests/test262/ch11/11.1/11.1.6/S11.1.6_A1.js b/js/src/tests/test262/ch11/11.1/11.1.6/S11.1.6_A1.js
new file mode 100644
index 000000000..d6b8323a8
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.1/11.1.6/S11.1.6_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.
+
+/**
+ * White Space and Line Terminator inside "grouping" operator are allowed
+ *
+ * @path ch11/11.1/11.1.6/S11.1.6_A1.js
+ * @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/js/src/tests/test262/ch11/11.1/11.1.6/S11.1.6_A2.js b/js/src/tests/test262/ch11/11.1/11.1.6/S11.1.6_A2.js
new file mode 100644
index 000000000..30d5c290c
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.1/11.1.6/S11.1.6_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.
+
+/**
+ * "This" operator doesn't use GetValue. The operators "delete" and "typeof" can be applied to parenthesised expressions
+ *
+ * @path ch11/11.1/11.1.6/S11.1.6_A2.js
+ * @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/js/src/tests/test262/ch11/11.1/11.1.6/S11.1.6_A3_T1.js b/js/src/tests/test262/ch11/11.1/11.1.6/S11.1.6_A3_T1.js
new file mode 100644
index 000000000..26a030104
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.1/11.1.6/S11.1.6_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.
+
+/**
+ * "This" operator only evaluates Expression
+ *
+ * @path ch11/11.1/11.1.6/S11.1.6_A3_T1.js
+ * @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/js/src/tests/test262/ch11/11.1/11.1.6/S11.1.6_A3_T2.js b/js/src/tests/test262/ch11/11.1/11.1.6/S11.1.6_A3_T2.js
new file mode 100644
index 000000000..e29e039f4
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.1/11.1.6/S11.1.6_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.
+
+/**
+ * "This" operator only evaluates Expression
+ *
+ * @path ch11/11.1/11.1.6/S11.1.6_A3_T2.js
+ * @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/js/src/tests/test262/ch11/11.1/11.1.6/S11.1.6_A3_T3.js b/js/src/tests/test262/ch11/11.1/11.1.6/S11.1.6_A3_T3.js
new file mode 100644
index 000000000..a673bd31d
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.1/11.1.6/S11.1.6_A3_T3.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.
+
+/**
+ * "This" operator only evaluates Expression
+ *
+ * @path ch11/11.1/11.1.6/S11.1.6_A3_T3.js
+ * @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/js/src/tests/test262/ch11/11.1/11.1.6/S11.1.6_A3_T4.js b/js/src/tests/test262/ch11/11.1/11.1.6/S11.1.6_A3_T4.js
new file mode 100644
index 000000000..2c049ccc9
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.1/11.1.6/S11.1.6_A3_T4.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.
+
+/**
+ * "This" operator only evaluates Expression
+ *
+ * @path ch11/11.1/11.1.6/S11.1.6_A3_T4.js
+ * @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/js/src/tests/test262/ch11/11.1/11.1.6/S11.1.6_A3_T5.js b/js/src/tests/test262/ch11/11.1/11.1.6/S11.1.6_A3_T5.js
new file mode 100644
index 000000000..6fe51bbe9
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.1/11.1.6/S11.1.6_A3_T5.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.
+
+/**
+ * "This" operator only evaluates Expression
+ *
+ * @path ch11/11.1/11.1.6/S11.1.6_A3_T5.js
+ * @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/js/src/tests/test262/ch11/11.1/11.1.6/S11.1.6_A3_T6.js b/js/src/tests/test262/ch11/11.1/11.1.6/S11.1.6_A3_T6.js
new file mode 100644
index 000000000..e4398bfff
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.1/11.1.6/S11.1.6_A3_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.
+
+/**
+ * "This" operator only evaluates Expression
+ *
+ * @path ch11/11.1/11.1.6/S11.1.6_A3_T6.js
+ * @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/js/src/tests/test262/ch11/11.1/11.1.6/browser.js b/js/src/tests/test262/ch11/11.1/11.1.6/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.1/11.1.6/browser.js
diff --git a/js/src/tests/test262/ch11/11.1/11.1.6/shell.js b/js/src/tests/test262/ch11/11.1/11.1.6/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.1/11.1.6/shell.js
diff --git a/js/src/tests/test262/ch11/11.1/browser.js b/js/src/tests/test262/ch11/11.1/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.1/browser.js
diff --git a/js/src/tests/test262/ch11/11.1/shell.js b/js/src/tests/test262/ch11/11.1/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.1/shell.js
diff --git a/js/src/tests/test262/ch11/11.10/11.10.1/S11.10.1_A1.js b/js/src/tests/test262/ch11/11.10/11.10.1/S11.10.1_A1.js
new file mode 100644
index 000000000..25416cdca
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.10/11.10.1/S11.10.1_A1.js
@@ -0,0 +1,61 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * White Space and Line Terminator between BitwiseANDExpression and "&" or between "&" and EqualityExpression are allowed
+ *
+ * @path ch11/11.10/11.10.1/S11.10.1_A1.js
+ * @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/js/src/tests/test262/ch11/11.10/11.10.1/S11.10.1_A2.1_T1.js b/js/src/tests/test262/ch11/11.10/11.10.1/S11.10.1_A2.1_T1.js
new file mode 100644
index 000000000..4acb431bc
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.10/11.10.1/S11.10.1_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.
+
+/**
+ * Operator x & y uses GetValue
+ *
+ * @path ch11/11.10/11.10.1/S11.10.1_A2.1_T1.js
+ * @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/js/src/tests/test262/ch11/11.10/11.10.1/S11.10.1_A2.1_T2.js b/js/src/tests/test262/ch11/11.10/11.10.1/S11.10.1_A2.1_T2.js
new file mode 100644
index 000000000..91f0369a6
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.10/11.10.1/S11.10.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.
+
+/**
+ * Operator x & y uses GetValue
+ *
+ * @path ch11/11.10/11.10.1/S11.10.1_A2.1_T2.js
+ * @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/js/src/tests/test262/ch11/11.10/11.10.1/S11.10.1_A2.1_T3.js b/js/src/tests/test262/ch11/11.10/11.10.1/S11.10.1_A2.1_T3.js
new file mode 100644
index 000000000..eb308b1b8
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.10/11.10.1/S11.10.1_A2.1_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.
+
+/**
+ * Operator x & y uses GetValue
+ *
+ * @path ch11/11.10/11.10.1/S11.10.1_A2.1_T3.js
+ * @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/js/src/tests/test262/ch11/11.10/11.10.1/S11.10.1_A2.2_T1.js b/js/src/tests/test262/ch11/11.10/11.10.1/S11.10.1_A2.2_T1.js
new file mode 100644
index 000000000..b5aafe3d8
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.10/11.10.1/S11.10.1_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.
+
+/**
+ * Operator x & y uses [[Default Value]]
+ *
+ * @path ch11/11.10/11.10.1/S11.10.1_A2.2_T1.js
+ * @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/js/src/tests/test262/ch11/11.10/11.10.1/S11.10.1_A2.3_T1.js b/js/src/tests/test262/ch11/11.10/11.10.1/S11.10.1_A2.3_T1.js
new file mode 100644
index 000000000..079e2ccb4
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.10/11.10.1/S11.10.1_A2.3_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.
+
+/**
+ * ToInt32(first expression) is called first, and then ToInt32(second expression)
+ *
+ * @path ch11/11.10/11.10.1/S11.10.1_A2.3_T1.js
+ * @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/js/src/tests/test262/ch11/11.10/11.10.1/S11.10.1_A2.4_T1.js b/js/src/tests/test262/ch11/11.10/11.10.1/S11.10.1_A2.4_T1.js
new file mode 100644
index 000000000..c77c23d5d
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.10/11.10.1/S11.10.1_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.
+
+/**
+ * First expression is evaluated first, and then second expression
+ *
+ * @path ch11/11.10/11.10.1/S11.10.1_A2.4_T1.js
+ * @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/js/src/tests/test262/ch11/11.10/11.10.1/S11.10.1_A2.4_T2.js b/js/src/tests/test262/ch11/11.10/11.10.1/S11.10.1_A2.4_T2.js
new file mode 100644
index 000000000..23b8d91cf
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.10/11.10.1/S11.10.1_A2.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.
+
+/**
+ * First expression is evaluated first, and then second expression
+ *
+ * @path ch11/11.10/11.10.1/S11.10.1_A2.4_T2.js
+ * @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/js/src/tests/test262/ch11/11.10/11.10.1/S11.10.1_A2.4_T3.js b/js/src/tests/test262/ch11/11.10/11.10.1/S11.10.1_A2.4_T3.js
new file mode 100644
index 000000000..2aef6019b
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.10/11.10.1/S11.10.1_A2.4_T3.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.
+
+/**
+ * First expression is evaluated first, and then second expression
+ *
+ * @path ch11/11.10/11.10.1/S11.10.1_A2.4_T3.js
+ * @description Checking with undeclarated variables
+ * @noStrict
+ */
+
+//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/js/src/tests/test262/ch11/11.10/11.10.1/S11.10.1_A3_T1.1.js b/js/src/tests/test262/ch11/11.10/11.10.1/S11.10.1_A3_T1.1.js
new file mode 100644
index 000000000..3818831d2
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.10/11.10.1/S11.10.1_A3_T1.1.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.
+
+/**
+ * Operator x & y returns ToNumber(x) & ToNumber(y)
+ *
+ * @path ch11/11.10/11.10.1/S11.10.1_A3_T1.1.js
+ * @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/js/src/tests/test262/ch11/11.10/11.10.1/S11.10.1_A3_T1.2.js b/js/src/tests/test262/ch11/11.10/11.10.1/S11.10.1_A3_T1.2.js
new file mode 100644
index 000000000..96f0a7c52
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.10/11.10.1/S11.10.1_A3_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.
+
+/**
+ * Operator x & y returns ToNumber(x) & ToNumber(y)
+ *
+ * @path ch11/11.10/11.10.1/S11.10.1_A3_T1.2.js
+ * @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/js/src/tests/test262/ch11/11.10/11.10.1/S11.10.1_A3_T1.3.js b/js/src/tests/test262/ch11/11.10/11.10.1/S11.10.1_A3_T1.3.js
new file mode 100644
index 000000000..e94451b58
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.10/11.10.1/S11.10.1_A3_T1.3.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.
+
+/**
+ * Operator x & y returns ToNumber(x) & ToNumber(y)
+ *
+ * @path ch11/11.10/11.10.1/S11.10.1_A3_T1.3.js
+ * @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/js/src/tests/test262/ch11/11.10/11.10.1/S11.10.1_A3_T1.4.js b/js/src/tests/test262/ch11/11.10/11.10.1/S11.10.1_A3_T1.4.js
new file mode 100644
index 000000000..ba187bd35
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.10/11.10.1/S11.10.1_A3_T1.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.
+
+/**
+ * Operator x & y returns ToNumber(x) & ToNumber(y)
+ *
+ * @path ch11/11.10/11.10.1/S11.10.1_A3_T1.4.js
+ * @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/js/src/tests/test262/ch11/11.10/11.10.1/S11.10.1_A3_T1.5.js b/js/src/tests/test262/ch11/11.10/11.10.1/S11.10.1_A3_T1.5.js
new file mode 100644
index 000000000..437336a4b
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.10/11.10.1/S11.10.1_A3_T1.5.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.
+
+/**
+ * Operator x & y returns ToNumber(x) & ToNumber(y)
+ *
+ * @path ch11/11.10/11.10.1/S11.10.1_A3_T1.5.js
+ * @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/js/src/tests/test262/ch11/11.10/11.10.1/S11.10.1_A3_T2.1.js b/js/src/tests/test262/ch11/11.10/11.10.1/S11.10.1_A3_T2.1.js
new file mode 100644
index 000000000..7a70acf5f
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.10/11.10.1/S11.10.1_A3_T2.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.
+
+/**
+ * Operator x & y returns ToNumber(x) & ToNumber(y)
+ *
+ * @path ch11/11.10/11.10.1/S11.10.1_A3_T2.1.js
+ * @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/js/src/tests/test262/ch11/11.10/11.10.1/S11.10.1_A3_T2.2.js b/js/src/tests/test262/ch11/11.10/11.10.1/S11.10.1_A3_T2.2.js
new file mode 100644
index 000000000..72765faf2
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.10/11.10.1/S11.10.1_A3_T2.2.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.
+
+/**
+ * Operator x & y returns ToNumber(x) & ToNumber(y)
+ *
+ * @path ch11/11.10/11.10.1/S11.10.1_A3_T2.2.js
+ * @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/js/src/tests/test262/ch11/11.10/11.10.1/S11.10.1_A3_T2.3.js b/js/src/tests/test262/ch11/11.10/11.10.1/S11.10.1_A3_T2.3.js
new file mode 100644
index 000000000..a133e1f43
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.10/11.10.1/S11.10.1_A3_T2.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.
+
+/**
+ * Operator x & y returns ToNumber(x) & ToNumber(y)
+ *
+ * @path ch11/11.10/11.10.1/S11.10.1_A3_T2.3.js
+ * @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/js/src/tests/test262/ch11/11.10/11.10.1/S11.10.1_A3_T2.4.js b/js/src/tests/test262/ch11/11.10/11.10.1/S11.10.1_A3_T2.4.js
new file mode 100644
index 000000000..1ceb71fa0
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.10/11.10.1/S11.10.1_A3_T2.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.
+
+/**
+ * Operator x & y returns ToNumber(x) & ToNumber(y)
+ *
+ * @path ch11/11.10/11.10.1/S11.10.1_A3_T2.4.js
+ * @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/js/src/tests/test262/ch11/11.10/11.10.1/S11.10.1_A3_T2.5.js b/js/src/tests/test262/ch11/11.10/11.10.1/S11.10.1_A3_T2.5.js
new file mode 100644
index 000000000..3983069f4
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.10/11.10.1/S11.10.1_A3_T2.5.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.
+
+/**
+ * Operator x & y returns ToNumber(x) & ToNumber(y)
+ *
+ * @path ch11/11.10/11.10.1/S11.10.1_A3_T2.5.js
+ * @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/js/src/tests/test262/ch11/11.10/11.10.1/S11.10.1_A3_T2.6.js b/js/src/tests/test262/ch11/11.10/11.10.1/S11.10.1_A3_T2.6.js
new file mode 100644
index 000000000..b9f66bb79
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.10/11.10.1/S11.10.1_A3_T2.6.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.
+
+/**
+ * Operator x & y returns ToNumber(x) & ToNumber(y)
+ *
+ * @path ch11/11.10/11.10.1/S11.10.1_A3_T2.6.js
+ * @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/js/src/tests/test262/ch11/11.10/11.10.1/S11.10.1_A3_T2.7.js b/js/src/tests/test262/ch11/11.10/11.10.1/S11.10.1_A3_T2.7.js
new file mode 100644
index 000000000..0dbabe1f0
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.10/11.10.1/S11.10.1_A3_T2.7.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.
+
+/**
+ * Operator x & y returns ToNumber(x) & ToNumber(y)
+ *
+ * @path ch11/11.10/11.10.1/S11.10.1_A3_T2.7.js
+ * @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/js/src/tests/test262/ch11/11.10/11.10.1/S11.10.1_A3_T2.8.js b/js/src/tests/test262/ch11/11.10/11.10.1/S11.10.1_A3_T2.8.js
new file mode 100644
index 000000000..33eec3241
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.10/11.10.1/S11.10.1_A3_T2.8.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.
+
+/**
+ * Operator x & y returns ToNumber(x) & ToNumber(y)
+ *
+ * @path ch11/11.10/11.10.1/S11.10.1_A3_T2.8.js
+ * @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/js/src/tests/test262/ch11/11.10/11.10.1/S11.10.1_A3_T2.9.js b/js/src/tests/test262/ch11/11.10/11.10.1/S11.10.1_A3_T2.9.js
new file mode 100644
index 000000000..9c94ad0e7
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.10/11.10.1/S11.10.1_A3_T2.9.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.
+
+/**
+ * Operator x & y returns ToNumber(x) & ToNumber(y)
+ *
+ * @path ch11/11.10/11.10.1/S11.10.1_A3_T2.9.js
+ * @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/js/src/tests/test262/ch11/11.10/11.10.1/browser.js b/js/src/tests/test262/ch11/11.10/11.10.1/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.10/11.10.1/browser.js
diff --git a/js/src/tests/test262/ch11/11.10/11.10.1/shell.js b/js/src/tests/test262/ch11/11.10/11.10.1/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.10/11.10.1/shell.js
diff --git a/js/src/tests/test262/ch11/11.10/11.10.2/S11.10.2_A1.js b/js/src/tests/test262/ch11/11.10/11.10.2/S11.10.2_A1.js
new file mode 100644
index 000000000..6798a9ea4
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.10/11.10.2/S11.10.2_A1.js
@@ -0,0 +1,61 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * White Space and Line Terminator between BitwiseXORExpression and "^" or between "^" and BitwiseANDExpression are allowed
+ *
+ * @path ch11/11.10/11.10.2/S11.10.2_A1.js
+ * @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/js/src/tests/test262/ch11/11.10/11.10.2/S11.10.2_A2.1_T1.js b/js/src/tests/test262/ch11/11.10/11.10.2/S11.10.2_A2.1_T1.js
new file mode 100644
index 000000000..f4aad4a19
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.10/11.10.2/S11.10.2_A2.1_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.
+
+/**
+ * Operator x ^ y uses GetValue
+ *
+ * @path ch11/11.10/11.10.2/S11.10.2_A2.1_T1.js
+ * @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/js/src/tests/test262/ch11/11.10/11.10.2/S11.10.2_A2.1_T2.js b/js/src/tests/test262/ch11/11.10/11.10.2/S11.10.2_A2.1_T2.js
new file mode 100644
index 000000000..503ac9678
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.10/11.10.2/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.
+
+/**
+ * Operator x ^ y uses GetValue
+ *
+ * @path ch11/11.10/11.10.2/S11.10.2_A2.1_T2.js
+ * @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/js/src/tests/test262/ch11/11.10/11.10.2/S11.10.2_A2.1_T3.js b/js/src/tests/test262/ch11/11.10/11.10.2/S11.10.2_A2.1_T3.js
new file mode 100644
index 000000000..6c5969614
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.10/11.10.2/S11.10.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.
+
+/**
+ * Operator x ^ y uses GetValue
+ *
+ * @path ch11/11.10/11.10.2/S11.10.2_A2.1_T3.js
+ * @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/js/src/tests/test262/ch11/11.10/11.10.2/S11.10.2_A2.2_T1.js b/js/src/tests/test262/ch11/11.10/11.10.2/S11.10.2_A2.2_T1.js
new file mode 100644
index 000000000..0a00ada6d
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.10/11.10.2/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.
+
+/**
+ * Operator x ^ y uses [[Default Value]]
+ *
+ * @path ch11/11.10/11.10.2/S11.10.2_A2.2_T1.js
+ * @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/js/src/tests/test262/ch11/11.10/11.10.2/S11.10.2_A2.3_T1.js b/js/src/tests/test262/ch11/11.10/11.10.2/S11.10.2_A2.3_T1.js
new file mode 100644
index 000000000..cbf3009a1
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.10/11.10.2/S11.10.2_A2.3_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.
+
+/**
+ * ToInt32(first expression) is called first, and then ToInt32(second expression)
+ *
+ * @path ch11/11.10/11.10.2/S11.10.2_A2.3_T1.js
+ * @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/js/src/tests/test262/ch11/11.10/11.10.2/S11.10.2_A2.4_T1.js b/js/src/tests/test262/ch11/11.10/11.10.2/S11.10.2_A2.4_T1.js
new file mode 100644
index 000000000..e1af1b864
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.10/11.10.2/S11.10.2_A2.4_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.
+
+/**
+ * First expression is evaluated first, and then second expression
+ *
+ * @path ch11/11.10/11.10.2/S11.10.2_A2.4_T1.js
+ * @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/js/src/tests/test262/ch11/11.10/11.10.2/S11.10.2_A2.4_T2.js b/js/src/tests/test262/ch11/11.10/11.10.2/S11.10.2_A2.4_T2.js
new file mode 100644
index 000000000..5cc5a1540
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.10/11.10.2/S11.10.2_A2.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.
+
+/**
+ * First expression is evaluated first, and then second expression
+ *
+ * @path ch11/11.10/11.10.2/S11.10.2_A2.4_T2.js
+ * @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/js/src/tests/test262/ch11/11.10/11.10.2/S11.10.2_A2.4_T3.js b/js/src/tests/test262/ch11/11.10/11.10.2/S11.10.2_A2.4_T3.js
new file mode 100644
index 000000000..5241ec557
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.10/11.10.2/S11.10.2_A2.4_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.
+
+/**
+ * First expression is evaluated first, and then second expression
+ *
+ * @path ch11/11.10/11.10.2/S11.10.2_A2.4_T3.js
+ * @description Checking with undeclarated variables
+ * @noStrict
+ */
+
+//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/js/src/tests/test262/ch11/11.10/11.10.2/S11.10.2_A3_T1.1.js b/js/src/tests/test262/ch11/11.10/11.10.2/S11.10.2_A3_T1.1.js
new file mode 100644
index 000000000..e6466e784
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.10/11.10.2/S11.10.2_A3_T1.1.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.
+
+/**
+ * Operator x ^ y returns ToNumber(x) ^ ToNumber(y)
+ *
+ * @path ch11/11.10/11.10.2/S11.10.2_A3_T1.1.js
+ * @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/js/src/tests/test262/ch11/11.10/11.10.2/S11.10.2_A3_T1.2.js b/js/src/tests/test262/ch11/11.10/11.10.2/S11.10.2_A3_T1.2.js
new file mode 100644
index 000000000..9b997e82f
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.10/11.10.2/S11.10.2_A3_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.
+
+/**
+ * Operator x ^ y returns ToNumber(x) ^ ToNumber(y)
+ *
+ * @path ch11/11.10/11.10.2/S11.10.2_A3_T1.2.js
+ * @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/js/src/tests/test262/ch11/11.10/11.10.2/S11.10.2_A3_T1.3.js b/js/src/tests/test262/ch11/11.10/11.10.2/S11.10.2_A3_T1.3.js
new file mode 100644
index 000000000..acd61cf11
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.10/11.10.2/S11.10.2_A3_T1.3.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.
+
+/**
+ * Operator x ^ y returns ToNumber(x) ^ ToNumber(y)
+ *
+ * @path ch11/11.10/11.10.2/S11.10.2_A3_T1.3.js
+ * @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/js/src/tests/test262/ch11/11.10/11.10.2/S11.10.2_A3_T1.4.js b/js/src/tests/test262/ch11/11.10/11.10.2/S11.10.2_A3_T1.4.js
new file mode 100644
index 000000000..72698a656
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.10/11.10.2/S11.10.2_A3_T1.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.
+
+/**
+ * Operator x ^ y returns ToNumber(x) ^ ToNumber(y)
+ *
+ * @path ch11/11.10/11.10.2/S11.10.2_A3_T1.4.js
+ * @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/js/src/tests/test262/ch11/11.10/11.10.2/S11.10.2_A3_T1.5.js b/js/src/tests/test262/ch11/11.10/11.10.2/S11.10.2_A3_T1.5.js
new file mode 100644
index 000000000..b415d1c75
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.10/11.10.2/S11.10.2_A3_T1.5.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.
+
+/**
+ * Operator x ^ y returns ToNumber(x) ^ ToNumber(y)
+ *
+ * @path ch11/11.10/11.10.2/S11.10.2_A3_T1.5.js
+ * @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/js/src/tests/test262/ch11/11.10/11.10.2/S11.10.2_A3_T2.1.js b/js/src/tests/test262/ch11/11.10/11.10.2/S11.10.2_A3_T2.1.js
new file mode 100644
index 000000000..c32718b6e
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.10/11.10.2/S11.10.2_A3_T2.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.
+
+/**
+ * Operator x ^ y returns ToNumber(x) ^ ToNumber(y)
+ *
+ * @path ch11/11.10/11.10.2/S11.10.2_A3_T2.1.js
+ * @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/js/src/tests/test262/ch11/11.10/11.10.2/S11.10.2_A3_T2.2.js b/js/src/tests/test262/ch11/11.10/11.10.2/S11.10.2_A3_T2.2.js
new file mode 100644
index 000000000..1503fbaf5
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.10/11.10.2/S11.10.2_A3_T2.2.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.
+
+/**
+ * Operator x ^ y returns ToNumber(x) ^ ToNumber(y)
+ *
+ * @path ch11/11.10/11.10.2/S11.10.2_A3_T2.2.js
+ * @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/js/src/tests/test262/ch11/11.10/11.10.2/S11.10.2_A3_T2.3.js b/js/src/tests/test262/ch11/11.10/11.10.2/S11.10.2_A3_T2.3.js
new file mode 100644
index 000000000..7944312eb
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.10/11.10.2/S11.10.2_A3_T2.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.
+
+/**
+ * Operator x ^ y returns ToNumber(x) ^ ToNumber(y)
+ *
+ * @path ch11/11.10/11.10.2/S11.10.2_A3_T2.3.js
+ * @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/js/src/tests/test262/ch11/11.10/11.10.2/S11.10.2_A3_T2.4.js b/js/src/tests/test262/ch11/11.10/11.10.2/S11.10.2_A3_T2.4.js
new file mode 100644
index 000000000..6578ce84d
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.10/11.10.2/S11.10.2_A3_T2.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.
+
+/**
+ * Operator x ^ y returns ToNumber(x) ^ ToNumber(y)
+ *
+ * @path ch11/11.10/11.10.2/S11.10.2_A3_T2.4.js
+ * @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/js/src/tests/test262/ch11/11.10/11.10.2/S11.10.2_A3_T2.5.js b/js/src/tests/test262/ch11/11.10/11.10.2/S11.10.2_A3_T2.5.js
new file mode 100644
index 000000000..2e80dfef2
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.10/11.10.2/S11.10.2_A3_T2.5.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.
+
+/**
+ * Operator x ^ y returns ToNumber(x) ^ ToNumber(y)
+ *
+ * @path ch11/11.10/11.10.2/S11.10.2_A3_T2.5.js
+ * @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/js/src/tests/test262/ch11/11.10/11.10.2/S11.10.2_A3_T2.6.js b/js/src/tests/test262/ch11/11.10/11.10.2/S11.10.2_A3_T2.6.js
new file mode 100644
index 000000000..b433b597e
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.10/11.10.2/S11.10.2_A3_T2.6.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.
+
+/**
+ * Operator x ^ y returns ToNumber(x) ^ ToNumber(y)
+ *
+ * @path ch11/11.10/11.10.2/S11.10.2_A3_T2.6.js
+ * @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/js/src/tests/test262/ch11/11.10/11.10.2/S11.10.2_A3_T2.7.js b/js/src/tests/test262/ch11/11.10/11.10.2/S11.10.2_A3_T2.7.js
new file mode 100644
index 000000000..17996c7b8
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.10/11.10.2/S11.10.2_A3_T2.7.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.
+
+/**
+ * Operator x ^ y returns ToNumber(x) ^ ToNumber(y)
+ *
+ * @path ch11/11.10/11.10.2/S11.10.2_A3_T2.7.js
+ * @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/js/src/tests/test262/ch11/11.10/11.10.2/S11.10.2_A3_T2.8.js b/js/src/tests/test262/ch11/11.10/11.10.2/S11.10.2_A3_T2.8.js
new file mode 100644
index 000000000..36c1c1d23
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.10/11.10.2/S11.10.2_A3_T2.8.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.
+
+/**
+ * Operator x ^ y returns ToNumber(x) ^ ToNumber(y)
+ *
+ * @path ch11/11.10/11.10.2/S11.10.2_A3_T2.8.js
+ * @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/js/src/tests/test262/ch11/11.10/11.10.2/S11.10.2_A3_T2.9.js b/js/src/tests/test262/ch11/11.10/11.10.2/S11.10.2_A3_T2.9.js
new file mode 100644
index 000000000..6a9d6cb0d
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.10/11.10.2/S11.10.2_A3_T2.9.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.
+
+/**
+ * Operator x ^ y returns ToNumber(x) ^ ToNumber(y)
+ *
+ * @path ch11/11.10/11.10.2/S11.10.2_A3_T2.9.js
+ * @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/js/src/tests/test262/ch11/11.10/11.10.2/browser.js b/js/src/tests/test262/ch11/11.10/11.10.2/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.10/11.10.2/browser.js
diff --git a/js/src/tests/test262/ch11/11.10/11.10.2/shell.js b/js/src/tests/test262/ch11/11.10/11.10.2/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.10/11.10.2/shell.js
diff --git a/js/src/tests/test262/ch11/11.10/11.10.3/S11.10.3_A1.js b/js/src/tests/test262/ch11/11.10/11.10.3/S11.10.3_A1.js
new file mode 100644
index 000000000..193860824
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.10/11.10.3/S11.10.3_A1.js
@@ -0,0 +1,61 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * White Space and Line Terminator between BitwiseORExpression and "|" or between "|" and BitwiseXORExpression are allowed
+ *
+ * @path ch11/11.10/11.10.3/S11.10.3_A1.js
+ * @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/js/src/tests/test262/ch11/11.10/11.10.3/S11.10.3_A2.1_T1.js b/js/src/tests/test262/ch11/11.10/11.10.3/S11.10.3_A2.1_T1.js
new file mode 100644
index 000000000..4c39440fe
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.10/11.10.3/S11.10.3_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.
+
+/**
+ * Operator x | y uses GetValue
+ *
+ * @path ch11/11.10/11.10.3/S11.10.3_A2.1_T1.js
+ * @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/js/src/tests/test262/ch11/11.10/11.10.3/S11.10.3_A2.1_T2.js b/js/src/tests/test262/ch11/11.10/11.10.3/S11.10.3_A2.1_T2.js
new file mode 100644
index 000000000..38886529f
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.10/11.10.3/S11.10.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.
+
+/**
+ * Operator x | y uses GetValue
+ *
+ * @path ch11/11.10/11.10.3/S11.10.3_A2.1_T2.js
+ * @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/js/src/tests/test262/ch11/11.10/11.10.3/S11.10.3_A2.1_T3.js b/js/src/tests/test262/ch11/11.10/11.10.3/S11.10.3_A2.1_T3.js
new file mode 100644
index 000000000..313ea9588
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.10/11.10.3/S11.10.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.
+
+/**
+ * Operator x | y uses GetValue
+ *
+ * @path ch11/11.10/11.10.3/S11.10.3_A2.1_T3.js
+ * @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/js/src/tests/test262/ch11/11.10/11.10.3/S11.10.3_A2.2_T1.js b/js/src/tests/test262/ch11/11.10/11.10.3/S11.10.3_A2.2_T1.js
new file mode 100644
index 000000000..1c7331411
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.10/11.10.3/S11.10.3_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.
+
+/**
+ * Operator x | y uses [[Default Value]]
+ *
+ * @path ch11/11.10/11.10.3/S11.10.3_A2.2_T1.js
+ * @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/js/src/tests/test262/ch11/11.10/11.10.3/S11.10.3_A2.3_T1.js b/js/src/tests/test262/ch11/11.10/11.10.3/S11.10.3_A2.3_T1.js
new file mode 100644
index 000000000..fe60b24d1
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.10/11.10.3/S11.10.3_A2.3_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.
+
+/**
+ * ToInt32(first expression) is called first, and then ToInt32(second expression)
+ *
+ * @path ch11/11.10/11.10.3/S11.10.3_A2.3_T1.js
+ * @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/js/src/tests/test262/ch11/11.10/11.10.3/S11.10.3_A2.4_T1.js b/js/src/tests/test262/ch11/11.10/11.10.3/S11.10.3_A2.4_T1.js
new file mode 100644
index 000000000..4c5705d00
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.10/11.10.3/S11.10.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.
+
+/**
+ * First expression is evaluated first, and then second expression
+ *
+ * @path ch11/11.10/11.10.3/S11.10.3_A2.4_T1.js
+ * @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/js/src/tests/test262/ch11/11.10/11.10.3/S11.10.3_A2.4_T2.js b/js/src/tests/test262/ch11/11.10/11.10.3/S11.10.3_A2.4_T2.js
new file mode 100644
index 000000000..886ae2af5
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.10/11.10.3/S11.10.3_A2.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.
+
+/**
+ * First expression is evaluated first, and then second expression
+ *
+ * @path ch11/11.10/11.10.3/S11.10.3_A2.4_T2.js
+ * @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/js/src/tests/test262/ch11/11.10/11.10.3/S11.10.3_A2.4_T3.js b/js/src/tests/test262/ch11/11.10/11.10.3/S11.10.3_A2.4_T3.js
new file mode 100644
index 000000000..975bba911
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.10/11.10.3/S11.10.3_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.
+
+/**
+ * First expression is evaluated first, and then second expression
+ *
+ * @path ch11/11.10/11.10.3/S11.10.3_A2.4_T3.js
+ * @description Checking with undeclarated variables
+ * @noStrict
+ */
+
+//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/js/src/tests/test262/ch11/11.10/11.10.3/S11.10.3_A3_T1.1.js b/js/src/tests/test262/ch11/11.10/11.10.3/S11.10.3_A3_T1.1.js
new file mode 100644
index 000000000..bdf1dddd2
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.10/11.10.3/S11.10.3_A3_T1.1.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.
+
+/**
+ * Operator x | y returns ToNumber(x) | ToNumber(y)
+ *
+ * @path ch11/11.10/11.10.3/S11.10.3_A3_T1.1.js
+ * @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/js/src/tests/test262/ch11/11.10/11.10.3/S11.10.3_A3_T1.2.js b/js/src/tests/test262/ch11/11.10/11.10.3/S11.10.3_A3_T1.2.js
new file mode 100644
index 000000000..057a8fd55
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.10/11.10.3/S11.10.3_A3_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.
+
+/**
+ * Operator x | y returns ToNumber(x) | ToNumber(y)
+ *
+ * @path ch11/11.10/11.10.3/S11.10.3_A3_T1.2.js
+ * @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/js/src/tests/test262/ch11/11.10/11.10.3/S11.10.3_A3_T1.3.js b/js/src/tests/test262/ch11/11.10/11.10.3/S11.10.3_A3_T1.3.js
new file mode 100644
index 000000000..f62798951
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.10/11.10.3/S11.10.3_A3_T1.3.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.
+
+/**
+ * Operator x | y returns ToNumber(x) | ToNumber(y)
+ *
+ * @path ch11/11.10/11.10.3/S11.10.3_A3_T1.3.js
+ * @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/js/src/tests/test262/ch11/11.10/11.10.3/S11.10.3_A3_T1.4.js b/js/src/tests/test262/ch11/11.10/11.10.3/S11.10.3_A3_T1.4.js
new file mode 100644
index 000000000..1fcf3aea4
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.10/11.10.3/S11.10.3_A3_T1.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.
+
+/**
+ * Operator x | y returns ToNumber(x) | ToNumber(y)
+ *
+ * @path ch11/11.10/11.10.3/S11.10.3_A3_T1.4.js
+ * @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/js/src/tests/test262/ch11/11.10/11.10.3/S11.10.3_A3_T1.5.js b/js/src/tests/test262/ch11/11.10/11.10.3/S11.10.3_A3_T1.5.js
new file mode 100644
index 000000000..c3df41a2c
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.10/11.10.3/S11.10.3_A3_T1.5.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.
+
+/**
+ * Operator x | y returns ToNumber(x) | ToNumber(y)
+ *
+ * @path ch11/11.10/11.10.3/S11.10.3_A3_T1.5.js
+ * @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/js/src/tests/test262/ch11/11.10/11.10.3/S11.10.3_A3_T2.1.js b/js/src/tests/test262/ch11/11.10/11.10.3/S11.10.3_A3_T2.1.js
new file mode 100644
index 000000000..a54f2dbdf
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.10/11.10.3/S11.10.3_A3_T2.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.
+
+/**
+ * Operator x | y returns ToNumber(x) | ToNumber(y)
+ *
+ * @path ch11/11.10/11.10.3/S11.10.3_A3_T2.1.js
+ * @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/js/src/tests/test262/ch11/11.10/11.10.3/S11.10.3_A3_T2.2.js b/js/src/tests/test262/ch11/11.10/11.10.3/S11.10.3_A3_T2.2.js
new file mode 100644
index 000000000..78795a543
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.10/11.10.3/S11.10.3_A3_T2.2.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.
+
+/**
+ * Operator x | y returns ToNumber(x) | ToNumber(y)
+ *
+ * @path ch11/11.10/11.10.3/S11.10.3_A3_T2.2.js
+ * @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/js/src/tests/test262/ch11/11.10/11.10.3/S11.10.3_A3_T2.3.js b/js/src/tests/test262/ch11/11.10/11.10.3/S11.10.3_A3_T2.3.js
new file mode 100644
index 000000000..c01d6e726
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.10/11.10.3/S11.10.3_A3_T2.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.
+
+/**
+ * Operator x | y returns ToNumber(x) | ToNumber(y)
+ *
+ * @path ch11/11.10/11.10.3/S11.10.3_A3_T2.3.js
+ * @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/js/src/tests/test262/ch11/11.10/11.10.3/S11.10.3_A3_T2.4.js b/js/src/tests/test262/ch11/11.10/11.10.3/S11.10.3_A3_T2.4.js
new file mode 100644
index 000000000..eb7d1432a
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.10/11.10.3/S11.10.3_A3_T2.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.
+
+/**
+ * Operator x | y returns ToNumber(x) | ToNumber(y)
+ *
+ * @path ch11/11.10/11.10.3/S11.10.3_A3_T2.4.js
+ * @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/js/src/tests/test262/ch11/11.10/11.10.3/S11.10.3_A3_T2.5.js b/js/src/tests/test262/ch11/11.10/11.10.3/S11.10.3_A3_T2.5.js
new file mode 100644
index 000000000..3195c149d
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.10/11.10.3/S11.10.3_A3_T2.5.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.
+
+/**
+ * Operator x | y returns ToNumber(x) | ToNumber(y)
+ *
+ * @path ch11/11.10/11.10.3/S11.10.3_A3_T2.5.js
+ * @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/js/src/tests/test262/ch11/11.10/11.10.3/S11.10.3_A3_T2.6.js b/js/src/tests/test262/ch11/11.10/11.10.3/S11.10.3_A3_T2.6.js
new file mode 100644
index 000000000..c6aeffafd
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.10/11.10.3/S11.10.3_A3_T2.6.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.
+
+/**
+ * Operator x | y returns ToNumber(x) | ToNumber(y)
+ *
+ * @path ch11/11.10/11.10.3/S11.10.3_A3_T2.6.js
+ * @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/js/src/tests/test262/ch11/11.10/11.10.3/S11.10.3_A3_T2.7.js b/js/src/tests/test262/ch11/11.10/11.10.3/S11.10.3_A3_T2.7.js
new file mode 100644
index 000000000..fc0e39bb9
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.10/11.10.3/S11.10.3_A3_T2.7.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.
+
+/**
+ * Operator x | y returns ToNumber(x) | ToNumber(y)
+ *
+ * @path ch11/11.10/11.10.3/S11.10.3_A3_T2.7.js
+ * @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/js/src/tests/test262/ch11/11.10/11.10.3/S11.10.3_A3_T2.8.js b/js/src/tests/test262/ch11/11.10/11.10.3/S11.10.3_A3_T2.8.js
new file mode 100644
index 000000000..4208476dd
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.10/11.10.3/S11.10.3_A3_T2.8.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.
+
+/**
+ * Operator x | y returns ToNumber(x) | ToNumber(y)
+ *
+ * @path ch11/11.10/11.10.3/S11.10.3_A3_T2.8.js
+ * @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/js/src/tests/test262/ch11/11.10/11.10.3/S11.10.3_A3_T2.9.js b/js/src/tests/test262/ch11/11.10/11.10.3/S11.10.3_A3_T2.9.js
new file mode 100644
index 000000000..2c892773b
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.10/11.10.3/S11.10.3_A3_T2.9.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.
+
+/**
+ * Operator x | y returns ToNumber(x) | ToNumber(y)
+ *
+ * @path ch11/11.10/11.10.3/S11.10.3_A3_T2.9.js
+ * @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/js/src/tests/test262/ch11/11.10/11.10.3/browser.js b/js/src/tests/test262/ch11/11.10/11.10.3/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.10/11.10.3/browser.js
diff --git a/js/src/tests/test262/ch11/11.10/11.10.3/shell.js b/js/src/tests/test262/ch11/11.10/11.10.3/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.10/11.10.3/shell.js
diff --git a/js/src/tests/test262/ch11/11.10/browser.js b/js/src/tests/test262/ch11/11.10/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.10/browser.js
diff --git a/js/src/tests/test262/ch11/11.10/shell.js b/js/src/tests/test262/ch11/11.10/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.10/shell.js
diff --git a/js/src/tests/test262/ch11/11.11/11.11.1/S11.11.1_A1.js b/js/src/tests/test262/ch11/11.11/11.11.1/S11.11.1_A1.js
new file mode 100644
index 000000000..71ff7400e
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.11/11.11.1/S11.11.1_A1.js
@@ -0,0 +1,61 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * White Space and Line Terminator between LogicalANDExpression and "&&" or between "&&" and BitwiseORExpression are allowed
+ *
+ * @path ch11/11.11/11.11.1/S11.11.1_A1.js
+ * @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/js/src/tests/test262/ch11/11.11/11.11.1/S11.11.1_A2.1_T1.js b/js/src/tests/test262/ch11/11.11/11.11.1/S11.11.1_A2.1_T1.js
new file mode 100644
index 000000000..f637f4d73
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.11/11.11.1/S11.11.1_A2.1_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.
+
+/**
+ * Operator x && y uses GetValue
+ *
+ * @path ch11/11.11/11.11.1/S11.11.1_A2.1_T1.js
+ * @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/js/src/tests/test262/ch11/11.11/11.11.1/S11.11.1_A2.1_T2.js b/js/src/tests/test262/ch11/11.11/11.11.1/S11.11.1_A2.1_T2.js
new file mode 100644
index 000000000..3c3585d1e
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.11/11.11.1/S11.11.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.
+
+/**
+ * Operator x && y uses GetValue
+ *
+ * @path ch11/11.11/11.11.1/S11.11.1_A2.1_T2.js
+ * @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/js/src/tests/test262/ch11/11.11/11.11.1/S11.11.1_A2.1_T3.js b/js/src/tests/test262/ch11/11.11/11.11.1/S11.11.1_A2.1_T3.js
new file mode 100644
index 000000000..65eb292aa
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.11/11.11.1/S11.11.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.
+
+/**
+ * Operator x && y uses GetValue
+ *
+ * @path ch11/11.11/11.11.1/S11.11.1_A2.1_T3.js
+ * @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/js/src/tests/test262/ch11/11.11/11.11.1/S11.11.1_A2.1_T4.js b/js/src/tests/test262/ch11/11.11/11.11.1/S11.11.1_A2.1_T4.js
new file mode 100644
index 000000000..e58d74ed2
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.11/11.11.1/S11.11.1_A2.1_T4.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.
+
+/**
+ * Operator x && y uses GetValue
+ *
+ * @path ch11/11.11/11.11.1/S11.11.1_A2.1_T4.js
+ * @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/js/src/tests/test262/ch11/11.11/11.11.1/S11.11.1_A2.4_T1.js b/js/src/tests/test262/ch11/11.11/11.11.1/S11.11.1_A2.4_T1.js
new file mode 100644
index 000000000..44fad0ce8
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.11/11.11.1/S11.11.1_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.
+
+/**
+ * First expression is evaluated first, and then second expression
+ *
+ * @path ch11/11.11/11.11.1/S11.11.1_A2.4_T1.js
+ * @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/js/src/tests/test262/ch11/11.11/11.11.1/S11.11.1_A2.4_T2.js b/js/src/tests/test262/ch11/11.11/11.11.1/S11.11.1_A2.4_T2.js
new file mode 100644
index 000000000..b5efeee14
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.11/11.11.1/S11.11.1_A2.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.
+
+/**
+ * First expression is evaluated first, and then second expression
+ *
+ * @path ch11/11.11/11.11.1/S11.11.1_A2.4_T2.js
+ * @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/js/src/tests/test262/ch11/11.11/11.11.1/S11.11.1_A2.4_T3.js b/js/src/tests/test262/ch11/11.11/11.11.1/S11.11.1_A2.4_T3.js
new file mode 100644
index 000000000..cf973f0ff
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.11/11.11.1/S11.11.1_A2.4_T3.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.
+
+/**
+ * First expression is evaluated first, and then second expression
+ *
+ * @path ch11/11.11/11.11.1/S11.11.1_A2.4_T3.js
+ * @description Checking with undeclarated variables
+ * @noStrict
+ */
+
+//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/js/src/tests/test262/ch11/11.11/11.11.1/S11.11.1_A3_T1.js b/js/src/tests/test262/ch11/11.11/11.11.1/S11.11.1_A3_T1.js
new file mode 100644
index 000000000..8274f3c61
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.11/11.11.1/S11.11.1_A3_T1.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.
+
+/**
+ * If ToBoolean(x) is false, return x
+ *
+ * @path ch11/11.11/11.11.1/S11.11.1_A3_T1.js
+ * @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/js/src/tests/test262/ch11/11.11/11.11.1/S11.11.1_A3_T2.js b/js/src/tests/test262/ch11/11.11/11.11.1/S11.11.1_A3_T2.js
new file mode 100644
index 000000000..01d206b5e
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.11/11.11.1/S11.11.1_A3_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.
+
+/**
+ * If ToBoolean(x) is false, return x
+ *
+ * @path ch11/11.11/11.11.1/S11.11.1_A3_T2.js
+ * @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/js/src/tests/test262/ch11/11.11/11.11.1/S11.11.1_A3_T3.js b/js/src/tests/test262/ch11/11.11/11.11.1/S11.11.1_A3_T3.js
new file mode 100644
index 000000000..034f9e2d8
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.11/11.11.1/S11.11.1_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.
+
+/**
+ * If ToBoolean(x) is false, return x
+ *
+ * @path ch11/11.11/11.11.1/S11.11.1_A3_T3.js
+ * @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/js/src/tests/test262/ch11/11.11/11.11.1/S11.11.1_A3_T4.js b/js/src/tests/test262/ch11/11.11/11.11.1/S11.11.1_A3_T4.js
new file mode 100644
index 000000000..1a10a4ce4
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.11/11.11.1/S11.11.1_A3_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.
+
+/**
+ * If ToBoolean(x) is false, return x
+ *
+ * @path ch11/11.11/11.11.1/S11.11.1_A3_T4.js
+ * @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/js/src/tests/test262/ch11/11.11/11.11.1/S11.11.1_A4_T1.js b/js/src/tests/test262/ch11/11.11/11.11.1/S11.11.1_A4_T1.js
new file mode 100644
index 000000000..82f45be1f
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.11/11.11.1/S11.11.1_A4_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.
+
+/**
+ * If ToBoolean(x) is true, return y
+ *
+ * @path ch11/11.11/11.11.1/S11.11.1_A4_T1.js
+ * @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/js/src/tests/test262/ch11/11.11/11.11.1/S11.11.1_A4_T2.js b/js/src/tests/test262/ch11/11.11/11.11.1/S11.11.1_A4_T2.js
new file mode 100644
index 000000000..5aaea6dce
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.11/11.11.1/S11.11.1_A4_T2.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.
+
+/**
+ * If ToBoolean(x) is true, return y
+ *
+ * @path ch11/11.11/11.11.1/S11.11.1_A4_T2.js
+ * @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/js/src/tests/test262/ch11/11.11/11.11.1/S11.11.1_A4_T3.js b/js/src/tests/test262/ch11/11.11/11.11.1/S11.11.1_A4_T3.js
new file mode 100644
index 000000000..1ae1808d1
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.11/11.11.1/S11.11.1_A4_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.
+
+/**
+ * If ToBoolean(x) is true, return y
+ *
+ * @path ch11/11.11/11.11.1/S11.11.1_A4_T3.js
+ * @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/js/src/tests/test262/ch11/11.11/11.11.1/S11.11.1_A4_T4.js b/js/src/tests/test262/ch11/11.11/11.11.1/S11.11.1_A4_T4.js
new file mode 100644
index 000000000..109744386
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.11/11.11.1/S11.11.1_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.
+
+/**
+ * If ToBoolean(x) is true, return y
+ *
+ * @path ch11/11.11/11.11.1/S11.11.1_A4_T4.js
+ * @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/js/src/tests/test262/ch11/11.11/11.11.1/browser.js b/js/src/tests/test262/ch11/11.11/11.11.1/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.11/11.11.1/browser.js
diff --git a/js/src/tests/test262/ch11/11.11/11.11.1/shell.js b/js/src/tests/test262/ch11/11.11/11.11.1/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.11/11.11.1/shell.js
diff --git a/js/src/tests/test262/ch11/11.11/11.11.2/S11.11.2_A1.js b/js/src/tests/test262/ch11/11.11/11.11.2/S11.11.2_A1.js
new file mode 100644
index 000000000..904d903e8
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.11/11.11.2/S11.11.2_A1.js
@@ -0,0 +1,61 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * White Space and Line Terminator between LogicalORExpression and "||" or between "||" and LogicalANDExpression are allowed
+ *
+ * @path ch11/11.11/11.11.2/S11.11.2_A1.js
+ * @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/js/src/tests/test262/ch11/11.11/11.11.2/S11.11.2_A2.1_T1.js b/js/src/tests/test262/ch11/11.11/11.11.2/S11.11.2_A2.1_T1.js
new file mode 100644
index 000000000..2c79c2a5c
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.11/11.11.2/S11.11.2_A2.1_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.
+
+/**
+ * Operator x || y uses GetValue
+ *
+ * @path ch11/11.11/11.11.2/S11.11.2_A2.1_T1.js
+ * @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/js/src/tests/test262/ch11/11.11/11.11.2/S11.11.2_A2.1_T2.js b/js/src/tests/test262/ch11/11.11/11.11.2/S11.11.2_A2.1_T2.js
new file mode 100644
index 000000000..7c3e74364
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.11/11.11.2/S11.11.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.
+
+/**
+ * Operator x || y uses GetValue
+ *
+ * @path ch11/11.11/11.11.2/S11.11.2_A2.1_T2.js
+ * @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/js/src/tests/test262/ch11/11.11/11.11.2/S11.11.2_A2.1_T3.js b/js/src/tests/test262/ch11/11.11/11.11.2/S11.11.2_A2.1_T3.js
new file mode 100644
index 000000000..1535d1ca6
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.11/11.11.2/S11.11.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.
+
+/**
+ * Operator x || y uses GetValue
+ *
+ * @path ch11/11.11/11.11.2/S11.11.2_A2.1_T3.js
+ * @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/js/src/tests/test262/ch11/11.11/11.11.2/S11.11.2_A2.1_T4.js b/js/src/tests/test262/ch11/11.11/11.11.2/S11.11.2_A2.1_T4.js
new file mode 100644
index 000000000..47101ac90
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.11/11.11.2/S11.11.2_A2.1_T4.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.
+
+/**
+ * Operator x || y uses GetValue
+ *
+ * @path ch11/11.11/11.11.2/S11.11.2_A2.1_T4.js
+ * @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/js/src/tests/test262/ch11/11.11/11.11.2/S11.11.2_A2.4_T1.js b/js/src/tests/test262/ch11/11.11/11.11.2/S11.11.2_A2.4_T1.js
new file mode 100644
index 000000000..fd60270da
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.11/11.11.2/S11.11.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.
+
+/**
+ * First expression is evaluated first, and then second expression
+ *
+ * @path ch11/11.11/11.11.2/S11.11.2_A2.4_T1.js
+ * @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/js/src/tests/test262/ch11/11.11/11.11.2/S11.11.2_A2.4_T2.js b/js/src/tests/test262/ch11/11.11/11.11.2/S11.11.2_A2.4_T2.js
new file mode 100644
index 000000000..5d2ca6568
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.11/11.11.2/S11.11.2_A2.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.
+
+/**
+ * First expression is evaluated first, and then second expression
+ *
+ * @path ch11/11.11/11.11.2/S11.11.2_A2.4_T2.js
+ * @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/js/src/tests/test262/ch11/11.11/11.11.2/S11.11.2_A2.4_T3.js b/js/src/tests/test262/ch11/11.11/11.11.2/S11.11.2_A2.4_T3.js
new file mode 100644
index 000000000..c818312c8
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.11/11.11.2/S11.11.2_A2.4_T3.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.
+
+/**
+ * First expression is evaluated first, and then second expression
+ *
+ * @path ch11/11.11/11.11.2/S11.11.2_A2.4_T3.js
+ * @description Checking with undeclarated variables
+ * @noStrict
+ */
+
+//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/js/src/tests/test262/ch11/11.11/11.11.2/S11.11.2_A3_T1.js b/js/src/tests/test262/ch11/11.11/11.11.2/S11.11.2_A3_T1.js
new file mode 100644
index 000000000..d03958565
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.11/11.11.2/S11.11.2_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.
+
+/**
+ * If ToBoolean(x) is false, return y
+ *
+ * @path ch11/11.11/11.11.2/S11.11.2_A3_T1.js
+ * @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/js/src/tests/test262/ch11/11.11/11.11.2/S11.11.2_A3_T2.js b/js/src/tests/test262/ch11/11.11/11.11.2/S11.11.2_A3_T2.js
new file mode 100644
index 000000000..dccc098d2
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.11/11.11.2/S11.11.2_A3_T2.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.
+
+/**
+ * If ToBoolean(x) is false, return y
+ *
+ * @path ch11/11.11/11.11.2/S11.11.2_A3_T2.js
+ * @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/js/src/tests/test262/ch11/11.11/11.11.2/S11.11.2_A3_T3.js b/js/src/tests/test262/ch11/11.11/11.11.2/S11.11.2_A3_T3.js
new file mode 100644
index 000000000..6e500ede8
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.11/11.11.2/S11.11.2_A3_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.
+
+/**
+ * If ToBoolean(x) is false, return y
+ *
+ * @path ch11/11.11/11.11.2/S11.11.2_A3_T3.js
+ * @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/js/src/tests/test262/ch11/11.11/11.11.2/S11.11.2_A3_T4.js b/js/src/tests/test262/ch11/11.11/11.11.2/S11.11.2_A3_T4.js
new file mode 100644
index 000000000..15b5579af
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.11/11.11.2/S11.11.2_A3_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.
+
+/**
+ * If ToBoolean(x) is false, return y
+ *
+ * @path ch11/11.11/11.11.2/S11.11.2_A3_T4.js
+ * @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/js/src/tests/test262/ch11/11.11/11.11.2/S11.11.2_A4_T1.js b/js/src/tests/test262/ch11/11.11/11.11.2/S11.11.2_A4_T1.js
new file mode 100644
index 000000000..567fbf522
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.11/11.11.2/S11.11.2_A4_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.
+
+/**
+ * If ToBoolean(x) is true, return x
+ *
+ * @path ch11/11.11/11.11.2/S11.11.2_A4_T1.js
+ * @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/js/src/tests/test262/ch11/11.11/11.11.2/S11.11.2_A4_T2.js b/js/src/tests/test262/ch11/11.11/11.11.2/S11.11.2_A4_T2.js
new file mode 100644
index 000000000..ff3c67a64
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.11/11.11.2/S11.11.2_A4_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.
+
+/**
+ * If ToBoolean(x) is true, return x
+ *
+ * @path ch11/11.11/11.11.2/S11.11.2_A4_T2.js
+ * @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/js/src/tests/test262/ch11/11.11/11.11.2/S11.11.2_A4_T3.js b/js/src/tests/test262/ch11/11.11/11.11.2/S11.11.2_A4_T3.js
new file mode 100644
index 000000000..ad71dfed7
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.11/11.11.2/S11.11.2_A4_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.
+
+/**
+ * If ToBoolean(x) is true, return x
+ *
+ * @path ch11/11.11/11.11.2/S11.11.2_A4_T3.js
+ * @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/js/src/tests/test262/ch11/11.11/11.11.2/S11.11.2_A4_T4.js b/js/src/tests/test262/ch11/11.11/11.11.2/S11.11.2_A4_T4.js
new file mode 100644
index 000000000..d37b2ea59
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.11/11.11.2/S11.11.2_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.
+
+/**
+ * If ToBoolean(x) is true, return x
+ *
+ * @path ch11/11.11/11.11.2/S11.11.2_A4_T4.js
+ * @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/js/src/tests/test262/ch11/11.11/11.11.2/browser.js b/js/src/tests/test262/ch11/11.11/11.11.2/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.11/11.11.2/browser.js
diff --git a/js/src/tests/test262/ch11/11.11/11.11.2/shell.js b/js/src/tests/test262/ch11/11.11/11.11.2/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.11/11.11.2/shell.js
diff --git a/js/src/tests/test262/ch11/11.11/browser.js b/js/src/tests/test262/ch11/11.11/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.11/browser.js
diff --git a/js/src/tests/test262/ch11/11.11/shell.js b/js/src/tests/test262/ch11/11.11/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.11/shell.js
diff --git a/js/src/tests/test262/ch11/11.12/S11.12_A1.js b/js/src/tests/test262/ch11/11.12/S11.12_A1.js
new file mode 100644
index 000000000..b813aeb7f
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.12/S11.12_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.
+
+/**
+ * White Space and Line Terminator between LogicalORExpression and "?" or between "?" and AssignmentExpression or between AssignmentExpression and ":" or between ":" and AssignmentExpression are allowed
+ *
+ * @path ch11/11.12/S11.12_A1.js
+ * @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/js/src/tests/test262/ch11/11.12/S11.12_A2.1_T1.js b/js/src/tests/test262/ch11/11.12/S11.12_A2.1_T1.js
new file mode 100644
index 000000000..2a9e568a9
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.12/S11.12_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.
+
+/**
+ * Operator x ? y : z uses GetValue
+ *
+ * @path ch11/11.12/S11.12_A2.1_T1.js
+ * @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/js/src/tests/test262/ch11/11.12/S11.12_A2.1_T2.js b/js/src/tests/test262/ch11/11.12/S11.12_A2.1_T2.js
new file mode 100644
index 000000000..465976c49
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.12/S11.12_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.
+
+/**
+ * Operator x ? y : z uses GetValue
+ *
+ * @path ch11/11.12/S11.12_A2.1_T2.js
+ * @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/js/src/tests/test262/ch11/11.12/S11.12_A2.1_T3.js b/js/src/tests/test262/ch11/11.12/S11.12_A2.1_T3.js
new file mode 100644
index 000000000..1e59cd63a
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.12/S11.12_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.
+
+/**
+ * Operator x ? y : z uses GetValue
+ *
+ * @path ch11/11.12/S11.12_A2.1_T3.js
+ * @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/js/src/tests/test262/ch11/11.12/S11.12_A2.1_T4.js b/js/src/tests/test262/ch11/11.12/S11.12_A2.1_T4.js
new file mode 100644
index 000000000..0d3c01b29
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.12/S11.12_A2.1_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.
+
+/**
+ * Operator x ? y : z uses GetValue
+ *
+ * @path ch11/11.12/S11.12_A2.1_T4.js
+ * @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/js/src/tests/test262/ch11/11.12/S11.12_A2.1_T5.js b/js/src/tests/test262/ch11/11.12/S11.12_A2.1_T5.js
new file mode 100644
index 000000000..05df26fa5
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.12/S11.12_A2.1_T5.js
@@ -0,0 +1,16 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * Operator x ? y : z uses GetValue
+ *
+ * @path ch11/11.12/S11.12_A2.1_T5.js
+ * @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/js/src/tests/test262/ch11/11.12/S11.12_A2.1_T6.js b/js/src/tests/test262/ch11/11.12/S11.12_A2.1_T6.js
new file mode 100644
index 000000000..f25c22a52
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.12/S11.12_A2.1_T6.js
@@ -0,0 +1,16 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * Operator x ? y : z uses GetValue
+ *
+ * @path ch11/11.12/S11.12_A2.1_T6.js
+ * @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/js/src/tests/test262/ch11/11.12/S11.12_A3_T1.js b/js/src/tests/test262/ch11/11.12/S11.12_A3_T1.js
new file mode 100644
index 000000000..6614bb7f2
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.12/S11.12_A3_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.
+
+/**
+ * If ToBoolean(x) is false, return z
+ *
+ * @path ch11/11.12/S11.12_A3_T1.js
+ * @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/js/src/tests/test262/ch11/11.12/S11.12_A3_T2.js b/js/src/tests/test262/ch11/11.12/S11.12_A3_T2.js
new file mode 100644
index 000000000..311cce7d1
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.12/S11.12_A3_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.
+
+/**
+ * If ToBoolean(x) is false, return z
+ *
+ * @path ch11/11.12/S11.12_A3_T2.js
+ * @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/js/src/tests/test262/ch11/11.12/S11.12_A3_T3.js b/js/src/tests/test262/ch11/11.12/S11.12_A3_T3.js
new file mode 100644
index 000000000..644a58fd0
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.12/S11.12_A3_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.
+
+/**
+ * If ToBoolean(x) is false, return z
+ *
+ * @path ch11/11.12/S11.12_A3_T3.js
+ * @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/js/src/tests/test262/ch11/11.12/S11.12_A3_T4.js b/js/src/tests/test262/ch11/11.12/S11.12_A3_T4.js
new file mode 100644
index 000000000..296ae94eb
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.12/S11.12_A3_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.
+
+/**
+ * If ToBoolean(x) is false, return z
+ *
+ * @path ch11/11.12/S11.12_A3_T4.js
+ * @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/js/src/tests/test262/ch11/11.12/S11.12_A4_T1.js b/js/src/tests/test262/ch11/11.12/S11.12_A4_T1.js
new file mode 100644
index 000000000..588d90141
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.12/S11.12_A4_T1.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.
+
+/**
+ * If ToBoolean(x) is true, return y
+ *
+ * @path ch11/11.12/S11.12_A4_T1.js
+ * @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/js/src/tests/test262/ch11/11.12/S11.12_A4_T2.js b/js/src/tests/test262/ch11/11.12/S11.12_A4_T2.js
new file mode 100644
index 000000000..eda208159
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.12/S11.12_A4_T2.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.
+
+/**
+ * If ToBoolean(x) is true, return y
+ *
+ * @path ch11/11.12/S11.12_A4_T2.js
+ * @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/js/src/tests/test262/ch11/11.12/S11.12_A4_T3.js b/js/src/tests/test262/ch11/11.12/S11.12_A4_T3.js
new file mode 100644
index 000000000..168902e13
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.12/S11.12_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.
+
+/**
+ * If ToBoolean(x) is true, return y
+ *
+ * @path ch11/11.12/S11.12_A4_T3.js
+ * @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/js/src/tests/test262/ch11/11.12/S11.12_A4_T4.js b/js/src/tests/test262/ch11/11.12/S11.12_A4_T4.js
new file mode 100644
index 000000000..c3b5f4771
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.12/S11.12_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.
+
+/**
+ * If ToBoolean(x) is true, return y
+ *
+ * @path ch11/11.12/S11.12_A4_T4.js
+ * @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/js/src/tests/test262/ch11/11.12/browser.js b/js/src/tests/test262/ch11/11.12/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.12/browser.js
diff --git a/js/src/tests/test262/ch11/11.12/shell.js b/js/src/tests/test262/ch11/11.12/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.12/shell.js
diff --git a/js/src/tests/test262/ch11/11.13/11.13.1/11.13.1-1-1.js b/js/src/tests/test262/ch11/11.13/11.13.1/11.13.1-1-1.js
new file mode 100644
index 000000000..551c80478
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.1/11.13.1-1-1.js
@@ -0,0 +1,24 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * PutValue operates only on references (see step 1)
+ *
+ * @path ch11/11.13/11.13.1/11.13.1-1-1.js
+ * @description simple assignment throws ReferenceError if LeftHandSide is not a reference (number)
+ */
+
+
+function testcase() {
+ try {
+ eval("42 = 42");
+ }
+ catch (e) {
+ if (e instanceof ReferenceError) {
+ return true;
+ }
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch11/11.13/11.13.1/11.13.1-1-2.js b/js/src/tests/test262/ch11/11.13/11.13.1/11.13.1-1-2.js
new file mode 100644
index 000000000..5abde0d6d
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.1/11.13.1-1-2.js
@@ -0,0 +1,24 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * PutValue operates only on references (see step 1).
+ *
+ * @path ch11/11.13/11.13.1/11.13.1-1-2.js
+ * @description simple assignment throws ReferenceError if LeftHandSide is not a reference (string)
+ */
+
+
+function testcase() {
+ try {
+ eval("'x' = 42");
+ }
+ catch (e) {
+ if (e instanceof ReferenceError) {
+ return true;
+ }
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch11/11.13/11.13.1/11.13.1-1-3.js b/js/src/tests/test262/ch11/11.13/11.13.1/11.13.1-1-3.js
new file mode 100644
index 000000000..1dbeb18c3
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.1/11.13.1-1-3.js
@@ -0,0 +1,24 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * PutValue operates only on references (see step 1).
+ *
+ * @path ch11/11.13/11.13.1/11.13.1-1-3.js
+ * @description simple assignment throws ReferenceError if LeftHandSide is not a reference (boolean)
+ */
+
+
+function testcase() {
+ try {
+ eval("true = 42");
+ }
+ catch (e) {
+ if (e instanceof ReferenceError) {
+ return true;
+ }
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch11/11.13/11.13.1/11.13.1-1-4.js b/js/src/tests/test262/ch11/11.13/11.13.1/11.13.1-1-4.js
new file mode 100644
index 000000000..dbbfb619b
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.1/11.13.1-1-4.js
@@ -0,0 +1,24 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * PutValue operates only on references (see step 1).
+ *
+ * @path ch11/11.13/11.13.1/11.13.1-1-4.js
+ * @description simple assignment throws ReferenceError if LeftHandSide is not a reference (null)
+ */
+
+
+function testcase() {
+ try {
+ eval("null = 42");
+ }
+ catch (e) {
+ if (e instanceof ReferenceError) {
+ return true;
+ }
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch11/11.13/11.13.1/11.13.1-1-6-s.js b/js/src/tests/test262/ch11/11.13/11.13.1/11.13.1-1-6-s.js
new file mode 100644
index 000000000..915caf590
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.1/11.13.1-1-6-s.js
@@ -0,0 +1,26 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * PutValue operates only on references (see step 3.a).
+ *
+ * @path ch11/11.13/11.13.1/11.13.1-1-6-s.js
+ * @description simple assignment throws ReferenceError if LeftHandSide is an unresolvable reference in strict mode (base obj undefined)
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ 'use strict';
+
+ try {
+ __ES3_1_test_suite_test_11_13_1_unique_id_0__.x = 42;
+ return false;
+ }
+ catch (e) {
+ return (e instanceof ReferenceError);
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch11/11.13/11.13.1/11.13.1-1-s.js b/js/src/tests/test262/ch11/11.13/11.13.1/11.13.1-1-s.js
new file mode 100644
index 000000000..5330f5411
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.1/11.13.1-1-s.js
@@ -0,0 +1,30 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch11/11.13/11.13.1/11.13.1-1-s.js
+ * @description Strict Mode - TypeError is thrown if The LeftHandSide is a reference to a data property with the attribute value {[[Writable]]:false} under strict mode
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+ var obj = {};
+ Object.defineProperty(obj, "prop", {
+ value: 10,
+ writable: false,
+ enumerable: true,
+ configurable: true
+ });
+
+ try {
+ obj.prop = 20;
+ return false;
+ } catch (e) {
+ return e instanceof TypeError && obj.prop === 10;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch11/11.13/11.13.1/11.13.1-2-s.js b/js/src/tests/test262/ch11/11.13/11.13.1/11.13.1-2-s.js
new file mode 100644
index 000000000..f16e19d18
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.1/11.13.1-2-s.js
@@ -0,0 +1,32 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch11/11.13/11.13.1/11.13.1-2-s.js
+ * @description Strict Mode - TypeError is thrown if The LeftHandSide is a reference to an accessor property with the attribute value {[[Set]]:undefined} under strict mode
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+ var obj = {};
+ Object.defineProperty(obj, "prop", {
+ get: function () {
+ return 11;
+ },
+ set: undefined,
+ enumerable: true,
+ configurable: true
+ });
+
+ try {
+ obj.prop = 20;
+ return false;
+ } catch (e) {
+ return e instanceof TypeError && obj.prop === 11;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch11/11.13/11.13.1/11.13.1-3-s.js b/js/src/tests/test262/ch11/11.13/11.13.1/11.13.1-3-s.js
new file mode 100644
index 000000000..79d23670e
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.1/11.13.1-3-s.js
@@ -0,0 +1,25 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch11/11.13/11.13.1/11.13.1-3-s.js
+ * @description Strict Mode - TypeError is thrown if The LeftHandSide is a reference to a non-existent property of an object whose [[Extensible]] internal property has the value false under strict mode
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+ var obj = {};
+ Object.preventExtensions(obj);
+
+ try {
+ obj.len = 10;
+ return false;
+ } catch (e) {
+ return e instanceof TypeError;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch11/11.13/11.13.1/11.13.1-4-1.js b/js/src/tests/test262/ch11/11.13/11.13.1/11.13.1-4-1.js
new file mode 100644
index 000000000..04e93c38d
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.1/11.13.1-4-1.js
@@ -0,0 +1,29 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * PutValue operates only on references (see step 3.b).
+ *
+ * @path ch11/11.13/11.13.1/11.13.1-4-1.js
+ * @description simple assignment creates property on the global object if LeftHandSide is an unresolvable reference
+ */
+
+
+function testcase() {
+ function foo() {
+ __ES3_1_test_suite_test_11_13_1_unique_id_3__ = 42;
+ }
+ foo();
+
+ var desc = Object.getOwnPropertyDescriptor(fnGlobalObject(), '__ES3_1_test_suite_test_11_13_1_unique_id_3__');
+ if (desc.value === 42 &&
+ desc.writable === true &&
+ desc.enumerable === true &&
+ desc.configurable === true) {
+ delete __ES3_1_test_suite_test_11_13_1_unique_id_3__;
+ return true;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch11/11.13/11.13.1/11.13.1-4-14-s.js b/js/src/tests/test262/ch11/11.13/11.13.1/11.13.1-4-14-s.js
new file mode 100644
index 000000000..e82720d70
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.1/11.13.1-4-14-s.js
@@ -0,0 +1,24 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch11/11.13/11.13.1/11.13.1-4-14-s.js
+ * @description simple assignment throws TypeError if LeftHandSide is a readonly property in strict mode (Number.MAX_VALUE)
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ 'use strict';
+
+ try {
+ Number.MAX_VALUE = 42;
+ return false;
+ }
+ catch (e) {
+ return (e instanceof TypeError);
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch11/11.13/11.13.1/11.13.1-4-27-s.js b/js/src/tests/test262/ch11/11.13/11.13.1/11.13.1-4-27-s.js
new file mode 100644
index 000000000..00da46eda
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.1/11.13.1-4-27-s.js
@@ -0,0 +1,23 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch11/11.13/11.13.1/11.13.1-4-27-s.js
+ * @description simple assignment throws TypeError if LeftHandSide is a readonly property in strict mode (Global.undefined)
+ */
+
+
+function testcase() {
+ 'use strict';
+
+ try {
+ fnGlobalObject().undefined = 42;
+ return false;
+ }
+ catch (e) {
+ return (e instanceof TypeError);
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch11/11.13/11.13.1/11.13.1-4-28-s.js b/js/src/tests/test262/ch11/11.13/11.13.1/11.13.1-4-28-s.js
new file mode 100644
index 000000000..039991a37
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.1/11.13.1-4-28-s.js
@@ -0,0 +1,23 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch11/11.13/11.13.1/11.13.1-4-28-s.js
+ * @description Strict Mode - SyntaxError is thrown if the identifier 'eval' appears as the LeftHandSideExpression of simple assignment(=) under strict mode
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+ var blah = eval;
+ try {
+ eval("var eval = 20;");
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError && blah === eval;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch11/11.13/11.13.1/11.13.1-4-28gs.js b/js/src/tests/test262/ch11/11.13/11.13.1/11.13.1-4-28gs.js
new file mode 100644
index 000000000..86867f1ba
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.1/11.13.1-4-28gs.js
@@ -0,0 +1,14 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch11/11.13/11.13.1/11.13.1-4-28gs.js
+ * @description Strict Mode - SyntaxError is thrown if the identifier 'Math.PI' appears as the LeftHandSideExpression of simple assignment(=)
+ * @onlyStrict
+ * @negative NotEarlyError
+ */
+"use strict";
+throw NotEarlyError;
+Math.PI = 20;
diff --git a/js/src/tests/test262/ch11/11.13/11.13.1/11.13.1-4-29-s.js b/js/src/tests/test262/ch11/11.13/11.13.1/11.13.1-4-29-s.js
new file mode 100644
index 000000000..c9a5a404c
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.1/11.13.1-4-29-s.js
@@ -0,0 +1,23 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch11/11.13/11.13.1/11.13.1-4-29-s.js
+ * @description Strict Mode - SyntaxError is thrown if the identifier 'arguments' appears as the LeftHandSideExpression of simple assignment(=) under strict mode
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+ var blah = arguments;
+ try {
+ eval("var arguments = 20;");
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError && blah === arguments;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch11/11.13/11.13.1/11.13.1-4-29gs.js b/js/src/tests/test262/ch11/11.13/11.13.1/11.13.1-4-29gs.js
new file mode 100644
index 000000000..86e4f59ce
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.1/11.13.1-4-29gs.js
@@ -0,0 +1,13 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch11/11.13/11.13.1/11.13.1-4-29gs.js
+ * @description Strict Mode - SyntaxError is thrown if the identifier 'Math.PI' appears as the LeftHandSideExpression of simple assignment(=)
+ * @onlyStrict
+ * @negative .
+ */
+"use strict";
+Math.PI = 20;
diff --git a/js/src/tests/test262/ch11/11.13/11.13.1/11.13.1-4-3-s.js b/js/src/tests/test262/ch11/11.13/11.13.1/11.13.1-4-3-s.js
new file mode 100644
index 000000000..ff4d1710d
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.1/11.13.1-4-3-s.js
@@ -0,0 +1,24 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch11/11.13/11.13.1/11.13.1-4-3-s.js
+ * @description simple assignment throws TypeError if LeftHandSide is a readonly property in strict mode (Global.Infinity)
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ 'use strict';
+
+ try {
+ fnGlobalObject().Infinity = 42;
+ return false;
+ }
+ catch (e) {
+ return (e instanceof TypeError);
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch11/11.13/11.13.1/11.13.1-4-30-s.js b/js/src/tests/test262/ch11/11.13/11.13.1/11.13.1-4-30-s.js
new file mode 100644
index 000000000..e494fab1b
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.1/11.13.1-4-30-s.js
@@ -0,0 +1,24 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch11/11.13/11.13.1/11.13.1-4-30-s.js
+ * @description Strict Mode - SyntaxError is thrown if the identifier 'eval' appears as the LeftHandSideExpression (PrimaryExpression) of simple assignment(=) under strict mode
+ * @onlyStrict
+ */
+
+
+
+function testcase() {
+ "use strict";
+ var blah = eval;
+ try {
+ eval("(eval) = 20;");
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError && blah === eval;
+ }
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch11/11.13/11.13.1/11.13.1-4-31-s.js b/js/src/tests/test262/ch11/11.13/11.13.1/11.13.1-4-31-s.js
new file mode 100644
index 000000000..1d70a7723
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.1/11.13.1-4-31-s.js
@@ -0,0 +1,24 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch11/11.13/11.13.1/11.13.1-4-31-s.js
+ * @description Strict Mode - SyntaxError is thrown if the identifier 'arguments' appears as the LeftHandSideExpression (PrimaryExpression) of simple assignment(=) under strict mode
+ * @onlyStrict
+ */
+
+
+
+function testcase() {
+ "use strict";
+ var blah = arguments;
+ try {
+ eval("(arguments) = 20;");
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError && blah === arguments;
+ }
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch11/11.13/11.13.1/11.13.1-4-6-s.js b/js/src/tests/test262/ch11/11.13/11.13.1/11.13.1-4-6-s.js
new file mode 100644
index 000000000..158152924
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.1/11.13.1-4-6-s.js
@@ -0,0 +1,24 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch11/11.13/11.13.1/11.13.1-4-6-s.js
+ * @description simple assignment throws TypeError if LeftHandSide is a readonly property in strict mode (Function.length)
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ 'use strict';
+
+ try {
+ Function.length = 42;
+ return false;
+ }
+ catch (e) {
+ return (e instanceof TypeError);
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch11/11.13/11.13.1/S11.13.1_A1.js b/js/src/tests/test262/ch11/11.13/11.13.1/S11.13.1_A1.js
new file mode 100644
index 000000000..533091b57
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.1/S11.13.1_A1.js
@@ -0,0 +1,62 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * White Space and Line Terminator between LeftHandSideExpression and "=" or between "=" and AssignmentExpression are allowed
+ *
+ * @path ch11/11.13/11.13.1/S11.13.1_A1.js
+ * @description Checking by using eval
+ * @noStrict
+ */
+
+//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/js/src/tests/test262/ch11/11.13/11.13.1/S11.13.1_A2.1_T1.js b/js/src/tests/test262/ch11/11.13/11.13.1/S11.13.1_A2.1_T1.js
new file mode 100644
index 000000000..3c3a793ed
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.1/S11.13.1_A2.1_T1.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.
+
+/**
+ * Operator x = y uses GetValue and PutValue
+ *
+ * @path ch11/11.13/11.13.1/S11.13.1_A2.1_T1.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.1/S11.13.1_A2.1_T2.js b/js/src/tests/test262/ch11/11.13/11.13.1/S11.13.1_A2.1_T2.js
new file mode 100644
index 000000000..7f48afc64
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.1/S11.13.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.
+
+/**
+ * Operator x = y uses GetValue and PutValue
+ *
+ * @path ch11/11.13/11.13.1/S11.13.1_A2.1_T2.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.1/S11.13.1_A2.1_T3.js b/js/src/tests/test262/ch11/11.13/11.13.1/S11.13.1_A2.1_T3.js
new file mode 100644
index 000000000..3e153946f
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.1/S11.13.1_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.
+
+/**
+ * Operator x = y uses GetValue and PutValue
+ *
+ * @path ch11/11.13/11.13.1/S11.13.1_A2.1_T3.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.1/S11.13.1_A3.1.js b/js/src/tests/test262/ch11/11.13/11.13.1/S11.13.1_A3.1.js
new file mode 100644
index 000000000..d02876814
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.1/S11.13.1_A3.1.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.
+
+/**
+ * Operator x = y PutValue(x, y)
+ *
+ * @path ch11/11.13/11.13.1/S11.13.1_A3.1.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.1/S11.13.1_A3.2.js b/js/src/tests/test262/ch11/11.13/11.13.1/S11.13.1_A3.2.js
new file mode 100644
index 000000000..f369e21c3
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.1/S11.13.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.
+
+/**
+ * Operator x = y returns GetValue(y)
+ *
+ * @path ch11/11.13/11.13.1/S11.13.1_A3.2.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.1/S11.13.1_A4_T1.js b/js/src/tests/test262/ch11/11.13/11.13.1/S11.13.1_A4_T1.js
new file mode 100644
index 000000000..5781fbdfc
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.1/S11.13.1_A4_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.
+
+/**
+ * AssignmentExpression : LeftHandSideExpression = AssignmentExpression
+ *
+ * @path ch11/11.13/11.13.1/S11.13.1_A4_T1.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.1/S11.13.1_A4_T2.js b/js/src/tests/test262/ch11/11.13/11.13.1/S11.13.1_A4_T2.js
new file mode 100644
index 000000000..d1d4ea456
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.1/S11.13.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.
+
+/**
+ * AssignmentExpression : LeftHandSideExpression = AssignmentExpression
+ *
+ * @path ch11/11.13/11.13.1/S11.13.1_A4_T2.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.1/browser.js b/js/src/tests/test262/ch11/11.13/11.13.1/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.1/browser.js
diff --git a/js/src/tests/test262/ch11/11.13/11.13.1/shell.js b/js/src/tests/test262/ch11/11.13/11.13.1/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.1/shell.js
diff --git a/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-1-s.js b/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-1-s.js
new file mode 100644
index 000000000..3a8522a32
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-1-s.js
@@ -0,0 +1,22 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch11/11.13/11.13.2/11.13.2-1-s.js
+ * @description Strict Mode - ReferenceError is thrown if the LeftHandSideExpression of a Compound Assignment operator(*=) evaluates to an unresolvable reference
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+ try {
+ eval("_11_13_2_1 *= 1;");
+ return false;
+ } catch (e) {
+ return e instanceof ReferenceError;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-10-s.js b/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-10-s.js
new file mode 100644
index 000000000..e0c7dddb4
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-10-s.js
@@ -0,0 +1,22 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch11/11.13/11.13.2/11.13.2-10-s.js
+ * @description Strict Mode - ReferenceError is thrown if the LeftHandSideExpression of a Compound Assignment operator(^=) evaluates to an unresolvable reference
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+ try {
+ eval("_11_13_2_10 ^= 1;");
+ return false;
+ } catch (e) {
+ return e instanceof ReferenceError;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-11-s.js b/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-11-s.js
new file mode 100644
index 000000000..60d2e8a63
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-11-s.js
@@ -0,0 +1,22 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch11/11.13/11.13.2/11.13.2-11-s.js
+ * @description Strict Mode - ReferenceError is thrown if the LeftHandSideExpression of a Compound Assignment operator(|=) evaluates to an unresolvable reference
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+ try {
+ eval("_11_13_2_11 |= 1;");
+ return false;
+ } catch (e) {
+ return e instanceof ReferenceError;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-12-s.js b/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-12-s.js
new file mode 100644
index 000000000..ae0eff54b
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-12-s.js
@@ -0,0 +1,19 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch11/11.13/11.13.2/11.13.2-12-s.js
+ * @description Strict Mode - ReferenceError isn't thrown if the LeftHandSideExpression of a Compound Assignment operator(*=) evaluates to a resolvable reference
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+ var _11_13_2_12 = 5
+ _11_13_2_12 *= 2;
+ return _11_13_2_12 === 10;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-13-s.js b/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-13-s.js
new file mode 100644
index 000000000..3dc5a0f34
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-13-s.js
@@ -0,0 +1,19 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch11/11.13/11.13.2/11.13.2-13-s.js
+ * @description Strict Mode - ReferenceError isn't thrown if the LeftHandSideExpression of a Compound Assignment operator(/=) evaluates to a resolvable reference
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+ var _11_13_2_13 = 6
+ _11_13_2_13 /= 2;
+ return _11_13_2_13 === 3;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-14-s.js b/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-14-s.js
new file mode 100644
index 000000000..578fae60e
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-14-s.js
@@ -0,0 +1,19 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch11/11.13/11.13.2/11.13.2-14-s.js
+ * @description Strict Mode - ReferenceError isn't thrown if the LeftHandSideExpression of a Compound Assignment operator(%=) evaluates to a resolvable reference
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+ var _11_13_2_14 = 5
+ _11_13_2_14 %= 2;
+ return _11_13_2_14 === 1;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-15-s.js b/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-15-s.js
new file mode 100644
index 000000000..832e1f98d
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-15-s.js
@@ -0,0 +1,19 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch11/11.13/11.13.2/11.13.2-15-s.js
+ * @description Strict Mode - ReferenceError isn't thrown if the LeftHandSideExpression of a Compound Assignment operator(>>>=) evaluates to a resolvable reference
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+ var _11_13_2_15 = 8
+ _11_13_2_15 >>>= 2;
+ return _11_13_2_15 === 2;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-16-s.js b/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-16-s.js
new file mode 100644
index 000000000..ae83bb032
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-16-s.js
@@ -0,0 +1,19 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch11/11.13/11.13.2/11.13.2-16-s.js
+ * @description Strict Mode - ReferenceError isn't thrown if the LeftHandSideExpression of a Compound Assignment operator(-=) evaluates to a resolvable reference
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+ var _11_13_2_16 = 5
+ _11_13_2_16 -= 2;
+ return _11_13_2_16 === 3;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-17-s.js b/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-17-s.js
new file mode 100644
index 000000000..f78dd1b8b
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-17-s.js
@@ -0,0 +1,19 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch11/11.13/11.13.2/11.13.2-17-s.js
+ * @description Strict Mode - ReferenceError isn't thrown if the LeftHandSideExpression of a Compound Assignment operator(<<=) evaluates to a resolvable reference
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+ var _11_13_2_17 = 1;
+ _11_13_2_17 <<= 2;
+ return _11_13_2_17 === 4;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-18-s.js b/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-18-s.js
new file mode 100644
index 000000000..cb2af550d
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-18-s.js
@@ -0,0 +1,19 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch11/11.13/11.13.2/11.13.2-18-s.js
+ * @description Strict Mode - ReferenceError isn't thrown if the LeftHandSideExpression of a Compound Assignment operator(>>=) evaluates to a resolvable reference
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+ var _11_13_2_18 = 4
+ _11_13_2_18 >>= 2;
+ return _11_13_2_18 === 1;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-19-s.js b/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-19-s.js
new file mode 100644
index 000000000..187d7c78a
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-19-s.js
@@ -0,0 +1,19 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch11/11.13/11.13.2/11.13.2-19-s.js
+ * @description Strict Mode - ReferenceError isn't thrown if the LeftHandSideExpression of a Compound Assignment operator(+=) evaluates to a resolvable reference
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+ var _11_13_2_19 = -1
+ _11_13_2_19 += 10;
+ return _11_13_2_19 === 9;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-2-s.js b/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-2-s.js
new file mode 100644
index 000000000..395bed37d
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-2-s.js
@@ -0,0 +1,22 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch11/11.13/11.13.2/11.13.2-2-s.js
+ * @description Strict Mode - ReferenceError is thrown if the LeftHandSideExpression of a Compound Assignment operator(/=) evaluates to an unresolvable reference
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+ try {
+ eval("_11_13_2_2 /= 1;");
+ return false;
+ } catch (e) {
+ return e instanceof ReferenceError;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-20-s.js b/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-20-s.js
new file mode 100644
index 000000000..8f1547ca7
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-20-s.js
@@ -0,0 +1,19 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch11/11.13/11.13.2/11.13.2-20-s.js
+ * @description Strict Mode - ReferenceError isn't thrown if the LeftHandSideExpression of a Compound Assignment operator(&=) evaluates to a resolvable reference
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+ var _11_13_2_20 = 5
+ _11_13_2_20 &= 3;
+ return _11_13_2_20 === 1;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-21-s.js b/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-21-s.js
new file mode 100644
index 000000000..3cf11ab55
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-21-s.js
@@ -0,0 +1,19 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch11/11.13/11.13.2/11.13.2-21-s.js
+ * @description Strict Mode - ReferenceError isn't thrown if the LeftHandSideExpression of a Compound Assignment operator(^=) evaluates to a resolvable reference
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+ var _11_13_2_21 = 5
+ _11_13_2_21 ^= 3;
+ return _11_13_2_21 === 6;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-22-s.js b/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-22-s.js
new file mode 100644
index 000000000..b525c1621
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-22-s.js
@@ -0,0 +1,19 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch11/11.13/11.13.2/11.13.2-22-s.js
+ * @description Strict Mode - ReferenceError isn't thrown if the LeftHandSideExpression of a Compound Assignment operator(|=) evaluates to a resolvable reference
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+ var _11_13_2_22 = 5
+ _11_13_2_22 |= 2;
+ return _11_13_2_22 === 7;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-23-s.js b/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-23-s.js
new file mode 100644
index 000000000..f6b492dc3
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-23-s.js
@@ -0,0 +1,30 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch11/11.13/11.13.2/11.13.2-23-s.js
+ * @description Strict Mode - TypeError is thrown if The LeftHandSide of a Compound Assignment operator(*=) is a reference to a data property with the attribute value {[[Writable]]:false}
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+ var obj = {};
+ Object.defineProperty(obj, "prop", {
+ value: 10,
+ writable: false,
+ enumerable: true,
+ configurable: true
+ });
+
+ try {
+ obj.prop *= 20;
+ return false;
+ } catch (e) {
+ return e instanceof TypeError && obj.prop === 10;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-24-s.js b/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-24-s.js
new file mode 100644
index 000000000..7c0886277
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-24-s.js
@@ -0,0 +1,30 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch11/11.13/11.13.2/11.13.2-24-s.js
+ * @description Strict Mode - TypeError is thrown if The LeftHandSide of a Compound Assignment operator(/=) is a reference to a data property with the attribute value {[[Writable]]:false}
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+ var obj = {};
+ Object.defineProperty(obj, "prop", {
+ value: 10,
+ writable: false,
+ enumerable: true,
+ configurable: true
+ });
+
+ try {
+ obj.prop /= 20;
+ return false;
+ } catch (e) {
+ return e instanceof TypeError && obj.prop === 10;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-25-s.js b/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-25-s.js
new file mode 100644
index 000000000..3f52583c3
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-25-s.js
@@ -0,0 +1,30 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch11/11.13/11.13.2/11.13.2-25-s.js
+ * @description Strict Mode - TypeError is thrown if The LeftHandSide of a Compound Assignment operator(%=) is a reference to a data property with the attribute value {[[Writable]]:false}
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+ var obj = {};
+ Object.defineProperty(obj, "prop", {
+ value: 10,
+ writable: false,
+ enumerable: true,
+ configurable: true
+ });
+
+ try {
+ obj.prop %= 20;
+ return false;
+ } catch (e) {
+ return e instanceof TypeError && obj.prop === 10;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-26-s.js b/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-26-s.js
new file mode 100644
index 000000000..a13b710d8
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-26-s.js
@@ -0,0 +1,30 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch11/11.13/11.13.2/11.13.2-26-s.js
+ * @description Strict Mode - TypeError is thrown if The LeftHandSide of a Compound Assignment operator(+=) is a reference to a data property with the attribute value {[[Writable]]:false}
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+ var obj = {};
+ Object.defineProperty(obj, "prop", {
+ value: 10,
+ writable: false,
+ enumerable: true,
+ configurable: true
+ });
+
+ try {
+ obj.prop += 20;
+ return false;
+ } catch (e) {
+ return e instanceof TypeError && obj.prop === 10;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-27-s.js b/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-27-s.js
new file mode 100644
index 000000000..c8b649257
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-27-s.js
@@ -0,0 +1,30 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch11/11.13/11.13.2/11.13.2-27-s.js
+ * @description Strict Mode - TypeError is thrown if The LeftHandSide of a Compound Assignment operator(-=) is a reference to a data property with the attribute value {[[Writable]]:false}
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+ var obj = {};
+ Object.defineProperty(obj, "prop", {
+ value: 10,
+ writable: false,
+ enumerable: true,
+ configurable: true
+ });
+
+ try {
+ obj.prop -= 20;
+ return false;
+ } catch (e) {
+ return e instanceof TypeError && obj.prop === 10;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-28-s.js b/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-28-s.js
new file mode 100644
index 000000000..326c710e1
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-28-s.js
@@ -0,0 +1,30 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch11/11.13/11.13.2/11.13.2-28-s.js
+ * @description Strict Mode - TypeError is thrown if The LeftHandSide of a Compound Assignment operator(<<=) is a reference to a data property with the attribute value {[[Writable]]:false}
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+ var obj = {};
+ Object.defineProperty(obj, "prop", {
+ value: 10,
+ writable: false,
+ enumerable: true,
+ configurable: true
+ });
+
+ try {
+ obj.prop <<= 20;
+ return false;
+ } catch (e) {
+ return e instanceof TypeError && obj.prop === 10;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-29-s.js b/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-29-s.js
new file mode 100644
index 000000000..dac5aff74
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-29-s.js
@@ -0,0 +1,30 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch11/11.13/11.13.2/11.13.2-29-s.js
+ * @description Strict Mode - TypeError is thrown if The LeftHandSide of a Compound Assignment operator(>>=) is a reference to a data property with the attribute value {[[Writable]]:false}
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+ var obj = {};
+ Object.defineProperty(obj, "prop", {
+ value: 10,
+ writable: false,
+ enumerable: true,
+ configurable: true
+ });
+
+ try {
+ obj.prop >>= 20;
+ return false;
+ } catch (e) {
+ return e instanceof TypeError && obj.prop === 10;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-3-s.js b/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-3-s.js
new file mode 100644
index 000000000..efbbe64ab
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-3-s.js
@@ -0,0 +1,22 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch11/11.13/11.13.2/11.13.2-3-s.js
+ * @description Strict Mode - ReferenceError is thrown if the LeftHandSideExpression of a Compound Assignment operator(%=) evaluates to an unresolvable reference
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+ try {
+ eval("_11_13_2_3 %= 1;");
+ return false;
+ } catch (e) {
+ return e instanceof ReferenceError;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-30-s.js b/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-30-s.js
new file mode 100644
index 000000000..77b4a3f99
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-30-s.js
@@ -0,0 +1,30 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch11/11.13/11.13.2/11.13.2-30-s.js
+ * @description Strict Mode - TypeError is thrown if The LeftHandSide of a Compound Assignment operator(>>>=) is a reference to a data property with the attribute value {[[Writable]]:false}
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+ var obj = {};
+ Object.defineProperty(obj, "prop", {
+ value: 10,
+ writable: false,
+ enumerable: true,
+ configurable: true
+ });
+
+ try {
+ obj.prop >>>= 20;
+ return false;
+ } catch (e) {
+ return e instanceof TypeError && obj.prop === 10;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-31-s.js b/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-31-s.js
new file mode 100644
index 000000000..1a42e5ac1
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-31-s.js
@@ -0,0 +1,30 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch11/11.13/11.13.2/11.13.2-31-s.js
+ * @description Strict Mode - TypeError is thrown if The LeftHandSide of a Compound Assignment operator(&=) is a reference to a data property with the attribute value {[[Writable]]:false}
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+ var obj = {};
+ Object.defineProperty(obj, "prop", {
+ value: 10,
+ writable: false,
+ enumerable: true,
+ configurable: true
+ });
+
+ try {
+ obj.prop &= 20;
+ return false;
+ } catch (e) {
+ return e instanceof TypeError && obj.prop === 10;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-32-s.js b/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-32-s.js
new file mode 100644
index 000000000..63ed6d804
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-32-s.js
@@ -0,0 +1,30 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch11/11.13/11.13.2/11.13.2-32-s.js
+ * @description Strict Mode - TypeError is thrown if The LeftHandSide of a Compound Assignment operator(^=) is a reference to a data property with the attribute value {[[Writable]]:false}
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+ var obj = {};
+ Object.defineProperty(obj, "prop", {
+ value: 10,
+ writable: false,
+ enumerable: true,
+ configurable: true
+ });
+
+ try {
+ obj.prop ^= 20;
+ return false;
+ } catch (e) {
+ return e instanceof TypeError && obj.prop === 10;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-33-s.js b/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-33-s.js
new file mode 100644
index 000000000..a0b27a8f3
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-33-s.js
@@ -0,0 +1,30 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch11/11.13/11.13.2/11.13.2-33-s.js
+ * @description Strict Mode - TypeError is thrown if The LeftHandSide of a Compound Assignment operator(|=) is a reference to a data property with the attribute value {[[Writable]]:false}
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+ var obj = {};
+ Object.defineProperty(obj, "prop", {
+ value: 10,
+ writable: false,
+ enumerable: true,
+ configurable: true
+ });
+
+ try {
+ obj.prop |= 20;
+ return false;
+ } catch (e) {
+ return e instanceof TypeError && obj.prop === 10;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-34-s.js b/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-34-s.js
new file mode 100644
index 000000000..196038b2b
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-34-s.js
@@ -0,0 +1,32 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch11/11.13/11.13.2/11.13.2-34-s.js
+ * @description Strict Mode - TypeError is thrown if The LeftHandSide of a Compound Assignment operator(*=) is a reference to an accessor property with the attribute value {[[Set]]:undefined}
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+ var obj = {};
+ Object.defineProperty(obj, "prop", {
+ get: function () {
+ return 11;
+ },
+ set: undefined,
+ enumerable: true,
+ configurable: true
+ });
+
+ try {
+ obj.prop *= 20;
+ return false;
+ } catch (e) {
+ return e instanceof TypeError && obj.prop === 11;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-35-s.js b/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-35-s.js
new file mode 100644
index 000000000..2a7dba157
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-35-s.js
@@ -0,0 +1,32 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch11/11.13/11.13.2/11.13.2-35-s.js
+ * @description Strict Mode - TypeError is thrown if The LeftHandSide of a Compound Assignment operator(/=) is a reference to an accessor property with the attribute value {[[Set]]:undefined}
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+ var obj = {};
+ Object.defineProperty(obj, "prop", {
+ get: function () {
+ return 11;
+ },
+ set: undefined,
+ enumerable: true,
+ configurable: true
+ });
+
+ try {
+ obj.prop /= 20;
+ return false;
+ } catch (e) {
+ return e instanceof TypeError && obj.prop === 11;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-36-s.js b/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-36-s.js
new file mode 100644
index 000000000..2e1204180
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-36-s.js
@@ -0,0 +1,32 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch11/11.13/11.13.2/11.13.2-36-s.js
+ * @description Strict Mode - TypeError is thrown if The LeftHandSide of a Compound Assignment operator(%=) is a reference to an accessor property with the attribute value {[[Set]]:undefined}
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+ var obj = {};
+ Object.defineProperty(obj, "prop", {
+ get: function () {
+ return 11;
+ },
+ set: undefined,
+ enumerable: true,
+ configurable: true
+ });
+
+ try {
+ obj.prop %= 20;
+ return false;
+ } catch (e) {
+ return e instanceof TypeError && obj.prop === 11;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-37-s.js b/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-37-s.js
new file mode 100644
index 000000000..e426178ab
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-37-s.js
@@ -0,0 +1,32 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch11/11.13/11.13.2/11.13.2-37-s.js
+ * @description Strict Mode - TypeError is thrown if The LeftHandSide of a Compound Assignment operator(+=) is a reference to an accessor property with the attribute value {[[Set]]:undefined}
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+ var obj = {};
+ Object.defineProperty(obj, "prop", {
+ get: function () {
+ return 11;
+ },
+ set: undefined,
+ enumerable: true,
+ configurable: true
+ });
+
+ try {
+ obj.prop += 20;
+ return false;
+ } catch (e) {
+ return e instanceof TypeError && obj.prop === 11;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-38-s.js b/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-38-s.js
new file mode 100644
index 000000000..a522f871e
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-38-s.js
@@ -0,0 +1,32 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch11/11.13/11.13.2/11.13.2-38-s.js
+ * @description Strict Mode - TypeError is thrown if The LeftHandSide of a Compound Assignment operator(-=) is a reference to an accessor property with the attribute value {[[Set]]:undefined}
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+ var obj = {};
+ Object.defineProperty(obj, "prop", {
+ get: function () {
+ return 11;
+ },
+ set: undefined,
+ enumerable: true,
+ configurable: true
+ });
+
+ try {
+ obj.prop -= 20;
+ return false;
+ } catch (e) {
+ return e instanceof TypeError && obj.prop === 11;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-39-s.js b/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-39-s.js
new file mode 100644
index 000000000..a682e1466
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-39-s.js
@@ -0,0 +1,32 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch11/11.13/11.13.2/11.13.2-39-s.js
+ * @description Strict Mode - TypeError is thrown if The LeftHandSide of a Compound Assignment operator(<<=) is a reference to an accessor property with the attribute value {[[Set]]:undefined}
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+ var obj = {};
+ Object.defineProperty(obj, "prop", {
+ get: function () {
+ return 11;
+ },
+ set: undefined,
+ enumerable: true,
+ configurable: true
+ });
+
+ try {
+ obj.prop <<= 20;
+ return false;
+ } catch (e) {
+ return e instanceof TypeError && obj.prop === 11;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-4-s.js b/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-4-s.js
new file mode 100644
index 000000000..e565ceccc
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-4-s.js
@@ -0,0 +1,22 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch11/11.13/11.13.2/11.13.2-4-s.js
+ * @description Strict Mode - ReferenceError is thrown if the LeftHandSideExpression of a Compound Assignment operator(+=) evaluates to an unresolvable reference
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+ try {
+ eval("_11_13_2_4 += 1;");
+ return false;
+ } catch (e) {
+ return e instanceof ReferenceError;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-40-s.js b/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-40-s.js
new file mode 100644
index 000000000..2f31f32bb
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-40-s.js
@@ -0,0 +1,32 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch11/11.13/11.13.2/11.13.2-40-s.js
+ * @description Strict Mode - TypeError is thrown if The LeftHandSide of a Compound Assignment operator(>>=) is a reference to an accessor property with the attribute value {[[Set]]:undefined}
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+ var obj = {};
+ Object.defineProperty(obj, "prop", {
+ get: function () {
+ return 11;
+ },
+ set: undefined,
+ enumerable: true,
+ configurable: true
+ });
+
+ try {
+ obj.prop >>= 20;
+ return false;
+ } catch (e) {
+ return e instanceof TypeError && obj.prop === 11;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-41-s.js b/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-41-s.js
new file mode 100644
index 000000000..acc1d54ff
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-41-s.js
@@ -0,0 +1,32 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch11/11.13/11.13.2/11.13.2-41-s.js
+ * @description Strict Mode - TypeError is thrown if The LeftHandSide of a Compound Assignment operator(>>>=) is a reference to an accessor property with the attribute value {[[Set]]:undefined}
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+ var obj = {};
+ Object.defineProperty(obj, "prop", {
+ get: function () {
+ return 11;
+ },
+ set: undefined,
+ enumerable: true,
+ configurable: true
+ });
+
+ try {
+ obj.prop >>>= 20;
+ return false;
+ } catch (e) {
+ return e instanceof TypeError && obj.prop === 11;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-42-s.js b/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-42-s.js
new file mode 100644
index 000000000..6b2f4642a
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-42-s.js
@@ -0,0 +1,32 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch11/11.13/11.13.2/11.13.2-42-s.js
+ * @description Strict Mode - TypeError is thrown if The LeftHandSide of a Compound Assignment operator(&=) is a reference to an accessor property with the attribute value {[[Set]]:undefined}
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+ var obj = {};
+ Object.defineProperty(obj, "prop", {
+ get: function () {
+ return 11;
+ },
+ set: undefined,
+ enumerable: true,
+ configurable: true
+ });
+
+ try {
+ obj.prop &= 20;
+ return false;
+ } catch (e) {
+ return e instanceof TypeError && obj.prop === 11;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-43-s.js b/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-43-s.js
new file mode 100644
index 000000000..72aafec6e
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-43-s.js
@@ -0,0 +1,32 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch11/11.13/11.13.2/11.13.2-43-s.js
+ * @description Strict Mode - TypeError is thrown if The LeftHandSide of a Compound Assignment operator(^=) is a reference to an accessor property with the attribute value {[[Set]]:undefined}
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+ var obj = {};
+ Object.defineProperty(obj, "prop", {
+ get: function () {
+ return 11;
+ },
+ set: undefined,
+ enumerable: true,
+ configurable: true
+ });
+
+ try {
+ obj.prop ^= 20;
+ return false;
+ } catch (e) {
+ return e instanceof TypeError && obj.prop === 11;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-44-s.js b/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-44-s.js
new file mode 100644
index 000000000..33a47ddb9
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-44-s.js
@@ -0,0 +1,32 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch11/11.13/11.13.2/11.13.2-44-s.js
+ * @description Strict Mode - TypeError is thrown if The LeftHandSide of a Compound Assignment operator(|=) is a reference of to an accessor property with the attribute value {[[Set]]:undefined}
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+ var obj = {};
+ Object.defineProperty(obj, "prop", {
+ get: function () {
+ return 11;
+ },
+ set: undefined,
+ enumerable: true,
+ configurable: true
+ });
+
+ try {
+ obj.prop |= 20;
+ return false;
+ } catch (e) {
+ return e instanceof TypeError && obj.prop === 11;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-45-s.js b/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-45-s.js
new file mode 100644
index 000000000..5122b4bdf
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-45-s.js
@@ -0,0 +1,25 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch11/11.13/11.13.2/11.13.2-45-s.js
+ * @description Strict Mode - TypeError is thrown if The LeftHandSide of a Compound Assignment operator(*=) is a reference to a non-existent property of an object whose [[Extensible]] internal property if false
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+ var obj = {};
+ Object.preventExtensions(obj);
+
+ try {
+ obj.len *= 10;
+ return false;
+ } catch (e) {
+ return e instanceof TypeError;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-46-s.js b/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-46-s.js
new file mode 100644
index 000000000..382f41c25
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-46-s.js
@@ -0,0 +1,25 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch11/11.13/11.13.2/11.13.2-46-s.js
+ * @description Strict Mode - TypeError is thrown if The LeftHandSide of a Compound Assignment operator(/=) is a reference to a non-existent property of an object whose [[Extensible]] internal property if false
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+ var obj = {};
+ Object.preventExtensions(obj);
+
+ try {
+ obj.len /= 10;
+ return false;
+ } catch (e) {
+ return e instanceof TypeError;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-47-s.js b/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-47-s.js
new file mode 100644
index 000000000..4e3761c20
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-47-s.js
@@ -0,0 +1,25 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch11/11.13/11.13.2/11.13.2-47-s.js
+ * @description Strict Mode - TypeError is thrown if The LeftHandSide of a Compound Assignment operator(%=) is a reference to a non-existent property of an object whose [[Extensible]] internal property if false
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+ var obj = {};
+ Object.preventExtensions(obj);
+
+ try {
+ obj.len %= 10;
+ return false;
+ } catch (e) {
+ return e instanceof TypeError;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-48-s.js b/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-48-s.js
new file mode 100644
index 000000000..fa14cbf86
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-48-s.js
@@ -0,0 +1,25 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch11/11.13/11.13.2/11.13.2-48-s.js
+ * @description Strict Mode - TypeError is thrown if The LeftHandSide of a Compound Assignment operator(+=) is a reference to a non-existent property of an object whose [[Extensible]] internal property if false
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+ var obj = {};
+ Object.preventExtensions(obj);
+
+ try {
+ obj.len += 10;
+ return false;
+ } catch (e) {
+ return e instanceof TypeError;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-49-s.js b/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-49-s.js
new file mode 100644
index 000000000..b9105eca8
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-49-s.js
@@ -0,0 +1,25 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch11/11.13/11.13.2/11.13.2-49-s.js
+ * @description Strict Mode - TypeError is thrown if The LeftHandSide of a Compound Assignment operator(-=) is a reference to a non-existent property of an object whose [[Extensible]] internal property if false
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+ var obj = {};
+ Object.preventExtensions(obj);
+
+ try {
+ obj.len -= 10;
+ return false;
+ } catch (e) {
+ return e instanceof TypeError;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-5-s.js b/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-5-s.js
new file mode 100644
index 000000000..09fdb5fa9
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-5-s.js
@@ -0,0 +1,22 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch11/11.13/11.13.2/11.13.2-5-s.js
+ * @description Strict Mode - ReferenceError is thrown if the LeftHandSideExpression of a Compound Assignment operator(-=) evaluates to an unresolvable reference
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+ try {
+ eval("_11_13_2_5 -= 1;");
+ return false;
+ } catch (e) {
+ return e instanceof ReferenceError;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-50-s.js b/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-50-s.js
new file mode 100644
index 000000000..7ae50545b
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-50-s.js
@@ -0,0 +1,25 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch11/11.13/11.13.2/11.13.2-50-s.js
+ * @description Strict Mode - TypeError is thrown if The LeftHandSide of a Compound Assignment operator(<<=) is a reference to a non-existent property of an object whose [[Extensible]] internal property if false
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+ var obj = {};
+ Object.preventExtensions(obj);
+
+ try {
+ obj.len <<= 10;
+ return false;
+ } catch (e) {
+ return e instanceof TypeError;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-51-s.js b/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-51-s.js
new file mode 100644
index 000000000..7818d3d81
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-51-s.js
@@ -0,0 +1,25 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch11/11.13/11.13.2/11.13.2-51-s.js
+ * @description Strict Mode - TypeError is thrown if The LeftHandSide of a Compound Assignment operator(>>=) is a reference to a non-existent property of an object whose [[Extensible]] internal property if false
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+ var obj = {};
+ Object.preventExtensions(obj);
+
+ try {
+ obj.len >>= 10;
+ return false;
+ } catch (e) {
+ return e instanceof TypeError;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-52-s.js b/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-52-s.js
new file mode 100644
index 000000000..0668c86e6
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-52-s.js
@@ -0,0 +1,25 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch11/11.13/11.13.2/11.13.2-52-s.js
+ * @description Strict Mode - TypeError is thrown if The LeftHandSide of a Compound Assignment operator(>>>=) is a reference to a non-existent property of an object whose [[Extensible]] internal property if false
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+ var obj = {};
+ Object.preventExtensions(obj);
+
+ try {
+ obj.len >>>= 10;
+ return false;
+ } catch (e) {
+ return e instanceof TypeError;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-53-s.js b/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-53-s.js
new file mode 100644
index 000000000..64bdafb9b
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-53-s.js
@@ -0,0 +1,25 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch11/11.13/11.13.2/11.13.2-53-s.js
+ * @description Strict Mode - TypeError is thrown if The LeftHandSide of a Compound Assignment operator(&=) is a reference to a non-existent property of an object whose [[Extensible]] internal property if false
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+ var obj = {};
+ Object.preventExtensions(obj);
+
+ try {
+ obj.len &= 10;
+ return false;
+ } catch (e) {
+ return e instanceof TypeError;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-54-s.js b/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-54-s.js
new file mode 100644
index 000000000..f5439a483
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-54-s.js
@@ -0,0 +1,25 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch11/11.13/11.13.2/11.13.2-54-s.js
+ * @description Strict Mode - TypeError is thrown if The LeftHandSide of a Compound Assignment operator(^=) is a reference to a non-existent property of an object whose [[Extensible]] internal property if false
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+ var obj = {};
+ Object.preventExtensions(obj);
+
+ try {
+ obj.len ^= 10;
+ return false;
+ } catch (e) {
+ return e instanceof TypeError;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-55-s.js b/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-55-s.js
new file mode 100644
index 000000000..e44a53038
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-55-s.js
@@ -0,0 +1,25 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch11/11.13/11.13.2/11.13.2-55-s.js
+ * @description Strict Mode - TypeError is thrown if The LeftHandSide of a Compound Assignment operator(|=) is a reference to a non-existent property of an object whose [[Extensible]] internal property if false
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+ var obj = {};
+ Object.preventExtensions(obj);
+
+ try {
+ obj.len |= 10;
+ return false;
+ } catch (e) {
+ return e instanceof TypeError;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-6-1-s.js b/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-6-1-s.js
new file mode 100644
index 000000000..6bbe5ceb7
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-6-1-s.js
@@ -0,0 +1,23 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch11/11.13/11.13.2/11.13.2-6-1-s.js
+ * @description Strict Mode - SyntaxError is thrown if the identifier eval appear as the LeftHandSideExpression of a Compound Assignment operator(*=)
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+ var blah = eval;
+ try {
+ eval("eval *= 20;");
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError && blah === eval;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-6-10-s.js b/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-6-10-s.js
new file mode 100644
index 000000000..acf0fc522
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-6-10-s.js
@@ -0,0 +1,23 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch11/11.13/11.13.2/11.13.2-6-10-s.js
+ * @description Strict Mode - SyntaxError is thrown if the identifier eval appear as the LeftHandSideExpression of a Compound Assignment operator(^=)
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+ var blah = eval;
+ try {
+ eval("eval ^= 20;");
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError && blah === eval;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-6-11-s.js b/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-6-11-s.js
new file mode 100644
index 000000000..7273172df
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-6-11-s.js
@@ -0,0 +1,23 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch11/11.13/11.13.2/11.13.2-6-11-s.js
+ * @description Strict Mode - SyntaxError is thrown if the identifier eval appear as the LeftHandSideExpression of a Compound Assignment operator(|=)
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+ var blah = eval;
+ try {
+ eval("eval |= 20;");
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError && blah === eval;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-6-12-s.js b/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-6-12-s.js
new file mode 100644
index 000000000..b3eaf8e76
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-6-12-s.js
@@ -0,0 +1,23 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch11/11.13/11.13.2/11.13.2-6-12-s.js
+ * @description Strict Mode - SyntaxError is thrown if the identifier arguments appear as the LeftHandSideExpression of a Compound Assignment operator(*=)
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+ var blah = arguments;
+ try {
+ eval("arguments *= 20;");
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError && blah === arguments;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-6-13-s.js b/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-6-13-s.js
new file mode 100644
index 000000000..f553885ba
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-6-13-s.js
@@ -0,0 +1,23 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch11/11.13/11.13.2/11.13.2-6-13-s.js
+ * @description Strict Mode - SyntaxError is thrown if the identifier arguments appear as the LeftHandSideExpression of a Compound Assignment operator(/=)
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+ var blah = arguments;
+ try {
+ eval("arguments /= 20;");
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError && blah === arguments;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-6-14-s.js b/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-6-14-s.js
new file mode 100644
index 000000000..f039ab988
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-6-14-s.js
@@ -0,0 +1,23 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch11/11.13/11.13.2/11.13.2-6-14-s.js
+ * @description Strict Mode - SyntaxError is thrown if the identifier arguments appear as the LeftHandSideExpression of a Compound Assignment operator(%=)
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+ var blah = arguments;
+ try {
+ eval("arguments %= 20;");
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError && blah === arguments;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-6-15-s.js b/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-6-15-s.js
new file mode 100644
index 000000000..cd473315c
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-6-15-s.js
@@ -0,0 +1,23 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch11/11.13/11.13.2/11.13.2-6-15-s.js
+ * @description Strict Mode - SyntaxError is thrown if the identifier arguments appear as the LeftHandSideExpression of a Compound Assignment operator(+=)
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+ var blah = arguments;
+ try {
+ eval("arguments += 20;");
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError && blah === arguments;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-6-16-s.js b/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-6-16-s.js
new file mode 100644
index 000000000..4c7038b79
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-6-16-s.js
@@ -0,0 +1,23 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch11/11.13/11.13.2/11.13.2-6-16-s.js
+ * @description Strict Mode - SyntaxError is thrown if the identifier arguments appear as the LeftHandSideExpression of a Compound Assignment operator(-=)
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+ var blah = arguments;
+ try {
+ eval("arguments -= 20;");
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError && blah === arguments;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-6-17-s.js b/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-6-17-s.js
new file mode 100644
index 000000000..1b0efaf36
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-6-17-s.js
@@ -0,0 +1,23 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch11/11.13/11.13.2/11.13.2-6-17-s.js
+ * @description Strict Mode - SyntaxError is thrown if the identifier arguments appear as the LeftHandSideExpression of a Compound Assignment operator(<<=)
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+ var blah = arguments;
+ try {
+ eval("arguments <<= 20;");
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError && blah === arguments;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-6-18-s.js b/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-6-18-s.js
new file mode 100644
index 000000000..0413ebfeb
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-6-18-s.js
@@ -0,0 +1,23 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch11/11.13/11.13.2/11.13.2-6-18-s.js
+ * @description Strict Mode - SyntaxError is thrown if the identifier arguments appear as the LeftHandSideExpression of a Compound Assignment operator(>>=)
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+ var blah = arguments;
+ try {
+ eval("arguments >>= 20;");
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError && blah === arguments;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-6-19-s.js b/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-6-19-s.js
new file mode 100644
index 000000000..8af9d1b37
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-6-19-s.js
@@ -0,0 +1,23 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch11/11.13/11.13.2/11.13.2-6-19-s.js
+ * @description Strict Mode - SyntaxError is thrown if the identifier arguments appear as the LeftHandSideExpression of a Compound Assignment operator(>>>=)
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+ var blah = arguments;
+ try {
+ eval("arguments >>>= 20;");
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError && blah === arguments;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-6-1gs.js b/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-6-1gs.js
new file mode 100644
index 000000000..a3f33416c
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-6-1gs.js
@@ -0,0 +1,16 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+
+/**
+ * @path ch11/11.13/11.13.2/11.13.2-6-1gs.js
+ * @description Strict Mode - SyntaxError is throw if the identifier eval appears as the LeftHandSideExpression of a Compound Assignment operator(*=)
+ * @onlyStrict
+ * @negative ^((?!NotEarlyError).)*$
+ */
+
+"use strict";
+throw NotEarlyError;
+eval *= 20;
diff --git a/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-6-2-s.js b/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-6-2-s.js
new file mode 100644
index 000000000..f342f29ef
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-6-2-s.js
@@ -0,0 +1,23 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch11/11.13/11.13.2/11.13.2-6-2-s.js
+ * @description Strict Mode - SyntaxError is thrown if the identifier eval appear as the LeftHandSideExpression of a Compound Assignment operator(/=)
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+ var blah = eval;
+ try {
+ eval("eval /= 20;");
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError && blah === eval;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-6-20-s.js b/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-6-20-s.js
new file mode 100644
index 000000000..468a01dab
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-6-20-s.js
@@ -0,0 +1,23 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch11/11.13/11.13.2/11.13.2-6-20-s.js
+ * @description Strict Mode - SyntaxError is thrown if the identifier arguments appear as the LeftHandSideExpression of a Compound Assignment operator(&=)
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+ var blah = arguments;
+ try {
+ eval("arguments &= 20;");
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError && blah === arguments;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-6-21-s.js b/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-6-21-s.js
new file mode 100644
index 000000000..6ce81e359
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-6-21-s.js
@@ -0,0 +1,23 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch11/11.13/11.13.2/11.13.2-6-21-s.js
+ * @description Strict Mode - SyntaxError is thrown if the identifier arguments appear as the LeftHandSideExpression of a Compound Assignment operator(^=)
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+ var blah = arguments;
+ try {
+ eval("arguments ^= 20;");
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError && blah === arguments;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-6-22-s.js b/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-6-22-s.js
new file mode 100644
index 000000000..48a6651c2
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-6-22-s.js
@@ -0,0 +1,23 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch11/11.13/11.13.2/11.13.2-6-22-s.js
+ * @description Strict Mode - SyntaxError is thrown if the identifier arguments appear as the LeftHandSideExpression of a Compound Assignment operator(|=)
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+ var blah = arguments;
+ try {
+ eval("arguments |= 20;");
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError && blah === arguments;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-6-3-s.js b/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-6-3-s.js
new file mode 100644
index 000000000..133e41d16
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-6-3-s.js
@@ -0,0 +1,23 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch11/11.13/11.13.2/11.13.2-6-3-s.js
+ * @description Strict Mode - SyntaxError is thrown if the identifier eval appear as the LeftHandSideExpression of a Compound Assignment operator(%=)
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+ var blah = eval;
+ try {
+ eval("eval %= 20;");
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError && blah === eval;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-6-4-s.js b/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-6-4-s.js
new file mode 100644
index 000000000..c5314930e
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-6-4-s.js
@@ -0,0 +1,23 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch11/11.13/11.13.2/11.13.2-6-4-s.js
+ * @description Strict Mode - SyntaxError is thrown if the identifier eval appear as the LeftHandSideExpression of a Compound Assignment operator(+=)
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+ var blah = eval;
+ try {
+ eval("eval += 20;");
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError && blah === eval;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-6-5-s.js b/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-6-5-s.js
new file mode 100644
index 000000000..394632041
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-6-5-s.js
@@ -0,0 +1,23 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch11/11.13/11.13.2/11.13.2-6-5-s.js
+ * @description Strict Mode - SyntaxError is thrown if the identifier eval appear as the LeftHandSideExpression of a Compound Assignment operator(-=)
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+ var blah = eval;
+ try {
+ eval("eval -= 20;");
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError && blah === eval;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-6-6-s.js b/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-6-6-s.js
new file mode 100644
index 000000000..e3e709b76
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-6-6-s.js
@@ -0,0 +1,23 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch11/11.13/11.13.2/11.13.2-6-6-s.js
+ * @description Strict Mode - SyntaxError is thrown if the identifier eval appear as the LeftHandSideExpression of a Compound Assignment operator(<<=)
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+ var blah = eval;
+ try {
+ eval("eval <<= 20;");
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError && blah === eval;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-6-7-s.js b/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-6-7-s.js
new file mode 100644
index 000000000..f07505be0
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-6-7-s.js
@@ -0,0 +1,23 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch11/11.13/11.13.2/11.13.2-6-7-s.js
+ * @description Strict Mode - SyntaxError is thrown if the identifier eval appear as the LeftHandSideExpression of a Compound Assignment operator(>>=)
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+ var blah = eval;
+ try {
+ eval("eval >>= 20;");
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError && blah === eval;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-6-8-s.js b/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-6-8-s.js
new file mode 100644
index 000000000..8a2226ae1
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-6-8-s.js
@@ -0,0 +1,23 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch11/11.13/11.13.2/11.13.2-6-8-s.js
+ * @description Strict Mode - SyntaxError is thrown if the identifier eval appear as the LeftHandSideExpression of a Compound Assignment operator(>>>=)
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+ var blah = eval;
+ try {
+ eval("eval >>>= 20;");
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError && blah === eval;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-6-9-s.js b/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-6-9-s.js
new file mode 100644
index 000000000..4f5817fdb
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-6-9-s.js
@@ -0,0 +1,23 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch11/11.13/11.13.2/11.13.2-6-9-s.js
+ * @description Strict Mode - SyntaxError is thrown if the identifier eval appear as the LeftHandSideExpression of a Compound Assignment operator(&=)
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+ var blah = eval;
+ try {
+ eval("eval &= 20;");
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError && blah === eval;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-6-s.js b/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-6-s.js
new file mode 100644
index 000000000..832d3afd0
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-6-s.js
@@ -0,0 +1,22 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch11/11.13/11.13.2/11.13.2-6-s.js
+ * @description Strict Mode - ReferenceError is thrown if the LeftHandSideExpression of a Compound Assignment operator(<<=) evaluates to an unresolvable reference
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+ try {
+ eval("_11_13_2_6 <<= 1;");
+ return false;
+ } catch (e) {
+ return e instanceof ReferenceError;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-7-s.js b/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-7-s.js
new file mode 100644
index 000000000..8a290330a
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-7-s.js
@@ -0,0 +1,22 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch11/11.13/11.13.2/11.13.2-7-s.js
+ * @description Strict Mode - ReferenceError is thrown if the LeftHandSideExpression of a Compound Assignment operator(>>=) evaluates to an unresolvable reference
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+ try {
+ eval("_11_13_2_7 >>= 1;");
+ return false;
+ } catch (e) {
+ return e instanceof ReferenceError;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-8-s.js b/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-8-s.js
new file mode 100644
index 000000000..4f4167f87
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-8-s.js
@@ -0,0 +1,22 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch11/11.13/11.13.2/11.13.2-8-s.js
+ * @description Strict Mode - ReferenceError is thrown if the LeftHandSideExpression of a Compound Assignment operator(>>>=) evaluates to an unresolvable reference
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+ try {
+ eval("_11_13_2_8 >>>= 1;");
+ return false;
+ } catch (e) {
+ return e instanceof ReferenceError;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-9-s.js b/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-9-s.js
new file mode 100644
index 000000000..3393d5c27
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/11.13.2-9-s.js
@@ -0,0 +1,22 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch11/11.13/11.13.2/11.13.2-9-s.js
+ * @description Strict Mode - ReferenceError is thrown if the LeftHandSideExpression of a Compound Assignment operator(&=) evaluates to an unresolvable reference
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+ try {
+ eval("_11_13_2_9 &= 1;");
+ return false;
+ } catch (e) {
+ return e instanceof ReferenceError;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A1_T1.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A1_T1.js
new file mode 100644
index 000000000..db0495c5c
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A1_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.
+
+/**
+ * White Space and Line Terminator between LeftHandSideExpression and "@=" or between "@=" and AssignmentExpression are allowed
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A1_T1.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A1_T10.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A1_T10.js
new file mode 100644
index 000000000..3487b3dd0
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A1_T10.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.
+
+/**
+ * White Space and Line Terminator between LeftHandSideExpression and "@=" or between "@=" and AssignmentExpression are allowed
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A1_T10.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A1_T11.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A1_T11.js
new file mode 100644
index 000000000..fc81632c0
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A1_T11.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.
+
+/**
+ * White Space and Line Terminator between LeftHandSideExpression and "@=" or between "@=" and AssignmentExpression are allowed
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A1_T11.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A1_T2.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A1_T2.js
new file mode 100644
index 000000000..1e15c0115
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A1_T2.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.
+
+/**
+ * White Space and Line Terminator between LeftHandSideExpression and "@=" or between "@=" and AssignmentExpression are allowed
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A1_T2.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A1_T3.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A1_T3.js
new file mode 100644
index 000000000..1e2a6760a
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A1_T3.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.
+
+/**
+ * White Space and Line Terminator between LeftHandSideExpression and "@=" or between "@=" and AssignmentExpression are allowed
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A1_T3.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A1_T4.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A1_T4.js
new file mode 100644
index 000000000..fa97eb77f
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A1_T4.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.
+
+/**
+ * White Space and Line Terminator between LeftHandSideExpression and "@=" or between "@=" and AssignmentExpression are allowed
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A1_T4.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A1_T5.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A1_T5.js
new file mode 100644
index 000000000..d4fc5a620
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A1_T5.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.
+
+/**
+ * White Space and Line Terminator between LeftHandSideExpression and "@=" or between "@=" and AssignmentExpression are allowed
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A1_T5.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A1_T6.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A1_T6.js
new file mode 100644
index 000000000..65370cf1b
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A1_T6.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.
+
+/**
+ * White Space and Line Terminator between LeftHandSideExpression and "@=" or between "@=" and AssignmentExpression are allowed
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A1_T6.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A1_T7.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A1_T7.js
new file mode 100644
index 000000000..5093eaeca
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A1_T7.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.
+
+/**
+ * White Space and Line Terminator between LeftHandSideExpression and "@=" or between "@=" and AssignmentExpression are allowed
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A1_T7.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A1_T8.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A1_T8.js
new file mode 100644
index 000000000..8469f353d
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A1_T8.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.
+
+/**
+ * White Space and Line Terminator between LeftHandSideExpression and "@=" or between "@=" and AssignmentExpression are allowed
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A1_T8.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A1_T9.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A1_T9.js
new file mode 100644
index 000000000..c73eac5e1
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A1_T9.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.
+
+/**
+ * White Space and Line Terminator between LeftHandSideExpression and "@=" or between "@=" and AssignmentExpression are allowed
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A1_T9.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A2.1_T1.1.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A2.1_T1.1.js
new file mode 100644
index 000000000..e6a01dd52
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A2.1_T1.1.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.
+
+/**
+ * Operator uses GetValue
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A2.1_T1.1.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A2.1_T1.10.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A2.1_T1.10.js
new file mode 100644
index 000000000..a85d13eb0
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A2.1_T1.10.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.
+
+/**
+ * Operator uses GetValue
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A2.1_T1.10.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A2.1_T1.11.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A2.1_T1.11.js
new file mode 100644
index 000000000..925ed41d6
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A2.1_T1.11.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.
+
+/**
+ * Operator uses GetValue
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A2.1_T1.11.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A2.1_T1.2.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A2.1_T1.2.js
new file mode 100644
index 000000000..d9ee6bd59
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A2.1_T1.2.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.
+
+/**
+ * Operator uses GetValue
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A2.1_T1.2.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A2.1_T1.3.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A2.1_T1.3.js
new file mode 100644
index 000000000..70586cfbb
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A2.1_T1.3.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.
+
+/**
+ * Operator uses GetValue
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A2.1_T1.3.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A2.1_T1.4.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A2.1_T1.4.js
new file mode 100644
index 000000000..7fcda2fec
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A2.1_T1.4.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.
+
+/**
+ * Operator uses GetValue
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A2.1_T1.4.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A2.1_T1.5.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A2.1_T1.5.js
new file mode 100644
index 000000000..db68d5585
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A2.1_T1.5.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.
+
+/**
+ * Operator uses GetValue
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A2.1_T1.5.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A2.1_T1.6.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A2.1_T1.6.js
new file mode 100644
index 000000000..f6f5ac7ca
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A2.1_T1.6.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.
+
+/**
+ * Operator uses GetValue
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A2.1_T1.6.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A2.1_T1.7.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A2.1_T1.7.js
new file mode 100644
index 000000000..cdc37d9ba
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A2.1_T1.7.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.
+
+/**
+ * Operator uses GetValue
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A2.1_T1.7.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A2.1_T1.8.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A2.1_T1.8.js
new file mode 100644
index 000000000..e53d41a51
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A2.1_T1.8.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.
+
+/**
+ * Operator uses GetValue
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A2.1_T1.8.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A2.1_T1.9.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A2.1_T1.9.js
new file mode 100644
index 000000000..a74dee97d
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A2.1_T1.9.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.
+
+/**
+ * Operator uses GetValue
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A2.1_T1.9.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A2.1_T2.1.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A2.1_T2.1.js
new file mode 100644
index 000000000..eede73f3d
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A2.1_T2.1.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.
+
+/**
+ * Operator uses GetValue
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A2.1_T2.1.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A2.1_T2.10.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A2.1_T2.10.js
new file mode 100644
index 000000000..27c243325
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A2.1_T2.10.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.
+
+/**
+ * Operator uses GetValue
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A2.1_T2.10.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A2.1_T2.11.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A2.1_T2.11.js
new file mode 100644
index 000000000..22cd6c1b8
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A2.1_T2.11.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.
+
+/**
+ * Operator uses GetValue
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A2.1_T2.11.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A2.1_T2.2.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A2.1_T2.2.js
new file mode 100644
index 000000000..02a39f6c4
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A2.1_T2.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.
+
+/**
+ * Operator uses GetValue
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A2.1_T2.2.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A2.1_T2.3.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A2.1_T2.3.js
new file mode 100644
index 000000000..1d11d3bce
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A2.1_T2.3.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.
+
+/**
+ * Operator uses GetValue
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A2.1_T2.3.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A2.1_T2.4.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A2.1_T2.4.js
new file mode 100644
index 000000000..771302777
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A2.1_T2.4.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.
+
+/**
+ * Operator uses GetValue
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A2.1_T2.4.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A2.1_T2.5.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A2.1_T2.5.js
new file mode 100644
index 000000000..500e5e6a9
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A2.1_T2.5.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.
+
+/**
+ * Operator uses GetValue
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A2.1_T2.5.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A2.1_T2.6.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A2.1_T2.6.js
new file mode 100644
index 000000000..9042f94bb
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A2.1_T2.6.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.
+
+/**
+ * Operator uses GetValue
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A2.1_T2.6.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A2.1_T2.7.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A2.1_T2.7.js
new file mode 100644
index 000000000..8c391557e
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A2.1_T2.7.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.
+
+/**
+ * Operator uses GetValue
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A2.1_T2.7.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A2.1_T2.8.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A2.1_T2.8.js
new file mode 100644
index 000000000..8db8963a9
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A2.1_T2.8.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.
+
+/**
+ * Operator uses GetValue
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A2.1_T2.8.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A2.1_T2.9.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A2.1_T2.9.js
new file mode 100644
index 000000000..a9155a34e
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A2.1_T2.9.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.
+
+/**
+ * Operator uses GetValue
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A2.1_T2.9.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A2.1_T3.1.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A2.1_T3.1.js
new file mode 100644
index 000000000..247f69ebc
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A2.1_T3.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.
+
+/**
+ * Operator uses GetValue
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A2.1_T3.1.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A2.1_T3.10.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A2.1_T3.10.js
new file mode 100644
index 000000000..2c8495ca8
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A2.1_T3.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.
+
+/**
+ * Operator uses GetValue
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A2.1_T3.10.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A2.1_T3.11.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A2.1_T3.11.js
new file mode 100644
index 000000000..9901b9db1
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A2.1_T3.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.
+
+/**
+ * Operator uses GetValue
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A2.1_T3.11.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A2.1_T3.2.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A2.1_T3.2.js
new file mode 100644
index 000000000..6832765ef
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A2.1_T3.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.
+
+/**
+ * Operator uses GetValue
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A2.1_T3.2.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A2.1_T3.3.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A2.1_T3.3.js
new file mode 100644
index 000000000..dc0df0e52
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A2.1_T3.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.
+
+/**
+ * Operator uses GetValue
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A2.1_T3.3.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A2.1_T3.4.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A2.1_T3.4.js
new file mode 100644
index 000000000..a32957d99
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A2.1_T3.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.
+
+/**
+ * Operator uses GetValue
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A2.1_T3.4.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A2.1_T3.5.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A2.1_T3.5.js
new file mode 100644
index 000000000..7e8f4601d
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A2.1_T3.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.
+
+/**
+ * Operator uses GetValue
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A2.1_T3.5.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A2.1_T3.6.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A2.1_T3.6.js
new file mode 100644
index 000000000..0c1d107bd
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A2.1_T3.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.
+
+/**
+ * Operator uses GetValue
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A2.1_T3.6.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A2.1_T3.7.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A2.1_T3.7.js
new file mode 100644
index 000000000..0fd60d869
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A2.1_T3.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.
+
+/**
+ * Operator uses GetValue
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A2.1_T3.7.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A2.1_T3.8.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A2.1_T3.8.js
new file mode 100644
index 000000000..57259d1da
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A2.1_T3.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.
+
+/**
+ * Operator uses GetValue
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A2.1_T3.8.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A2.1_T3.9.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A2.1_T3.9.js
new file mode 100644
index 000000000..eac242da4
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A2.1_T3.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.
+
+/**
+ * Operator uses GetValue
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A2.1_T3.9.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A2.2_T1.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A2.2_T1.js
new file mode 100644
index 000000000..d9ce71a56
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A2.2_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.
+
+/**
+ * Operator uses PutValue
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A2.2_T1.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A2.2_T10.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A2.2_T10.js
new file mode 100644
index 000000000..38c494279
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A2.2_T10.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.
+
+/**
+ * Operator uses PutValue
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A2.2_T10.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A2.2_T11.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A2.2_T11.js
new file mode 100644
index 000000000..45c162f86
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A2.2_T11.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.
+
+/**
+ * Operator uses PutValue
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A2.2_T11.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A2.2_T2.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A2.2_T2.js
new file mode 100644
index 000000000..7ba092e88
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A2.2_T2.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.
+
+/**
+ * Operator uses PutValue
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A2.2_T2.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A2.2_T3.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A2.2_T3.js
new file mode 100644
index 000000000..c26da6dd4
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A2.2_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.
+
+/**
+ * Operator uses PutValue
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A2.2_T3.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A2.2_T4.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A2.2_T4.js
new file mode 100644
index 000000000..bbfbd0f41
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A2.2_T4.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.
+
+/**
+ * Operator uses PutValue
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A2.2_T4.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A2.2_T5.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A2.2_T5.js
new file mode 100644
index 000000000..d9a53ecaf
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A2.2_T5.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.
+
+/**
+ * Operator uses PutValue
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A2.2_T5.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A2.2_T6.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A2.2_T6.js
new file mode 100644
index 000000000..34154341d
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A2.2_T6.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.
+
+/**
+ * Operator uses PutValue
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A2.2_T6.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A2.2_T7.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A2.2_T7.js
new file mode 100644
index 000000000..6f0e3fd4d
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A2.2_T7.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.
+
+/**
+ * Operator uses PutValue
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A2.2_T7.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A2.2_T8.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A2.2_T8.js
new file mode 100644
index 000000000..d82235391
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A2.2_T8.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.
+
+/**
+ * Operator uses PutValue
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A2.2_T8.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A2.2_T9.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A2.2_T9.js
new file mode 100644
index 000000000..f85aa27dd
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A2.2_T9.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.
+
+/**
+ * Operator uses PutValue
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A2.2_T9.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A3.1_T1.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A3.1_T1.js
new file mode 100644
index 000000000..a50a1cba5
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A3.1_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.
+
+/**
+ * Operator x @= y uses PutValue(x, x @ y)
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A3.1_T1.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A3.1_T10.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A3.1_T10.js
new file mode 100644
index 000000000..a552f7d08
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A3.1_T10.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.
+
+/**
+ * Operator x @= y uses PutValue(x, x @ y)
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A3.1_T10.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A3.1_T11.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A3.1_T11.js
new file mode 100644
index 000000000..6bacd0744
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A3.1_T11.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.
+
+/**
+ * Operator x @= y uses PutValue(x, x @ y)
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A3.1_T11.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A3.1_T2.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A3.1_T2.js
new file mode 100644
index 000000000..2b07ad143
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A3.1_T2.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.
+
+/**
+ * Operator x @= y uses PutValue(x, x @ y)
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A3.1_T2.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A3.1_T3.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A3.1_T3.js
new file mode 100644
index 000000000..74ca601ac
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A3.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.
+
+/**
+ * Operator x @= y uses PutValue(x, x @ y)
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A3.1_T3.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A3.1_T4.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A3.1_T4.js
new file mode 100644
index 000000000..b97dce0b0
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A3.1_T4.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.
+
+/**
+ * Operator x @= y uses PutValue(x, x @ y)
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A3.1_T4.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A3.1_T5.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A3.1_T5.js
new file mode 100644
index 000000000..266953269
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A3.1_T5.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.
+
+/**
+ * Operator x @= y uses PutValue(x, x @ y)
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A3.1_T5.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A3.1_T6.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A3.1_T6.js
new file mode 100644
index 000000000..08aac7981
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A3.1_T6.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.
+
+/**
+ * Operator x @= y uses PutValue(x, x @ y)
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A3.1_T6.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A3.1_T7.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A3.1_T7.js
new file mode 100644
index 000000000..b2102b2b8
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A3.1_T7.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.
+
+/**
+ * Operator x @= y uses PutValue(x, x @ y)
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A3.1_T7.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A3.1_T8.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A3.1_T8.js
new file mode 100644
index 000000000..7a7dbc7f6
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A3.1_T8.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.
+
+/**
+ * Operator x @= y uses PutValue(x, x @ y)
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A3.1_T8.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A3.1_T9.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A3.1_T9.js
new file mode 100644
index 000000000..8e1408df5
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A3.1_T9.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.
+
+/**
+ * Operator x @= y uses PutValue(x, x @ y)
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A3.1_T9.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A3.2_T1.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A3.2_T1.js
new file mode 100644
index 000000000..8a092bea6
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A3.2_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.
+
+/**
+ * Operator x @= y returns x @ y
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A3.2_T1.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A3.2_T10.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A3.2_T10.js
new file mode 100644
index 000000000..26de3f6ed
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A3.2_T10.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.
+
+/**
+ * Operator x @= y returns x @ y
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A3.2_T10.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A3.2_T11.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A3.2_T11.js
new file mode 100644
index 000000000..e9c1ed403
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A3.2_T11.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.
+
+/**
+ * Operator x @= y returns x @ y
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A3.2_T11.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A3.2_T2.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A3.2_T2.js
new file mode 100644
index 000000000..8de215e0f
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A3.2_T2.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.
+
+/**
+ * Operator x @= y returns x @ y
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A3.2_T2.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A3.2_T3.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A3.2_T3.js
new file mode 100644
index 000000000..2e4853ae2
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A3.2_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.
+
+/**
+ * Operator x @= y returns x @ y
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A3.2_T3.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A3.2_T4.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A3.2_T4.js
new file mode 100644
index 000000000..8aa84317f
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A3.2_T4.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.
+
+/**
+ * Operator x @= y returns x @ y
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A3.2_T4.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A3.2_T5.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A3.2_T5.js
new file mode 100644
index 000000000..50ca35e71
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A3.2_T5.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.
+
+/**
+ * Operator x @= y returns x @ y
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A3.2_T5.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A3.2_T6.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A3.2_T6.js
new file mode 100644
index 000000000..250be77af
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A3.2_T6.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.
+
+/**
+ * Operator x @= y returns x @ y
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A3.2_T6.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A3.2_T7.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A3.2_T7.js
new file mode 100644
index 000000000..d37cce498
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A3.2_T7.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.
+
+/**
+ * Operator x @= y returns x @ y
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A3.2_T7.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A3.2_T8.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A3.2_T8.js
new file mode 100644
index 000000000..f636cbfe5
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A3.2_T8.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.
+
+/**
+ * Operator x @= y returns x @ y
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A3.2_T8.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A3.2_T9.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A3.2_T9.js
new file mode 100644
index 000000000..de09e1fd5
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A3.2_T9.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.
+
+/**
+ * Operator x @= y returns x @ y
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A3.2_T9.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.10_T1.1.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.10_T1.1.js
new file mode 100644
index 000000000..e9b0ee0c4
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.10_T1.1.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.
+
+/**
+ * The production x ^= y is the same as x = x ^ y
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A4.10_T1.1.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.10_T1.2.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.10_T1.2.js
new file mode 100644
index 000000000..28a622e5b
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.10_T1.2.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.
+
+/**
+ * The production x ^= y is the same as x = x ^ y
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A4.10_T1.2.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.10_T1.3.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.10_T1.3.js
new file mode 100644
index 000000000..bfaec704b
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.10_T1.3.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.
+
+/**
+ * The production x ^= y is the same as x = x ^ y
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A4.10_T1.3.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.10_T1.4.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.10_T1.4.js
new file mode 100644
index 000000000..03b9f63e5
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.10_T1.4.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.
+
+/**
+ * The production x ^= y is the same as x = x ^ y
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A4.10_T1.4.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.10_T2.1.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.10_T2.1.js
new file mode 100644
index 000000000..82f176291
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.10_T2.1.js
@@ -0,0 +1,66 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * The production x ^= y is the same as x = x ^ y
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A4.10_T2.1.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.10_T2.2.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.10_T2.2.js
new file mode 100644
index 000000000..5b877f27a
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.10_T2.2.js
@@ -0,0 +1,80 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * The production x ^= y is the same as x = x ^ y
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A4.10_T2.2.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.10_T2.3.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.10_T2.3.js
new file mode 100644
index 000000000..a41eb8d6c
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.10_T2.3.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.
+
+/**
+ * The production x ^= y is the same as x = x ^ y
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A4.10_T2.3.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.10_T2.4.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.10_T2.4.js
new file mode 100644
index 000000000..666f20604
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.10_T2.4.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.
+
+/**
+ * The production x ^= y is the same as x = x ^ y
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A4.10_T2.4.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.10_T2.5.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.10_T2.5.js
new file mode 100644
index 000000000..aff6b25da
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.10_T2.5.js
@@ -0,0 +1,66 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * The production x ^= y is the same as x = x ^ y
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A4.10_T2.5.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.10_T2.6.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.10_T2.6.js
new file mode 100644
index 000000000..4b30cef36
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.10_T2.6.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.
+
+/**
+ * The production x ^= y is the same as x = x ^ y
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A4.10_T2.6.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.10_T2.7.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.10_T2.7.js
new file mode 100644
index 000000000..880fb66ec
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.10_T2.7.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.
+
+/**
+ * The production x ^= y is the same as x = x ^ y
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A4.10_T2.7.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.10_T2.8.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.10_T2.8.js
new file mode 100644
index 000000000..4e0e83855
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.10_T2.8.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.
+
+/**
+ * The production x ^= y is the same as x = x ^ y
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A4.10_T2.8.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.10_T2.9.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.10_T2.9.js
new file mode 100644
index 000000000..59a622d54
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.10_T2.9.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.
+
+/**
+ * The production x ^= y is the same as x = x ^ y
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A4.10_T2.9.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.11_T1.1.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.11_T1.1.js
new file mode 100644
index 000000000..afc6d63cf
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.11_T1.1.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.
+
+/**
+ * The production x |= y is the same as x = x | y
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A4.11_T1.1.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.11_T1.2.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.11_T1.2.js
new file mode 100644
index 000000000..24a4a8fa5
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.11_T1.2.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.
+
+/**
+ * The production x |= y is the same as x = x | y
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A4.11_T1.2.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.11_T1.3.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.11_T1.3.js
new file mode 100644
index 000000000..5e6ae229a
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.11_T1.3.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.
+
+/**
+ * The production x |= y is the same as x = x | y
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A4.11_T1.3.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.11_T1.4.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.11_T1.4.js
new file mode 100644
index 000000000..2c16de058
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.11_T1.4.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.
+
+/**
+ * The production x |= y is the same as x = x | y
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A4.11_T1.4.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.11_T2.1.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.11_T2.1.js
new file mode 100644
index 000000000..f764964f0
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.11_T2.1.js
@@ -0,0 +1,66 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * The production x |= y is the same as x = x | y
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A4.11_T2.1.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.11_T2.2.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.11_T2.2.js
new file mode 100644
index 000000000..46e183eb9
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.11_T2.2.js
@@ -0,0 +1,80 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * The production x |= y is the same as x = x | y
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A4.11_T2.2.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.11_T2.3.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.11_T2.3.js
new file mode 100644
index 000000000..070f1ecfe
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.11_T2.3.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.
+
+/**
+ * The production x |= y is the same as x = x | y
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A4.11_T2.3.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.11_T2.4.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.11_T2.4.js
new file mode 100644
index 000000000..e83610f36
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.11_T2.4.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.
+
+/**
+ * The production x |= y is the same as x = x | y
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A4.11_T2.4.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.11_T2.5.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.11_T2.5.js
new file mode 100644
index 000000000..0511f6674
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.11_T2.5.js
@@ -0,0 +1,66 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * The production x |= y is the same as x = x | y
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A4.11_T2.5.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.11_T2.6.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.11_T2.6.js
new file mode 100644
index 000000000..b3aa7445c
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.11_T2.6.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.
+
+/**
+ * The production x |= y is the same as x = x | y
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A4.11_T2.6.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.11_T2.7.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.11_T2.7.js
new file mode 100644
index 000000000..b1539ad74
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.11_T2.7.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.
+
+/**
+ * The production x |= y is the same as x = x | y
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A4.11_T2.7.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.11_T2.8.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.11_T2.8.js
new file mode 100644
index 000000000..dbe3e0a1f
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.11_T2.8.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.
+
+/**
+ * The production x |= y is the same as x = x | y
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A4.11_T2.8.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.11_T2.9.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.11_T2.9.js
new file mode 100644
index 000000000..aaf7e4a87
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.11_T2.9.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.
+
+/**
+ * The production x |= y is the same as x = x | y
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A4.11_T2.9.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.1_T1.1.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.1_T1.1.js
new file mode 100644
index 000000000..bfc284bbc
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.1_T1.1.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.
+
+/**
+ * The production x *= y is the same as the production x = x * y
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A4.1_T1.1.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.1_T1.2.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.1_T1.2.js
new file mode 100644
index 000000000..f13415b28
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.1_T1.2.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.
+
+/**
+ * The production x *= y is the same as the production x = x * y
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A4.1_T1.2.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.1_T1.3.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.1_T1.3.js
new file mode 100644
index 000000000..67aca8fc1
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.1_T1.3.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.
+
+/**
+ * The production x *= y is the same as the production x = x * y
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A4.1_T1.3.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.1_T1.4.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.1_T1.4.js
new file mode 100644
index 000000000..fbb268105
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.1_T1.4.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.
+
+/**
+ * The production x *= y is the same as the production x = x * y
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A4.1_T1.4.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.1_T2.1.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.1_T2.1.js
new file mode 100644
index 000000000..29db0f5cb
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.1_T2.1.js
@@ -0,0 +1,66 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * The production x *= y is the same as the production x = x * y
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A4.1_T2.1.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.1_T2.2.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.1_T2.2.js
new file mode 100644
index 000000000..7d3046127
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.1_T2.2.js
@@ -0,0 +1,80 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * The production x *= y is the same as the production x = x * y
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A4.1_T2.2.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.1_T2.3.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.1_T2.3.js
new file mode 100644
index 000000000..b796dc5cb
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.1_T2.3.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.
+
+/**
+ * The production x *= y is the same as the production x = x * y
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A4.1_T2.3.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.1_T2.4.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.1_T2.4.js
new file mode 100644
index 000000000..925d73634
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.1_T2.4.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.
+
+/**
+ * The production x *= y is the same as the production x = x * y
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A4.1_T2.4.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.1_T2.5.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.1_T2.5.js
new file mode 100644
index 000000000..7799377cd
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.1_T2.5.js
@@ -0,0 +1,66 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * The production x *= y is the same as the production x = x * y
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A4.1_T2.5.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.1_T2.6.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.1_T2.6.js
new file mode 100644
index 000000000..07be01351
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.1_T2.6.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.
+
+/**
+ * The production x *= y is the same as the production x = x * y
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A4.1_T2.6.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.1_T2.7.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.1_T2.7.js
new file mode 100644
index 000000000..b0e8eddc4
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.1_T2.7.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.
+
+/**
+ * The production x *= y is the same as the production x = x * y
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A4.1_T2.7.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.1_T2.8.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.1_T2.8.js
new file mode 100644
index 000000000..dc0adc04c
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.1_T2.8.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.
+
+/**
+ * The production x *= y is the same as the production x = x * y
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A4.1_T2.8.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.1_T2.9.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.1_T2.9.js
new file mode 100644
index 000000000..0a7443afe
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.1_T2.9.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.
+
+/**
+ * The production x *= y is the same as the production x = x * y
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A4.1_T2.9.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.2_T1.1.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.2_T1.1.js
new file mode 100644
index 000000000..da1ab4cdf
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.2_T1.1.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.
+
+/**
+ * The production x /= y is the same as x = x / y
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A4.2_T1.1.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.2_T1.2.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.2_T1.2.js
new file mode 100644
index 000000000..3287c7c78
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.2_T1.2.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.
+
+/**
+ * The production x /= y is the same as x = x / y
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A4.2_T1.2.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.2_T1.3.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.2_T1.3.js
new file mode 100644
index 000000000..d327257ff
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.2_T1.3.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.
+
+/**
+ * The production x /= y is the same as x = x / y
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A4.2_T1.3.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.2_T1.4.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.2_T1.4.js
new file mode 100644
index 000000000..e97535c94
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.2_T1.4.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.
+
+/**
+ * The production x /= y is the same as x = x / y
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A4.2_T1.4.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.2_T2.1.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.2_T2.1.js
new file mode 100644
index 000000000..46eae946e
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.2_T2.1.js
@@ -0,0 +1,66 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * The production x /= y is the same as x = x / y
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A4.2_T2.1.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.2_T2.2.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.2_T2.2.js
new file mode 100644
index 000000000..8a607b515
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.2_T2.2.js
@@ -0,0 +1,80 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * The production x /= y is the same as x = x / y
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A4.2_T2.2.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.2_T2.3.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.2_T2.3.js
new file mode 100644
index 000000000..dae7a092a
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.2_T2.3.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.
+
+/**
+ * The production x /= y is the same as x = x / y
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A4.2_T2.3.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.2_T2.4.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.2_T2.4.js
new file mode 100644
index 000000000..28c6d611d
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.2_T2.4.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.
+
+/**
+ * The production x /= y is the same as x = x / y
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A4.2_T2.4.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.2_T2.5.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.2_T2.5.js
new file mode 100644
index 000000000..f4ea9ad5f
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.2_T2.5.js
@@ -0,0 +1,66 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * The production x /= y is the same as x = x / y
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A4.2_T2.5.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.2_T2.6.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.2_T2.6.js
new file mode 100644
index 000000000..91ce4dd2b
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.2_T2.6.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.
+
+/**
+ * The production x /= y is the same as x = x / y
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A4.2_T2.6.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.2_T2.7.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.2_T2.7.js
new file mode 100644
index 000000000..99905f4d9
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.2_T2.7.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.
+
+/**
+ * The production x /= y is the same as x = x / y
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A4.2_T2.7.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.2_T2.8.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.2_T2.8.js
new file mode 100644
index 000000000..c5c373b76
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.2_T2.8.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.
+
+/**
+ * The production x /= y is the same as x = x / y
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A4.2_T2.8.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.2_T2.9.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.2_T2.9.js
new file mode 100644
index 000000000..466f9ce87
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.2_T2.9.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.
+
+/**
+ * The production x /= y is the same as x = x / y
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A4.2_T2.9.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.3_T1.1.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.3_T1.1.js
new file mode 100644
index 000000000..bb8d9cccd
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.3_T1.1.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.
+
+/**
+ * The production x %= y is the same as x = x % y
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A4.3_T1.1.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.3_T1.2.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.3_T1.2.js
new file mode 100644
index 000000000..97093ecdb
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.3_T1.2.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.
+
+/**
+ * The production x %= y is the same as x = x % y
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A4.3_T1.2.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.3_T1.3.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.3_T1.3.js
new file mode 100644
index 000000000..e95df69bb
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.3_T1.3.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.
+
+/**
+ * The production x %= y is the same as x = x % y
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A4.3_T1.3.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.3_T1.4.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.3_T1.4.js
new file mode 100644
index 000000000..51e763cac
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.3_T1.4.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.
+
+/**
+ * The production x %= y is the same as x = x % y
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A4.3_T1.4.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.3_T2.1.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.3_T2.1.js
new file mode 100644
index 000000000..a45476433
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.3_T2.1.js
@@ -0,0 +1,66 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * The production x %= y is the same as x = x % y
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A4.3_T2.1.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.3_T2.2.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.3_T2.2.js
new file mode 100644
index 000000000..e2027c6b3
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.3_T2.2.js
@@ -0,0 +1,80 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * The production x %= y is the same as x = x % y
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A4.3_T2.2.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.3_T2.3.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.3_T2.3.js
new file mode 100644
index 000000000..8566f8702
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.3_T2.3.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.
+
+/**
+ * The production x %= y is the same as x = x % y
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A4.3_T2.3.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.3_T2.4.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.3_T2.4.js
new file mode 100644
index 000000000..259c937b4
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.3_T2.4.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.
+
+/**
+ * The production x %= y is the same as x = x % y
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A4.3_T2.4.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.3_T2.5.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.3_T2.5.js
new file mode 100644
index 000000000..69bff3cb4
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.3_T2.5.js
@@ -0,0 +1,66 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * The production x %= y is the same as x = x % y
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A4.3_T2.5.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.3_T2.6.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.3_T2.6.js
new file mode 100644
index 000000000..51f30a6d0
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.3_T2.6.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.
+
+/**
+ * The production x %= y is the same as x = x % y
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A4.3_T2.6.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.3_T2.7.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.3_T2.7.js
new file mode 100644
index 000000000..e451b5bfe
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.3_T2.7.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.
+
+/**
+ * The production x %= y is the same as x = x % y
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A4.3_T2.7.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.3_T2.8.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.3_T2.8.js
new file mode 100644
index 000000000..59a57095d
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.3_T2.8.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.
+
+/**
+ * The production x %= y is the same as x = x % y
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A4.3_T2.8.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.3_T2.9.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.3_T2.9.js
new file mode 100644
index 000000000..ebb9b209f
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.3_T2.9.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.
+
+/**
+ * The production x %= y is the same as x = x % y
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A4.3_T2.9.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.4_T1.1.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.4_T1.1.js
new file mode 100644
index 000000000..11313aac6
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.4_T1.1.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.
+
+/**
+ * The production x += y is the same as x = x + y
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A4.4_T1.1.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.4_T1.2.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.4_T1.2.js
new file mode 100644
index 000000000..141d56b4d
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.4_T1.2.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.
+
+/**
+ * The production x += y is the same as x = x + y
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A4.4_T1.2.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.4_T1.3.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.4_T1.3.js
new file mode 100644
index 000000000..da89e3789
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.4_T1.3.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.
+
+/**
+ * The production x += y is the same as x = x + y
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A4.4_T1.3.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.4_T1.4.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.4_T1.4.js
new file mode 100644
index 000000000..3ae788c91
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.4_T1.4.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.
+
+/**
+ * The production x += y is the same as x = x + y
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A4.4_T1.4.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.4_T2.1.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.4_T2.1.js
new file mode 100644
index 000000000..b26a00f80
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.4_T2.1.js
@@ -0,0 +1,66 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * The production x += y is the same as x = x + y
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A4.4_T2.1.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.4_T2.2.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.4_T2.2.js
new file mode 100644
index 000000000..73b6923bf
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.4_T2.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.
+
+/**
+ * The production x += y is the same as x = x + y
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A4.4_T2.2.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.4_T2.3.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.4_T2.3.js
new file mode 100644
index 000000000..158d2aa24
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.4_T2.3.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.
+
+/**
+ * The production x += y is the same as x = x + y
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A4.4_T2.3.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.4_T2.4.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.4_T2.4.js
new file mode 100644
index 000000000..f54e30a45
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.4_T2.4.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.
+
+/**
+ * The production x += y is the same as x = x + y
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A4.4_T2.4.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.4_T2.5.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.4_T2.5.js
new file mode 100644
index 000000000..b020ca563
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.4_T2.5.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.
+
+/**
+ * The production x += y is the same as x = x + y
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A4.4_T2.5.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.4_T2.6.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.4_T2.6.js
new file mode 100644
index 000000000..7833c0ce9
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.4_T2.6.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.
+
+/**
+ * The production x += y is the same as x = x + y
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A4.4_T2.6.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.4_T2.7.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.4_T2.7.js
new file mode 100644
index 000000000..2d80cf750
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.4_T2.7.js
@@ -0,0 +1,66 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * The production x += y is the same as x = x + y
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A4.4_T2.7.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.4_T2.8.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.4_T2.8.js
new file mode 100644
index 000000000..c5f364c15
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.4_T2.8.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.
+
+/**
+ * The production x += y is the same as x = x + y
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A4.4_T2.8.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.4_T2.9.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.4_T2.9.js
new file mode 100644
index 000000000..f2a986ab8
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.4_T2.9.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.
+
+/**
+ * The production x += y is the same as x = x + y
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A4.4_T2.9.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.5_T1.1.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.5_T1.1.js
new file mode 100644
index 000000000..1a155d3da
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.5_T1.1.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.
+
+/**
+ * The production x -= y is the same as x = x - y
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A4.5_T1.1.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.5_T1.2.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.5_T1.2.js
new file mode 100644
index 000000000..42d5abdb7
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.5_T1.2.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.
+
+/**
+ * The production x -= y is the same as x = x - y
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A4.5_T1.2.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.5_T1.3.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.5_T1.3.js
new file mode 100644
index 000000000..298948f61
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.5_T1.3.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.
+
+/**
+ * The production x -= y is the same as x = x - y
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A4.5_T1.3.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.5_T1.4.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.5_T1.4.js
new file mode 100644
index 000000000..28a9d2d76
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.5_T1.4.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.
+
+/**
+ * The production x -= y is the same as x = x - y
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A4.5_T1.4.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.5_T2.1.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.5_T2.1.js
new file mode 100644
index 000000000..94b810cbc
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.5_T2.1.js
@@ -0,0 +1,66 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * The production x -= y is the same as x = x - y
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A4.5_T2.1.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.5_T2.2.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.5_T2.2.js
new file mode 100644
index 000000000..e71788b75
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.5_T2.2.js
@@ -0,0 +1,80 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * The production x -= y is the same as x = x - y
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A4.5_T2.2.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.5_T2.3.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.5_T2.3.js
new file mode 100644
index 000000000..f7385f53f
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.5_T2.3.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.
+
+/**
+ * The production x -= y is the same as x = x - y
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A4.5_T2.3.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.5_T2.4.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.5_T2.4.js
new file mode 100644
index 000000000..0c1c5375f
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.5_T2.4.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.
+
+/**
+ * The production x -= y is the same as x = x - y
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A4.5_T2.4.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.5_T2.5.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.5_T2.5.js
new file mode 100644
index 000000000..c6c26409c
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.5_T2.5.js
@@ -0,0 +1,66 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * The production x -= y is the same as x = x - y
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A4.5_T2.5.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.5_T2.6.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.5_T2.6.js
new file mode 100644
index 000000000..39b17aeeb
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.5_T2.6.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.
+
+/**
+ * The production x -= y is the same as x = x - y
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A4.5_T2.6.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.5_T2.7.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.5_T2.7.js
new file mode 100644
index 000000000..b6d0cc0a8
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.5_T2.7.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.
+
+/**
+ * The production x -= y is the same as x = x - y
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A4.5_T2.7.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.5_T2.8.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.5_T2.8.js
new file mode 100644
index 000000000..61c68cfa3
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.5_T2.8.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.
+
+/**
+ * The production x -= y is the same as x = x - y
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A4.5_T2.8.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.5_T2.9.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.5_T2.9.js
new file mode 100644
index 000000000..4881e2d8b
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.5_T2.9.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.
+
+/**
+ * The production x -= y is the same as x = x - y
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A4.5_T2.9.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.6_T1.1.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.6_T1.1.js
new file mode 100644
index 000000000..d4b6680cf
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.6_T1.1.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.
+
+/**
+ * The production x <<= y is the same as x = x << y
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A4.6_T1.1.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.6_T1.2.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.6_T1.2.js
new file mode 100644
index 000000000..63493abb6
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.6_T1.2.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.
+
+/**
+ * The production x <<= y is the same as x = x << y
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A4.6_T1.2.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.6_T1.3.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.6_T1.3.js
new file mode 100644
index 000000000..8a31b37ed
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.6_T1.3.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.
+
+/**
+ * The production x <<= y is the same as x = x << y
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A4.6_T1.3.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.6_T1.4.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.6_T1.4.js
new file mode 100644
index 000000000..1c1a81781
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.6_T1.4.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.
+
+/**
+ * The production x <<= y is the same as x = x << y
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A4.6_T1.4.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.6_T2.1.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.6_T2.1.js
new file mode 100644
index 000000000..9348c745e
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.6_T2.1.js
@@ -0,0 +1,66 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * The production x <<= y is the same as x = x << y
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A4.6_T2.1.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.6_T2.2.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.6_T2.2.js
new file mode 100644
index 000000000..2cd913d8e
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.6_T2.2.js
@@ -0,0 +1,80 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * The production x <<= y is the same as x = x << y
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A4.6_T2.2.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.6_T2.3.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.6_T2.3.js
new file mode 100644
index 000000000..6040e1de8
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.6_T2.3.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.
+
+/**
+ * The production x <<= y is the same as x = x << y
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A4.6_T2.3.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.6_T2.4.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.6_T2.4.js
new file mode 100644
index 000000000..1eee51320
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.6_T2.4.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.
+
+/**
+ * The production x <<= y is the same as x = x << y
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A4.6_T2.4.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.6_T2.5.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.6_T2.5.js
new file mode 100644
index 000000000..7616e4e7c
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.6_T2.5.js
@@ -0,0 +1,66 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * The production x <<= y is the same as x = x << y
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A4.6_T2.5.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.6_T2.6.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.6_T2.6.js
new file mode 100644
index 000000000..6fbf4f4f2
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.6_T2.6.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.
+
+/**
+ * The production x <<= y is the same as x = x << y
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A4.6_T2.6.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.6_T2.7.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.6_T2.7.js
new file mode 100644
index 000000000..ce324f83a
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.6_T2.7.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.
+
+/**
+ * The production x <<= y is the same as x = x << y
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A4.6_T2.7.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.6_T2.8.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.6_T2.8.js
new file mode 100644
index 000000000..606ae17bc
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.6_T2.8.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.
+
+/**
+ * The production x <<= y is the same as x = x << y
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A4.6_T2.8.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.6_T2.9.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.6_T2.9.js
new file mode 100644
index 000000000..2b0820a85
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.6_T2.9.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.
+
+/**
+ * The production x <<= y is the same as x = x << y
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A4.6_T2.9.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.7_T1.1.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.7_T1.1.js
new file mode 100644
index 000000000..aeb328d7c
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.7_T1.1.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.
+
+/**
+ * The production x >>= y is the same as x = x >> y
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A4.7_T1.1.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.7_T1.2.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.7_T1.2.js
new file mode 100644
index 000000000..dc83e1ad0
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.7_T1.2.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.
+
+/**
+ * The production x >>= y is the same as x = x >> y
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A4.7_T1.2.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.7_T1.3.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.7_T1.3.js
new file mode 100644
index 000000000..9513cf37d
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.7_T1.3.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.
+
+/**
+ * The production x >>= y is the same as x = x >> y
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A4.7_T1.3.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.7_T1.4.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.7_T1.4.js
new file mode 100644
index 000000000..7195a5e44
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.7_T1.4.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.
+
+/**
+ * The production x >>= y is the same as x = x >> y
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A4.7_T1.4.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.7_T2.1.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.7_T2.1.js
new file mode 100644
index 000000000..8fa6a383c
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.7_T2.1.js
@@ -0,0 +1,66 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * The production x >>= y is the same as x = x >> y
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A4.7_T2.1.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.7_T2.2.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.7_T2.2.js
new file mode 100644
index 000000000..87e69c0aa
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.7_T2.2.js
@@ -0,0 +1,80 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * The production x >>= y is the same as x = x >> y
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A4.7_T2.2.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.7_T2.3.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.7_T2.3.js
new file mode 100644
index 000000000..0cf56fb53
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.7_T2.3.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.
+
+/**
+ * The production x >>= y is the same as x = x >> y
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A4.7_T2.3.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.7_T2.4.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.7_T2.4.js
new file mode 100644
index 000000000..f9ad58a30
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.7_T2.4.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.
+
+/**
+ * The production x >>= y is the same as x = x >> y
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A4.7_T2.4.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.7_T2.5.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.7_T2.5.js
new file mode 100644
index 000000000..bdc8b729f
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.7_T2.5.js
@@ -0,0 +1,66 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * The production x >>= y is the same as x = x >> y
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A4.7_T2.5.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.7_T2.6.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.7_T2.6.js
new file mode 100644
index 000000000..970a3540b
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.7_T2.6.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.
+
+/**
+ * The production x >>= y is the same as x = x >> y
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A4.7_T2.6.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.7_T2.7.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.7_T2.7.js
new file mode 100644
index 000000000..7720b5512
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.7_T2.7.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.
+
+/**
+ * The production x >>= y is the same as x = x >> y
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A4.7_T2.7.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.7_T2.8.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.7_T2.8.js
new file mode 100644
index 000000000..05a4415a1
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.7_T2.8.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.
+
+/**
+ * The production x >>= y is the same as x = x >> y
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A4.7_T2.8.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.7_T2.9.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.7_T2.9.js
new file mode 100644
index 000000000..ddfdbfc64
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.7_T2.9.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.
+
+/**
+ * The production x >>= y is the same as x = x >> y
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A4.7_T2.9.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.8_T1.1.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.8_T1.1.js
new file mode 100644
index 000000000..0b2e033dc
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.8_T1.1.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.
+
+/**
+ * The production x >>>= y is the same as x = x >>> y
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A4.8_T1.1.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.8_T1.2.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.8_T1.2.js
new file mode 100644
index 000000000..64cb86684
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.8_T1.2.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.
+
+/**
+ * The production x >>>= y is the same as x = x >>> y
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A4.8_T1.2.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.8_T1.3.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.8_T1.3.js
new file mode 100644
index 000000000..47f197886
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.8_T1.3.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.
+
+/**
+ * The production x >>>= y is the same as x = x >>> y
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A4.8_T1.3.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.8_T1.4.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.8_T1.4.js
new file mode 100644
index 000000000..6464ffa82
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.8_T1.4.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.
+
+/**
+ * The production x >>>= y is the same as x = x >>> y
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A4.8_T1.4.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.8_T2.1.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.8_T2.1.js
new file mode 100644
index 000000000..f610d8278
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.8_T2.1.js
@@ -0,0 +1,66 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * The production x >>>= y is the same as x = x >>> y
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A4.8_T2.1.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.8_T2.2.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.8_T2.2.js
new file mode 100644
index 000000000..9a1d719fe
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.8_T2.2.js
@@ -0,0 +1,80 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * The production x >>>= y is the same as x = x >>> y
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A4.8_T2.2.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.8_T2.3.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.8_T2.3.js
new file mode 100644
index 000000000..bf809a272
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.8_T2.3.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.
+
+/**
+ * The production x >>>= y is the same as x = x >>> y
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A4.8_T2.3.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.8_T2.4.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.8_T2.4.js
new file mode 100644
index 000000000..4e034735f
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.8_T2.4.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.
+
+/**
+ * The production x >>>= y is the same as x = x >>> y
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A4.8_T2.4.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.8_T2.5.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.8_T2.5.js
new file mode 100644
index 000000000..cf319f71d
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.8_T2.5.js
@@ -0,0 +1,66 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * The production x >>>= y is the same as x = x >>> y
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A4.8_T2.5.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.8_T2.6.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.8_T2.6.js
new file mode 100644
index 000000000..d73b02dd2
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.8_T2.6.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.
+
+/**
+ * The production x >>>= y is the same as x = x >>> y
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A4.8_T2.6.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.8_T2.7.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.8_T2.7.js
new file mode 100644
index 000000000..b62931e6b
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.8_T2.7.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.
+
+/**
+ * The production x >>>= y is the same as x = x >>> y
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A4.8_T2.7.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.8_T2.8.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.8_T2.8.js
new file mode 100644
index 000000000..a463cca10
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.8_T2.8.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.
+
+/**
+ * The production x >>>= y is the same as x = x >>> y
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A4.8_T2.8.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.8_T2.9.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.8_T2.9.js
new file mode 100644
index 000000000..e055c7d2d
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.8_T2.9.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.
+
+/**
+ * The production x >>>= y is the same as x = x >>> y
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A4.8_T2.9.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.9_T1.1.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.9_T1.1.js
new file mode 100644
index 000000000..13be4e002
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.9_T1.1.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.
+
+/**
+ * The production x &= y is the same as x = x & y
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A4.9_T1.1.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.9_T1.2.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.9_T1.2.js
new file mode 100644
index 000000000..cc1eb514b
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.9_T1.2.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.
+
+/**
+ * The production x &= y is the same as x = x & y
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A4.9_T1.2.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.9_T1.3.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.9_T1.3.js
new file mode 100644
index 000000000..e845b3c9d
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.9_T1.3.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.
+
+/**
+ * The production x &= y is the same as x = x & y
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A4.9_T1.3.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.9_T1.4.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.9_T1.4.js
new file mode 100644
index 000000000..dd93cbb91
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.9_T1.4.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.
+
+/**
+ * The production x &= y is the same as x = x & y
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A4.9_T1.4.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.9_T2.1.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.9_T2.1.js
new file mode 100644
index 000000000..05cd8f837
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.9_T2.1.js
@@ -0,0 +1,66 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * The production x &= y is the same as x = x & y
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A4.9_T2.1.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.9_T2.2.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.9_T2.2.js
new file mode 100644
index 000000000..b394dd6e7
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.9_T2.2.js
@@ -0,0 +1,80 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * The production x &= y is the same as x = x & y
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A4.9_T2.2.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.9_T2.3.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.9_T2.3.js
new file mode 100644
index 000000000..b4150a583
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.9_T2.3.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.
+
+/**
+ * The production x &= y is the same as x = x & y
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A4.9_T2.3.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.9_T2.4.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.9_T2.4.js
new file mode 100644
index 000000000..f7bb4d4d8
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.9_T2.4.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.
+
+/**
+ * The production x &= y is the same as x = x & y
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A4.9_T2.4.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.9_T2.5.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.9_T2.5.js
new file mode 100644
index 000000000..a9ce33f78
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.9_T2.5.js
@@ -0,0 +1,66 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * The production x &= y is the same as x = x & y
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A4.9_T2.5.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.9_T2.6.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.9_T2.6.js
new file mode 100644
index 000000000..2a62b9723
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.9_T2.6.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.
+
+/**
+ * The production x &= y is the same as x = x & y
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A4.9_T2.6.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.9_T2.7.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.9_T2.7.js
new file mode 100644
index 000000000..b9303bf5f
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.9_T2.7.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.
+
+/**
+ * The production x &= y is the same as x = x & y
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A4.9_T2.7.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.9_T2.8.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.9_T2.8.js
new file mode 100644
index 000000000..0e4db1ffe
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.9_T2.8.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.
+
+/**
+ * The production x &= y is the same as x = x & y
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A4.9_T2.8.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.9_T2.9.js b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.9_T2.9.js
new file mode 100644
index 000000000..3e5a05304
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/S11.13.2_A4.9_T2.9.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.
+
+/**
+ * The production x &= y is the same as x = x & y
+ *
+ * @path ch11/11.13/11.13.2/S11.13.2_A4.9_T2.9.js
+ * @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/js/src/tests/test262/ch11/11.13/11.13.2/browser.js b/js/src/tests/test262/ch11/11.13/11.13.2/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/browser.js
diff --git a/js/src/tests/test262/ch11/11.13/11.13.2/shell.js b/js/src/tests/test262/ch11/11.13/11.13.2/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/11.13.2/shell.js
diff --git a/js/src/tests/test262/ch11/11.13/browser.js b/js/src/tests/test262/ch11/11.13/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/browser.js
diff --git a/js/src/tests/test262/ch11/11.13/shell.js b/js/src/tests/test262/ch11/11.13/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.13/shell.js
diff --git a/js/src/tests/test262/ch11/11.14/S11.14_A1.js b/js/src/tests/test262/ch11/11.14/S11.14_A1.js
new file mode 100644
index 000000000..2e3528db4
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.14/S11.14_A1.js
@@ -0,0 +1,61 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * White Space and Line Terminator between Expression and , or between , and AssignmentExpression are allowed
+ *
+ * @path ch11/11.14/S11.14_A1.js
+ * @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/js/src/tests/test262/ch11/11.14/S11.14_A2.1_T1.js b/js/src/tests/test262/ch11/11.14/S11.14_A2.1_T1.js
new file mode 100644
index 000000000..e53336886
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.14/S11.14_A2.1_T1.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.
+
+/**
+ * Operator uses GetValue
+ *
+ * @path ch11/11.14/S11.14_A2.1_T1.js
+ * @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/js/src/tests/test262/ch11/11.14/S11.14_A2.1_T2.js b/js/src/tests/test262/ch11/11.14/S11.14_A2.1_T2.js
new file mode 100644
index 000000000..3a6106edd
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.14/S11.14_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.
+
+/**
+ * Operator uses GetValue
+ *
+ * @path ch11/11.14/S11.14_A2.1_T2.js
+ * @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/js/src/tests/test262/ch11/11.14/S11.14_A2.1_T3.js b/js/src/tests/test262/ch11/11.14/S11.14_A2.1_T3.js
new file mode 100644
index 000000000..ad654eeb0
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.14/S11.14_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.
+
+/**
+ * Operator uses GetValue
+ *
+ * @path ch11/11.14/S11.14_A2.1_T3.js
+ * @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/js/src/tests/test262/ch11/11.14/S11.14_A3.js b/js/src/tests/test262/ch11/11.14/S11.14_A3.js
new file mode 100644
index 000000000..d8858aa3d
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.14/S11.14_A3.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.
+
+/**
+ * Comma Operator evaluates all Expressions and returns the last of them
+ *
+ * @path ch11/11.14/S11.14_A3.js
+ * @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/js/src/tests/test262/ch11/11.14/browser.js b/js/src/tests/test262/ch11/11.14/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.14/browser.js
diff --git a/js/src/tests/test262/ch11/11.14/shell.js b/js/src/tests/test262/ch11/11.14/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.14/shell.js
diff --git a/js/src/tests/test262/ch11/11.2/11.2.1/S11.2.1_A1.1.js b/js/src/tests/test262/ch11/11.2/11.2.1/S11.2.1_A1.1.js
new file mode 100644
index 000000000..d8b3561b8
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.2/11.2.1/S11.2.1_A1.1.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.
+
+/**
+ * White Space and Line Terminator between MemberExpression or CallExpression and "." and between "." and Identifier are allowed
+ *
+ * @path ch11/11.2/11.2.1/S11.2.1_A1.1.js
+ * @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/js/src/tests/test262/ch11/11.2/11.2.1/S11.2.1_A1.2.js b/js/src/tests/test262/ch11/11.2/11.2.1/S11.2.1_A1.2.js
new file mode 100644
index 000000000..a820dbd5d
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.2/11.2.1/S11.2.1_A1.2.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.
+
+/**
+ * White Space and Line Terminator between "[" and MemberExpression or CallExpression and between Identifier and "]" are allowed
+ *
+ * @path ch11/11.2/11.2.1/S11.2.1_A1.2.js
+ * @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/js/src/tests/test262/ch11/11.2/11.2.1/S11.2.1_A2.js b/js/src/tests/test262/ch11/11.2/11.2.1/S11.2.1_A2.js
new file mode 100644
index 000000000..1237eae5e
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.2/11.2.1/S11.2.1_A2.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.
+
+/**
+ * MemberExpression and CallExpression uses GetValue
+ *
+ * @path ch11/11.2/11.2.1/S11.2.1_A2.js
+ * @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/js/src/tests/test262/ch11/11.2/11.2.1/S11.2.1_A3_T1.js b/js/src/tests/test262/ch11/11.2/11.2.1/S11.2.1_A3_T1.js
new file mode 100644
index 000000000..a13f25e7b
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.2/11.2.1/S11.2.1_A3_T1.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.
+
+/**
+ * MemberExpression calls ToObject(MemberExpression) and ToString(Expression). CallExpression calls ToObject(CallExpression) and ToString(Expression)
+ *
+ * @path ch11/11.2/11.2.1/S11.2.1_A3_T1.js
+ * @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/js/src/tests/test262/ch11/11.2/11.2.1/S11.2.1_A3_T2.js b/js/src/tests/test262/ch11/11.2/11.2.1/S11.2.1_A3_T2.js
new file mode 100644
index 000000000..defe6a8c8
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.2/11.2.1/S11.2.1_A3_T2.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.
+
+/**
+ * MemberExpression calls ToObject(MemberExpression) and ToString(Expression). CallExpression calls ToObject(CallExpression) and ToString(Expression)
+ *
+ * @path ch11/11.2/11.2.1/S11.2.1_A3_T2.js
+ * @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/js/src/tests/test262/ch11/11.2/11.2.1/S11.2.1_A3_T3.js b/js/src/tests/test262/ch11/11.2/11.2.1/S11.2.1_A3_T3.js
new file mode 100644
index 000000000..14a0e85e3
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.2/11.2.1/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.
+
+/**
+ * MemberExpression calls ToObject(MemberExpression) and ToString(Expression). CallExpression calls ToObject(CallExpression) and ToString(Expression)
+ *
+ * @path ch11/11.2/11.2.1/S11.2.1_A3_T3.js
+ * @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/js/src/tests/test262/ch11/11.2/11.2.1/S11.2.1_A3_T4.js b/js/src/tests/test262/ch11/11.2/11.2.1/S11.2.1_A3_T4.js
new file mode 100644
index 000000000..2c360c65d
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.2/11.2.1/S11.2.1_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.
+
+/**
+ * MemberExpression calls ToObject(MemberExpression) and ToString(Expression). CallExpression calls ToObject(CallExpression) and ToString(Expression)
+ *
+ * @path ch11/11.2/11.2.1/S11.2.1_A3_T4.js
+ * @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/js/src/tests/test262/ch11/11.2/11.2.1/S11.2.1_A3_T5.js b/js/src/tests/test262/ch11/11.2/11.2.1/S11.2.1_A3_T5.js
new file mode 100644
index 000000000..405415f72
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.2/11.2.1/S11.2.1_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.
+
+/**
+ * MemberExpression calls ToObject(MemberExpression) and ToString(Expression). CallExpression calls ToObject(CallExpression) and ToString(Expression)
+ *
+ * @path ch11/11.2/11.2.1/S11.2.1_A3_T5.js
+ * @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/js/src/tests/test262/ch11/11.2/11.2.1/S11.2.1_A4_T1.js b/js/src/tests/test262/ch11/11.2/11.2.1/S11.2.1_A4_T1.js
new file mode 100644
index 000000000..8f9212243
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.2/11.2.1/S11.2.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.
+
+/**
+ * Check type of various properties
+ *
+ * @path ch11/11.2/11.2.1/S11.2.1_A4_T1.js
+ * @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.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/js/src/tests/test262/ch11/11.2/11.2.1/S11.2.1_A4_T2.js b/js/src/tests/test262/ch11/11.2/11.2.1/S11.2.1_A4_T2.js
new file mode 100644
index 000000000..ed27f8534
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.2/11.2.1/S11.2.1_A4_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.
+
+/**
+ * Check type of various properties
+ *
+ * @path ch11/11.2/11.2.1/S11.2.1_A4_T2.js
+ * @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/js/src/tests/test262/ch11/11.2/11.2.1/S11.2.1_A4_T3.js b/js/src/tests/test262/ch11/11.2/11.2.1/S11.2.1_A4_T3.js
new file mode 100644
index 000000000..dfa72b139
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.2/11.2.1/S11.2.1_A4_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.
+
+/**
+ * Check type of various properties
+ *
+ * @path ch11/11.2/11.2.1/S11.2.1_A4_T3.js
+ * @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/js/src/tests/test262/ch11/11.2/11.2.1/S11.2.1_A4_T4.js b/js/src/tests/test262/ch11/11.2/11.2.1/S11.2.1_A4_T4.js
new file mode 100644
index 000000000..da4633fe2
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.2/11.2.1/S11.2.1_A4_T4.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.
+
+/**
+ * Check type of various properties
+ *
+ * @path ch11/11.2/11.2.1/S11.2.1_A4_T4.js
+ * @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/js/src/tests/test262/ch11/11.2/11.2.1/S11.2.1_A4_T5.js b/js/src/tests/test262/ch11/11.2/11.2.1/S11.2.1_A4_T5.js
new file mode 100644
index 000000000..02904c0b4
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.2/11.2.1/S11.2.1_A4_T5.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.
+
+/**
+ * Check type of various properties
+ *
+ * @path ch11/11.2/11.2.1/S11.2.1_A4_T5.js
+ * @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/js/src/tests/test262/ch11/11.2/11.2.1/S11.2.1_A4_T6.js b/js/src/tests/test262/ch11/11.2/11.2.1/S11.2.1_A4_T6.js
new file mode 100644
index 000000000..0d8668846
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.2/11.2.1/S11.2.1_A4_T6.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.
+
+/**
+ * Check type of various properties
+ *
+ * @path ch11/11.2/11.2.1/S11.2.1_A4_T6.js
+ * @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/js/src/tests/test262/ch11/11.2/11.2.1/S11.2.1_A4_T7.js b/js/src/tests/test262/ch11/11.2/11.2.1/S11.2.1_A4_T7.js
new file mode 100644
index 000000000..7d8826d80
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.2/11.2.1/S11.2.1_A4_T7.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.
+
+/**
+ * Check type of various properties
+ *
+ * @path ch11/11.2/11.2.1/S11.2.1_A4_T7.js
+ * @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/js/src/tests/test262/ch11/11.2/11.2.1/S11.2.1_A4_T8.js b/js/src/tests/test262/ch11/11.2/11.2.1/S11.2.1_A4_T8.js
new file mode 100644
index 000000000..fd3846e9c
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.2/11.2.1/S11.2.1_A4_T8.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.
+
+/**
+ * Check type of various properties
+ *
+ * @path ch11/11.2/11.2.1/S11.2.1_A4_T8.js
+ * @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/js/src/tests/test262/ch11/11.2/11.2.1/S11.2.1_A4_T9.js b/js/src/tests/test262/ch11/11.2/11.2.1/S11.2.1_A4_T9.js
new file mode 100644
index 000000000..409d49e58
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.2/11.2.1/S11.2.1_A4_T9.js
@@ -0,0 +1,94 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * Check type of various properties
+ *
+ * @path ch11/11.2/11.2.1/S11.2.1_A4_T9.js
+ * @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.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.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"] ));
+
+
+
diff --git a/js/src/tests/test262/ch11/11.2/11.2.1/browser.js b/js/src/tests/test262/ch11/11.2/11.2.1/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.2/11.2.1/browser.js
diff --git a/js/src/tests/test262/ch11/11.2/11.2.1/shell.js b/js/src/tests/test262/ch11/11.2/11.2.1/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.2/11.2.1/shell.js
diff --git a/js/src/tests/test262/ch11/11.2/11.2.2/S11.2.2_A1.1.js b/js/src/tests/test262/ch11/11.2/11.2.2/S11.2.2_A1.1.js
new file mode 100644
index 000000000..10811b4b0
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.2/11.2.2/S11.2.2_A1.1.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.
+
+/**
+ * White Space and Line Terminator between "new" and NewExpression are allowed
+ *
+ * @path ch11/11.2/11.2.2/S11.2.2_A1.1.js
+ * @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/js/src/tests/test262/ch11/11.2/11.2.2/S11.2.2_A1.2.js b/js/src/tests/test262/ch11/11.2/11.2.2/S11.2.2_A1.2.js
new file mode 100644
index 000000000..d47eb10bf
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.2/11.2.2/S11.2.2_A1.2.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.
+
+/**
+ * White Space and Line Terminator between "new" and MemberExpression are allowed
+ *
+ * @path ch11/11.2/11.2.2/S11.2.2_A1.2.js
+ * @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/js/src/tests/test262/ch11/11.2/11.2.2/S11.2.2_A2.js b/js/src/tests/test262/ch11/11.2/11.2.2/S11.2.2_A2.js
new file mode 100644
index 000000000..e879390fc
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.2/11.2.2/S11.2.2_A2.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.
+
+/**
+ * Operator "new" uses GetValue
+ *
+ * @path ch11/11.2/11.2.2/S11.2.2_A2.js
+ * @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/js/src/tests/test262/ch11/11.2/11.2.2/S11.2.2_A3_T1.js b/js/src/tests/test262/ch11/11.2/11.2.2/S11.2.2_A3_T1.js
new file mode 100644
index 000000000..3f52d9527
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.2/11.2.2/S11.2.2_A3_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.
+
+/**
+ * If Type(NewExpression) or Type(MemberExpression) is not Object, throw TypeError
+ *
+ * @path ch11/11.2/11.2.2/S11.2.2_A3_T1.js
+ * @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/js/src/tests/test262/ch11/11.2/11.2.2/S11.2.2_A3_T2.js b/js/src/tests/test262/ch11/11.2/11.2.2/S11.2.2_A3_T2.js
new file mode 100644
index 000000000..1ad67c548
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.2/11.2.2/S11.2.2_A3_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.
+
+/**
+ * If Type(NewExpression) or Type(MemberExpression) is not Object, throw TypeError
+ *
+ * @path ch11/11.2/11.2.2/S11.2.2_A3_T2.js
+ * @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/js/src/tests/test262/ch11/11.2/11.2.2/S11.2.2_A3_T3.js b/js/src/tests/test262/ch11/11.2/11.2.2/S11.2.2_A3_T3.js
new file mode 100644
index 000000000..c93406012
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.2/11.2.2/S11.2.2_A3_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.
+
+/**
+ * If Type(NewExpression) or Type(MemberExpression) is not Object, throw TypeError
+ *
+ * @path ch11/11.2/11.2.2/S11.2.2_A3_T3.js
+ * @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/js/src/tests/test262/ch11/11.2/11.2.2/S11.2.2_A3_T4.js b/js/src/tests/test262/ch11/11.2/11.2.2/S11.2.2_A3_T4.js
new file mode 100644
index 000000000..adbd1356c
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.2/11.2.2/S11.2.2_A3_T4.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.
+
+/**
+ * If Type(NewExpression) or Type(MemberExpression) is not Object, throw TypeError
+ *
+ * @path ch11/11.2/11.2.2/S11.2.2_A3_T4.js
+ * @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/js/src/tests/test262/ch11/11.2/11.2.2/S11.2.2_A3_T5.js b/js/src/tests/test262/ch11/11.2/11.2.2/S11.2.2_A3_T5.js
new file mode 100644
index 000000000..abf71da19
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.2/11.2.2/S11.2.2_A3_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.
+
+/**
+ * If Type(NewExpression) or Type(MemberExpression) is not Object, throw TypeError
+ *
+ * @path ch11/11.2/11.2.2/S11.2.2_A3_T5.js
+ * @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/js/src/tests/test262/ch11/11.2/11.2.2/S11.2.2_A4_T1.js b/js/src/tests/test262/ch11/11.2/11.2.2/S11.2.2_A4_T1.js
new file mode 100644
index 000000000..cd6517cbf
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.2/11.2.2/S11.2.2_A4_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.
+
+/**
+ * If NewExpression or MemberExpression does not implement internal [[Construct]] method, throw TypeError
+ *
+ * @path ch11/11.2/11.2.2/S11.2.2_A4_T1.js
+ * @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/js/src/tests/test262/ch11/11.2/11.2.2/S11.2.2_A4_T2.js b/js/src/tests/test262/ch11/11.2/11.2.2/S11.2.2_A4_T2.js
new file mode 100644
index 000000000..bc776ec65
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.2/11.2.2/S11.2.2_A4_T2.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.
+
+/**
+ * If NewExpression or MemberExpression does not implement internal [[Construct]] method, throw TypeError
+ *
+ * @path ch11/11.2/11.2.2/S11.2.2_A4_T2.js
+ * @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/js/src/tests/test262/ch11/11.2/11.2.2/S11.2.2_A4_T3.js b/js/src/tests/test262/ch11/11.2/11.2.2/S11.2.2_A4_T3.js
new file mode 100644
index 000000000..9027cf051
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.2/11.2.2/S11.2.2_A4_T3.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.
+
+/**
+ * If NewExpression or MemberExpression does not implement internal [[Construct]] method, throw TypeError
+ *
+ * @path ch11/11.2/11.2.2/S11.2.2_A4_T3.js
+ * @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/js/src/tests/test262/ch11/11.2/11.2.2/S11.2.2_A4_T4.js b/js/src/tests/test262/ch11/11.2/11.2.2/S11.2.2_A4_T4.js
new file mode 100644
index 000000000..e240ba827
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.2/11.2.2/S11.2.2_A4_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.
+
+/**
+ * If NewExpression or MemberExpression does not implement internal [[Construct]] method, throw TypeError
+ *
+ * @path ch11/11.2/11.2.2/S11.2.2_A4_T4.js
+ * @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/js/src/tests/test262/ch11/11.2/11.2.2/S11.2.2_A4_T5.js b/js/src/tests/test262/ch11/11.2/11.2.2/S11.2.2_A4_T5.js
new file mode 100644
index 000000000..72fdae876
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.2/11.2.2/S11.2.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.
+
+/**
+ * If NewExpression or MemberExpression does not implement internal [[Construct]] method, throw TypeError
+ *
+ * @path ch11/11.2/11.2.2/S11.2.2_A4_T5.js
+ * @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/js/src/tests/test262/ch11/11.2/11.2.2/browser.js b/js/src/tests/test262/ch11/11.2/11.2.2/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.2/11.2.2/browser.js
diff --git a/js/src/tests/test262/ch11/11.2/11.2.2/shell.js b/js/src/tests/test262/ch11/11.2/11.2.2/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.2/11.2.2/shell.js
diff --git a/js/src/tests/test262/ch11/11.2/11.2.3/11.2.3-3_1.js b/js/src/tests/test262/ch11/11.2/11.2.3/11.2.3-3_1.js
new file mode 100644
index 000000000..8ae5b5e84
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.2/11.2.3/11.2.3-3_1.js
@@ -0,0 +1,24 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch11/11.2/11.2.3/11.2.3-3_1.js
+ * @description Call arguments are evaluated before the check is made to see if the object is actually callable (FunctionDeclaration)
+ */
+
+
+function testcase() {
+ var fooCalled = false;
+ function foo(){ fooCalled = true; }
+
+ var o = { };
+ try {
+ o.bar( foo() );
+ throw new Exception("o.bar does not exist!");
+ } catch(e) {
+ return (e instanceof TypeError) && (fooCalled===true);
+ }
+}
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch11/11.2/11.2.3/11.2.3-3_2.js b/js/src/tests/test262/ch11/11.2/11.2.3/11.2.3-3_2.js
new file mode 100644
index 000000000..5e7496d51
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.2/11.2.3/11.2.3-3_2.js
@@ -0,0 +1,24 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch11/11.2/11.2.3/11.2.3-3_2.js
+ * @description Call arguments are evaluated before the check is made to see if the object is actually callable (FunctionExpression)
+ */
+
+
+function testcase() {
+ var fooCalled = false;
+ var foo = function (){ fooCalled = true; }
+
+ var o = { };
+ try {
+ o.bar( foo() );
+ throw new Exception("o.bar does not exist!");
+ } catch(e) {
+ return (e instanceof TypeError) && (fooCalled===true);
+ }
+}
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch11/11.2/11.2.3/11.2.3-3_3.js b/js/src/tests/test262/ch11/11.2/11.2.3/11.2.3-3_3.js
new file mode 100644
index 000000000..04616e5a0
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.2/11.2.3/11.2.3-3_3.js
@@ -0,0 +1,24 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch11/11.2/11.2.3/11.2.3-3_3.js
+ * @description Call arguments are not evaluated before the check is made to see if the object is actually callable (undefined member)
+ */
+
+
+function testcase() {
+ var fooCalled = false;
+ function foo(){ fooCalled = true; }
+
+ var o = { };
+ try {
+ o.bar.gar( foo() );
+ throw new Exception("o.bar does not exist!");
+ } catch(e) {
+ return (e instanceof TypeError) && (fooCalled===false);
+ }
+}
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch11/11.2/11.2.3/11.2.3-3_4.js b/js/src/tests/test262/ch11/11.2/11.2.3/11.2.3-3_4.js
new file mode 100644
index 000000000..f6970fa79
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.2/11.2.3/11.2.3-3_4.js
@@ -0,0 +1,26 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch11/11.2/11.2.3/11.2.3-3_4.js
+ * @description Call arguments are evaluated before the check is made to see if the object is actually callable (property)
+ */
+
+
+function testcase() {
+ var fooCalled = false;
+ function foo(){ fooCalled = true; }
+
+ var o = { };
+ Object.defineProperty(o, "bar", {get: function() {this.barGetter = true; return 42;},
+ set: function(x) {this.barSetter = true; }});
+ try {
+ o.bar( foo() );
+ throw new Exception("o.bar does not exist!");
+ } catch(e) {
+ return (e instanceof TypeError) && (fooCalled===true) && (o.barGetter===true) && (o.barSetter===undefined);
+ }
+}
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch11/11.2/11.2.3/11.2.3-3_5.js b/js/src/tests/test262/ch11/11.2/11.2.3/11.2.3-3_5.js
new file mode 100644
index 000000000..3e2315f03
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.2/11.2.3/11.2.3-3_5.js
@@ -0,0 +1,24 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch11/11.2/11.2.3/11.2.3-3_5.js
+ * @description Call arguments are evaluated before the check is made to see if the object is actually callable (eval'ed)
+ */
+
+
+function testcase() {
+ var fooCalled = false;
+ function foo(){ fooCalled = true; }
+
+ var o = { };
+ try {
+ eval("o.bar( foo() );");
+ throw new Exception("o.bar does not exist!");
+ } catch(e) {
+ return (e instanceof TypeError) && (fooCalled===true);
+ }
+}
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch11/11.2/11.2.3/11.2.3-3_6.js b/js/src/tests/test262/ch11/11.2/11.2.3/11.2.3-3_6.js
new file mode 100644
index 000000000..c2bfcc45a
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.2/11.2.3/11.2.3-3_6.js
@@ -0,0 +1,23 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch11/11.2/11.2.3/11.2.3-3_6.js
+ * @description Call arguments are evaluated before the check is made to see if the object is actually callable (getter called)
+ */
+
+
+function testcase() {
+ var o = { };
+ Object.defineProperty(o, "bar", {get: function() {this.barGetter = true; return 42;},
+ set: function(x) {this.barSetter = true; }});
+ try {
+ o.foo( o.bar );
+ throw new Exception("o.foo does not exist!");
+ } catch(e) {
+ return (e instanceof TypeError) && (o.barGetter===true) && (o.barSetter===undefined);
+ }
+}
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch11/11.2/11.2.3/11.2.3-3_7.js b/js/src/tests/test262/ch11/11.2/11.2.3/11.2.3-3_7.js
new file mode 100644
index 000000000..2c320e778
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.2/11.2.3/11.2.3-3_7.js
@@ -0,0 +1,23 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch11/11.2/11.2.3/11.2.3-3_7.js
+ * @description Call arguments are evaluated before the check is made to see if the object is actually callable (getter called as indexed property)
+ */
+
+
+function testcase() {
+ var o = { };
+ Object.defineProperty(o, "bar", {get: function() {this.barGetter = true; return 42;},
+ set: function(x) {this.barSetter = true; }});
+ try {
+ o.foo( o["bar"] );
+ throw new Exception("o.foo does not exist!");
+ } catch(e) {
+ return (e instanceof TypeError) && (o.barGetter===true) && (o.barSetter===undefined);
+ }
+}
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch11/11.2/11.2.3/11.2.3-3_8.js b/js/src/tests/test262/ch11/11.2/11.2.3/11.2.3-3_8.js
new file mode 100644
index 000000000..67e5b9b80
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.2/11.2.3/11.2.3-3_8.js
@@ -0,0 +1,27 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch11/11.2/11.2.3/11.2.3-3_8.js
+ * @description Call arguments are evaluated before the check is made to see if the object is actually callable (global object)
+ */
+
+
+function testcase() {
+ if (this!==fnGlobalObject()) {
+ return;
+ }
+
+ var fooCalled = false;
+ function foo(){ fooCalled = true; }
+
+ try {
+ this.bar( foo() );
+ throw new Exception("this.bar does not exist!");
+ } catch(e) {
+ return (e instanceof TypeError) && (fooCalled===true);
+ }
+}
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch11/11.2/11.2.3/S11.2.3_A1.js b/js/src/tests/test262/ch11/11.2/11.2.3/S11.2.3_A1.js
new file mode 100644
index 000000000..19dfdce73
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.2/11.2.3/S11.2.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.
+
+/**
+ * White Space and Line Terminator between MemberExpression and Arguments are allowed
+ *
+ * @path ch11/11.2/11.2.3/S11.2.3_A1.js
+ * @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/js/src/tests/test262/ch11/11.2/11.2.3/S11.2.3_A2.js b/js/src/tests/test262/ch11/11.2/11.2.3/S11.2.3_A2.js
new file mode 100644
index 000000000..29ae4a55a
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.2/11.2.3/S11.2.3_A2.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.
+
+/**
+ * CallExpression : MemberExpression Arguments uses GetValue
+ *
+ * @path ch11/11.2/11.2.3/S11.2.3_A2.js
+ * @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/js/src/tests/test262/ch11/11.2/11.2.3/S11.2.3_A3_T1.js b/js/src/tests/test262/ch11/11.2/11.2.3/S11.2.3_A3_T1.js
new file mode 100644
index 000000000..5fbf7b68d
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.2/11.2.3/S11.2.3_A3_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.
+
+/**
+ * If MemberExpression is not Object, throw TypeError
+ *
+ * @path ch11/11.2/11.2.3/S11.2.3_A3_T1.js
+ * @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/js/src/tests/test262/ch11/11.2/11.2.3/S11.2.3_A3_T2.js b/js/src/tests/test262/ch11/11.2/11.2.3/S11.2.3_A3_T2.js
new file mode 100644
index 000000000..253f1b0e6
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.2/11.2.3/S11.2.3_A3_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.
+
+/**
+ * If MemberExpression is not Object, throw TypeError
+ *
+ * @path ch11/11.2/11.2.3/S11.2.3_A3_T2.js
+ * @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/js/src/tests/test262/ch11/11.2/11.2.3/S11.2.3_A3_T3.js b/js/src/tests/test262/ch11/11.2/11.2.3/S11.2.3_A3_T3.js
new file mode 100644
index 000000000..388510f21
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.2/11.2.3/S11.2.3_A3_T3.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.
+
+/**
+ * If MemberExpression is not Object, throw TypeError
+ *
+ * @path ch11/11.2/11.2.3/S11.2.3_A3_T3.js
+ * @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/js/src/tests/test262/ch11/11.2/11.2.3/S11.2.3_A3_T4.js b/js/src/tests/test262/ch11/11.2/11.2.3/S11.2.3_A3_T4.js
new file mode 100644
index 000000000..a167260ed
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.2/11.2.3/S11.2.3_A3_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.
+
+/**
+ * If MemberExpression is not Object, throw TypeError
+ *
+ * @path ch11/11.2/11.2.3/S11.2.3_A3_T4.js
+ * @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/js/src/tests/test262/ch11/11.2/11.2.3/S11.2.3_A3_T5.js b/js/src/tests/test262/ch11/11.2/11.2.3/S11.2.3_A3_T5.js
new file mode 100644
index 000000000..77cd76fa4
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.2/11.2.3/S11.2.3_A3_T5.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.
+
+/**
+ * If MemberExpression is not Object, throw TypeError
+ *
+ * @path ch11/11.2/11.2.3/S11.2.3_A3_T5.js
+ * @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/js/src/tests/test262/ch11/11.2/11.2.3/S11.2.3_A4_T1.js b/js/src/tests/test262/ch11/11.2/11.2.3/S11.2.3_A4_T1.js
new file mode 100644
index 000000000..ca028fa5a
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.2/11.2.3/S11.2.3_A4_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.
+
+/**
+ * If MemberExpression does not implement the internal [[Call]] method, throw TypeError
+ *
+ * @path ch11/11.2/11.2.3/S11.2.3_A4_T1.js
+ * @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/js/src/tests/test262/ch11/11.2/11.2.3/S11.2.3_A4_T2.js b/js/src/tests/test262/ch11/11.2/11.2.3/S11.2.3_A4_T2.js
new file mode 100644
index 000000000..41f898305
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.2/11.2.3/S11.2.3_A4_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.
+
+/**
+ * If MemberExpression does not implement the internal [[Call]] method, throw TypeError
+ *
+ * @path ch11/11.2/11.2.3/S11.2.3_A4_T2.js
+ * @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/js/src/tests/test262/ch11/11.2/11.2.3/S11.2.3_A4_T3.js b/js/src/tests/test262/ch11/11.2/11.2.3/S11.2.3_A4_T3.js
new file mode 100644
index 000000000..108085425
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.2/11.2.3/S11.2.3_A4_T3.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.
+
+/**
+ * If MemberExpression does not implement the internal [[Call]] method, throw TypeError
+ *
+ * @path ch11/11.2/11.2.3/S11.2.3_A4_T3.js
+ * @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/js/src/tests/test262/ch11/11.2/11.2.3/S11.2.3_A4_T4.js b/js/src/tests/test262/ch11/11.2/11.2.3/S11.2.3_A4_T4.js
new file mode 100644
index 000000000..a19cc05e6
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.2/11.2.3/S11.2.3_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.
+
+/**
+ * If MemberExpression does not implement the internal [[Call]] method, throw TypeError
+ *
+ * @path ch11/11.2/11.2.3/S11.2.3_A4_T4.js
+ * @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/js/src/tests/test262/ch11/11.2/11.2.3/S11.2.3_A4_T5.js b/js/src/tests/test262/ch11/11.2/11.2.3/S11.2.3_A4_T5.js
new file mode 100644
index 000000000..ddaf40c8d
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.2/11.2.3/S11.2.3_A4_T5.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.
+
+/**
+ * If MemberExpression does not implement the internal [[Call]] method, throw TypeError
+ *
+ * @path ch11/11.2/11.2.3/S11.2.3_A4_T5.js
+ * @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/js/src/tests/test262/ch11/11.2/11.2.3/browser.js b/js/src/tests/test262/ch11/11.2/11.2.3/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.2/11.2.3/browser.js
diff --git a/js/src/tests/test262/ch11/11.2/11.2.3/shell.js b/js/src/tests/test262/ch11/11.2/11.2.3/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.2/11.2.3/shell.js
diff --git a/js/src/tests/test262/ch11/11.2/11.2.4/S11.2.4_A1.1_T1.js b/js/src/tests/test262/ch11/11.2/11.2.4/S11.2.4_A1.1_T1.js
new file mode 100644
index 000000000..0d31a6c22
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.2/11.2.4/S11.2.4_A1.1_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.
+
+/**
+ * Arguments : ()
+ *
+ * @path ch11/11.2/11.2.4/S11.2.4_A1.1_T1.js
+ * @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/js/src/tests/test262/ch11/11.2/11.2.4/S11.2.4_A1.1_T2.js b/js/src/tests/test262/ch11/11.2/11.2.4/S11.2.4_A1.1_T2.js
new file mode 100644
index 000000000..6be2a9937
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.2/11.2.4/S11.2.4_A1.1_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.
+
+/**
+ * Arguments : ()
+ *
+ * @path ch11/11.2/11.2.4/S11.2.4_A1.1_T2.js
+ * @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/js/src/tests/test262/ch11/11.2/11.2.4/S11.2.4_A1.2_T1.js b/js/src/tests/test262/ch11/11.2/11.2.4/S11.2.4_A1.2_T1.js
new file mode 100644
index 000000000..aa419e295
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.2/11.2.4/S11.2.4_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.
+
+/**
+ * Arguments : (ArgumentList)
+ *
+ * @path ch11/11.2/11.2.4/S11.2.4_A1.2_T1.js
+ * @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/js/src/tests/test262/ch11/11.2/11.2.4/S11.2.4_A1.2_T2.js b/js/src/tests/test262/ch11/11.2/11.2.4/S11.2.4_A1.2_T2.js
new file mode 100644
index 000000000..2541df3d1
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.2/11.2.4/S11.2.4_A1.2_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.
+
+/**
+ * Arguments : (ArgumentList)
+ *
+ * @path ch11/11.2/11.2.4/S11.2.4_A1.2_T2.js
+ * @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/js/src/tests/test262/ch11/11.2/11.2.4/S11.2.4_A1.3_T1.js b/js/src/tests/test262/ch11/11.2/11.2.4/S11.2.4_A1.3_T1.js
new file mode 100644
index 000000000..e54238ea1
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.2/11.2.4/S11.2.4_A1.3_T1.js
@@ -0,0 +1,16 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * Arguments : (ArgumentList : ArgumentList,, AssignmentExpression) is a bad syntax
+ *
+ * @path ch11/11.2/11.2.4/S11.2.4_A1.3_T1.js
+ * @description incorrect syntax
+ * @negative
+ */
+
+function f_arg() {
+}
+
+f_arg(1,,2);
+
diff --git a/js/src/tests/test262/ch11/11.2/11.2.4/S11.2.4_A1.4_T1.js b/js/src/tests/test262/ch11/11.2/11.2.4/S11.2.4_A1.4_T1.js
new file mode 100644
index 000000000..a2eb7989b
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.2/11.2.4/S11.2.4_A1.4_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.
+
+/**
+ * Arguments : (ArgumentList : ArgumentList, AssignmentExpression)
+ *
+ * @path ch11/11.2/11.2.4/S11.2.4_A1.4_T1.js
+ * @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/js/src/tests/test262/ch11/11.2/11.2.4/S11.2.4_A1.4_T2.js b/js/src/tests/test262/ch11/11.2/11.2.4/S11.2.4_A1.4_T2.js
new file mode 100644
index 000000000..0db853abd
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.2/11.2.4/S11.2.4_A1.4_T2.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.
+
+/**
+ * Arguments : (ArgumentList : ArgumentList, AssignmentExpression)
+ *
+ * @path ch11/11.2/11.2.4/S11.2.4_A1.4_T2.js
+ * @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/js/src/tests/test262/ch11/11.2/11.2.4/S11.2.4_A1.4_T3.js b/js/src/tests/test262/ch11/11.2/11.2.4/S11.2.4_A1.4_T3.js
new file mode 100644
index 000000000..7d8bd02c9
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.2/11.2.4/S11.2.4_A1.4_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.
+
+/**
+ * Arguments : (ArgumentList : ArgumentList, AssignmentExpression)
+ *
+ * @path ch11/11.2/11.2.4/S11.2.4_A1.4_T3.js
+ * @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/js/src/tests/test262/ch11/11.2/11.2.4/S11.2.4_A1.4_T4.js b/js/src/tests/test262/ch11/11.2/11.2.4/S11.2.4_A1.4_T4.js
new file mode 100644
index 000000000..83b228a88
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.2/11.2.4/S11.2.4_A1.4_T4.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.
+
+/**
+ * Arguments : (ArgumentList : ArgumentList, AssignmentExpression)
+ *
+ * @path ch11/11.2/11.2.4/S11.2.4_A1.4_T4.js
+ * @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/js/src/tests/test262/ch11/11.2/11.2.4/browser.js b/js/src/tests/test262/ch11/11.2/11.2.4/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.2/11.2.4/browser.js
diff --git a/js/src/tests/test262/ch11/11.2/11.2.4/shell.js b/js/src/tests/test262/ch11/11.2/11.2.4/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.2/11.2.4/shell.js
diff --git a/js/src/tests/test262/ch11/11.2/browser.js b/js/src/tests/test262/ch11/11.2/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.2/browser.js
diff --git a/js/src/tests/test262/ch11/11.2/shell.js b/js/src/tests/test262/ch11/11.2/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.2/shell.js
diff --git a/js/src/tests/test262/ch11/11.3/11.3.1/11.3.1-2-1-s.js b/js/src/tests/test262/ch11/11.3/11.3.1/11.3.1-2-1-s.js
new file mode 100644
index 000000000..28b299108
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.3/11.3.1/11.3.1-2-1-s.js
@@ -0,0 +1,23 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch11/11.3/11.3.1/11.3.1-2-1-s.js
+ * @description Strict Mode - SyntaxError is thrown if the identifier 'arguments' appear as a PostfixExpression(arguments++)
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+ var blah = arguments;
+ try {
+ eval("arguments++;");
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError && blah === arguments;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch11/11.3/11.3.1/11.3.1-2-1gs.js b/js/src/tests/test262/ch11/11.3/11.3.1/11.3.1-2-1gs.js
new file mode 100644
index 000000000..15456cd5c
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.3/11.3.1/11.3.1-2-1gs.js
@@ -0,0 +1,16 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+
+/**
+ * @path ch11/11.3/11.3.1/11.3.1-2-1gs.js
+ * @description Strict Mode - SyntaxError is throw if the identifier arguments appear as a PostfixExpression(arguments++)
+ * @onlyStrict
+ * @negative ^((?!NotEarlyError).)*$
+ */
+
+"use strict";
+throw NotEarlyError;
+arguments++;
diff --git a/js/src/tests/test262/ch11/11.3/11.3.1/11.3.1-2-2-s.js b/js/src/tests/test262/ch11/11.3/11.3.1/11.3.1-2-2-s.js
new file mode 100644
index 000000000..f71ea4568
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.3/11.3.1/11.3.1-2-2-s.js
@@ -0,0 +1,23 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch11/11.3/11.3.1/11.3.1-2-2-s.js
+ * @description Strict Mode - SyntaxError is thrown if the identifier 'eval' appear as a PostfixExpression(eval++)
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+ var blah = eval;
+ try {
+ eval("eval++;");
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError && blah === eval;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch11/11.3/11.3.1/11.3.1-2-3-s.js b/js/src/tests/test262/ch11/11.3/11.3.1/11.3.1-2-3-s.js
new file mode 100644
index 000000000..e46a70606
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.3/11.3.1/11.3.1-2-3-s.js
@@ -0,0 +1,19 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch11/11.3/11.3.1/11.3.1-2-3-s.js
+ * @description Strict Mode - SyntaxError is not thrown if the identifier 'arguments[...]' appears as a PostfixExpression(arguments++)
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+ arguments[1] = 7;
+ arguments[1]++;
+ return arguments[1]===8;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch11/11.3/11.3.1/S11.3.1_A1.1_T1.js b/js/src/tests/test262/ch11/11.3/11.3.1/S11.3.1_A1.1_T1.js
new file mode 100644
index 000000000..9f8bc65a1
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.3/11.3.1/S11.3.1_A1.1_T1.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.
+
+/**
+ * Line Terminator between LeftHandSideExpression and "++" is not allowed
+ *
+ * @path ch11/11.3/11.3.1/S11.3.1_A1.1_T1.js
+ * @description Checking Line Feed
+ * @negative
+ */
+
+//CHECK#1
+eval("var x = 1; x\u000A++");
+
diff --git a/js/src/tests/test262/ch11/11.3/11.3.1/S11.3.1_A1.1_T2.js b/js/src/tests/test262/ch11/11.3/11.3.1/S11.3.1_A1.1_T2.js
new file mode 100644
index 000000000..4c97a56d1
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.3/11.3.1/S11.3.1_A1.1_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.
+
+/**
+ * Line Terminator between LeftHandSideExpression and "++" is not allowed
+ *
+ * @path ch11/11.3/11.3.1/S11.3.1_A1.1_T2.js
+ * @description Carriage Return
+ * @negative
+ */
+
+//CHECK#1
+eval("var x = 1; x\u000D++");
+
diff --git a/js/src/tests/test262/ch11/11.3/11.3.1/S11.3.1_A1.1_T3.js b/js/src/tests/test262/ch11/11.3/11.3.1/S11.3.1_A1.1_T3.js
new file mode 100644
index 000000000..16eb546f4
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.3/11.3.1/S11.3.1_A1.1_T3.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.
+
+/**
+ * Line Terminator between LeftHandSideExpression and "++" is not allowed
+ *
+ * @path ch11/11.3/11.3.1/S11.3.1_A1.1_T3.js
+ * @description Checking Line Seprator
+ * @negative
+ */
+
+//CHECK#1
+eval("var x = 1; x\u2028++");
+
diff --git a/js/src/tests/test262/ch11/11.3/11.3.1/S11.3.1_A1.1_T4.js b/js/src/tests/test262/ch11/11.3/11.3.1/S11.3.1_A1.1_T4.js
new file mode 100644
index 000000000..8f9d56e71
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.3/11.3.1/S11.3.1_A1.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.
+
+/**
+ * Line Terminator between LeftHandSideExpression and "++" is not allowed
+ *
+ * @path ch11/11.3/11.3.1/S11.3.1_A1.1_T4.js
+ * @description Checking Paragraph separator
+ * @negative
+ */
+
+//CHECK#1
+eval("var x = 1; x\u2029++");
+
diff --git a/js/src/tests/test262/ch11/11.3/11.3.1/S11.3.1_A1.2_T1.js b/js/src/tests/test262/ch11/11.3/11.3.1/S11.3.1_A1.2_T1.js
new file mode 100644
index 000000000..b8df6ebd7
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.3/11.3.1/S11.3.1_A1.2_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.
+
+/**
+ * White Space between LeftHandSideExpression and "++" are allowed
+ *
+ * @path ch11/11.3/11.3.1/S11.3.1_A1.2_T1.js
+ * @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/js/src/tests/test262/ch11/11.3/11.3.1/S11.3.1_A2.1_T1.js b/js/src/tests/test262/ch11/11.3/11.3.1/S11.3.1_A2.1_T1.js
new file mode 100644
index 000000000..3f32ea5b7
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.3/11.3.1/S11.3.1_A2.1_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.
+
+/**
+ * Operator x++ uses GetValue and PutValue
+ *
+ * @path ch11/11.3/11.3.1/S11.3.1_A2.1_T1.js
+ * @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/js/src/tests/test262/ch11/11.3/11.3.1/S11.3.1_A2.1_T2.js b/js/src/tests/test262/ch11/11.3/11.3.1/S11.3.1_A2.1_T2.js
new file mode 100644
index 000000000..5bc1abbad
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.3/11.3.1/S11.3.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.
+
+/**
+ * Operator x++ uses GetValue and PutValue
+ *
+ * @path ch11/11.3/11.3.1/S11.3.1_A2.1_T2.js
+ * @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/js/src/tests/test262/ch11/11.3/11.3.1/S11.3.1_A2.1_T3.js b/js/src/tests/test262/ch11/11.3/11.3.1/S11.3.1_A2.1_T3.js
new file mode 100644
index 000000000..fec236e6d
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.3/11.3.1/S11.3.1_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.
+
+/**
+ * Operator x++ uses GetValue and PutValue
+ *
+ * @path ch11/11.3/11.3.1/S11.3.1_A2.1_T3.js
+ * @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/js/src/tests/test262/ch11/11.3/11.3.1/S11.3.1_A2.2_T1.js b/js/src/tests/test262/ch11/11.3/11.3.1/S11.3.1_A2.2_T1.js
new file mode 100644
index 000000000..dc82a92da
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.3/11.3.1/S11.3.1_A2.2_T1.js
@@ -0,0 +1,110 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * Operator x++ uses [[Default Value]]
+ *
+ * @path ch11/11.3/11.3.1/S11.3.1_A2.2_T1.js
+ * @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/js/src/tests/test262/ch11/11.3/11.3.1/S11.3.1_A3_T1.js b/js/src/tests/test262/ch11/11.3/11.3.1/S11.3.1_A3_T1.js
new file mode 100644
index 000000000..e3003d2d4
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.3/11.3.1/S11.3.1_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.
+
+/**
+ * Operator x++ returns x = ToNumber(x) + 1
+ *
+ * @path ch11/11.3/11.3.1/S11.3.1_A3_T1.js
+ * @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/js/src/tests/test262/ch11/11.3/11.3.1/S11.3.1_A3_T2.js b/js/src/tests/test262/ch11/11.3/11.3.1/S11.3.1_A3_T2.js
new file mode 100644
index 000000000..6b5560d1a
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.3/11.3.1/S11.3.1_A3_T2.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.
+
+/**
+ * Operator x++ returns x = ToNumber(x) + 1
+ *
+ * @path ch11/11.3/11.3.1/S11.3.1_A3_T2.js
+ * @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/js/src/tests/test262/ch11/11.3/11.3.1/S11.3.1_A3_T3.js b/js/src/tests/test262/ch11/11.3/11.3.1/S11.3.1_A3_T3.js
new file mode 100644
index 000000000..b43aa2c42
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.3/11.3.1/S11.3.1_A3_T3.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.
+
+/**
+ * Operator x++ returns x = ToNumber(x) + 1
+ *
+ * @path ch11/11.3/11.3.1/S11.3.1_A3_T3.js
+ * @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/js/src/tests/test262/ch11/11.3/11.3.1/S11.3.1_A3_T4.js b/js/src/tests/test262/ch11/11.3/11.3.1/S11.3.1_A3_T4.js
new file mode 100644
index 000000000..1a6fd79ec
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.3/11.3.1/S11.3.1_A3_T4.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.
+
+/**
+ * Operator x++ returns x = ToNumber(x) + 1
+ *
+ * @path ch11/11.3/11.3.1/S11.3.1_A3_T4.js
+ * @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/js/src/tests/test262/ch11/11.3/11.3.1/S11.3.1_A3_T5.js b/js/src/tests/test262/ch11/11.3/11.3.1/S11.3.1_A3_T5.js
new file mode 100644
index 000000000..c18fc2085
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.3/11.3.1/S11.3.1_A3_T5.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.
+
+/**
+ * Operator x++ returns x = ToNumber(x) + 1
+ *
+ * @path ch11/11.3/11.3.1/S11.3.1_A3_T5.js
+ * @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/js/src/tests/test262/ch11/11.3/11.3.1/S11.3.1_A4_T1.js b/js/src/tests/test262/ch11/11.3/11.3.1/S11.3.1_A4_T1.js
new file mode 100644
index 000000000..174800a77
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.3/11.3.1/S11.3.1_A4_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.
+
+/**
+ * Operator x++ returns ToNumber(x)
+ *
+ * @path ch11/11.3/11.3.1/S11.3.1_A4_T1.js
+ * @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/js/src/tests/test262/ch11/11.3/11.3.1/S11.3.1_A4_T2.js b/js/src/tests/test262/ch11/11.3/11.3.1/S11.3.1_A4_T2.js
new file mode 100644
index 000000000..36fe9aec5
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.3/11.3.1/S11.3.1_A4_T2.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.
+
+/**
+ * Operator x++ returns ToNumber(x)
+ *
+ * @path ch11/11.3/11.3.1/S11.3.1_A4_T2.js
+ * @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/js/src/tests/test262/ch11/11.3/11.3.1/S11.3.1_A4_T3.js b/js/src/tests/test262/ch11/11.3/11.3.1/S11.3.1_A4_T3.js
new file mode 100644
index 000000000..540ee9024
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.3/11.3.1/S11.3.1_A4_T3.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.
+
+/**
+ * Operator x++ returns ToNumber(x)
+ *
+ * @path ch11/11.3/11.3.1/S11.3.1_A4_T3.js
+ * @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/js/src/tests/test262/ch11/11.3/11.3.1/S11.3.1_A4_T4.js b/js/src/tests/test262/ch11/11.3/11.3.1/S11.3.1_A4_T4.js
new file mode 100644
index 000000000..cf703689d
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.3/11.3.1/S11.3.1_A4_T4.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.
+
+/**
+ * Operator x++ returns ToNumber(x)
+ *
+ * @path ch11/11.3/11.3.1/S11.3.1_A4_T4.js
+ * @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/js/src/tests/test262/ch11/11.3/11.3.1/S11.3.1_A4_T5.js b/js/src/tests/test262/ch11/11.3/11.3.1/S11.3.1_A4_T5.js
new file mode 100644
index 000000000..09a248cf3
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.3/11.3.1/S11.3.1_A4_T5.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.
+
+/**
+ * Operator x++ returns ToNumber(x)
+ *
+ * @path ch11/11.3/11.3.1/S11.3.1_A4_T5.js
+ * @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/js/src/tests/test262/ch11/11.3/11.3.1/browser.js b/js/src/tests/test262/ch11/11.3/11.3.1/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.3/11.3.1/browser.js
diff --git a/js/src/tests/test262/ch11/11.3/11.3.1/shell.js b/js/src/tests/test262/ch11/11.3/11.3.1/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.3/11.3.1/shell.js
diff --git a/js/src/tests/test262/ch11/11.3/11.3.2/11.3.2-2-1-s.js b/js/src/tests/test262/ch11/11.3/11.3.2/11.3.2-2-1-s.js
new file mode 100644
index 000000000..f40c73ac1
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.3/11.3.2/11.3.2-2-1-s.js
@@ -0,0 +1,23 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch11/11.3/11.3.2/11.3.2-2-1-s.js
+ * @description Strict Mode - SyntaxError is thrown if the identifier 'arguments' appear as a PostfixExpression(arguments--)
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+ var blah = arguments;
+ try {
+ eval("arguments--;");
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError && blah === arguments;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch11/11.3/11.3.2/11.3.2-2-2-s.js b/js/src/tests/test262/ch11/11.3/11.3.2/11.3.2-2-2-s.js
new file mode 100644
index 000000000..09c186fd3
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.3/11.3.2/11.3.2-2-2-s.js
@@ -0,0 +1,23 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch11/11.3/11.3.2/11.3.2-2-2-s.js
+ * @description Strict Mode - SyntaxError is thrown if the identifier 'eval' appear as a PostfixExpression(eval--)
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+ var blah = eval;
+ try {
+ eval("eval--;");
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError && blah === eval;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch11/11.3/11.3.2/11.3.2-2-3-s.js b/js/src/tests/test262/ch11/11.3/11.3.2/11.3.2-2-3-s.js
new file mode 100644
index 000000000..6eb43dbbd
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.3/11.3.2/11.3.2-2-3-s.js
@@ -0,0 +1,19 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch11/11.3/11.3.2/11.3.2-2-3-s.js
+ * @description Strict Mode - SyntaxError is not thrown if the identifier 'arguments[...]' appears as a PostfixExpression(arguments--)
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+ arguments[1] = 7;
+ arguments[1]--;
+ return arguments[1]===6;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch11/11.3/11.3.2/S11.3.2_A1.1_T1.js b/js/src/tests/test262/ch11/11.3/11.3.2/S11.3.2_A1.1_T1.js
new file mode 100644
index 000000000..2fe2120bf
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.3/11.3.2/S11.3.2_A1.1_T1.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.
+
+/**
+ * Line Terminator between LeftHandSideExpression and "--" is not allowed
+ *
+ * @path ch11/11.3/11.3.2/S11.3.2_A1.1_T1.js
+ * @description Checking Line Feed
+ * @negative
+ */
+
+//CHECK#1
+eval("var x = 1; x\u000A--");
+
diff --git a/js/src/tests/test262/ch11/11.3/11.3.2/S11.3.2_A1.1_T2.js b/js/src/tests/test262/ch11/11.3/11.3.2/S11.3.2_A1.1_T2.js
new file mode 100644
index 000000000..49654288a
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.3/11.3.2/S11.3.2_A1.1_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.
+
+/**
+ * Line Terminator between LeftHandSideExpression and "--" is not allowed
+ *
+ * @path ch11/11.3/11.3.2/S11.3.2_A1.1_T2.js
+ * @description Checking Carriage Return
+ * @negative
+ */
+
+//CHECK#1
+eval("var x = 1; x\u000D--");
+
diff --git a/js/src/tests/test262/ch11/11.3/11.3.2/S11.3.2_A1.1_T3.js b/js/src/tests/test262/ch11/11.3/11.3.2/S11.3.2_A1.1_T3.js
new file mode 100644
index 000000000..5e0af0e99
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.3/11.3.2/S11.3.2_A1.1_T3.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.
+
+/**
+ * Line Terminator between LeftHandSideExpression and "--" is not allowed
+ *
+ * @path ch11/11.3/11.3.2/S11.3.2_A1.1_T3.js
+ * @description Checking Page separator
+ * @negative
+ */
+
+//CHECK#1
+eval("var x = 1; x\u2028--");
+
diff --git a/js/src/tests/test262/ch11/11.3/11.3.2/S11.3.2_A1.1_T4.js b/js/src/tests/test262/ch11/11.3/11.3.2/S11.3.2_A1.1_T4.js
new file mode 100644
index 000000000..e7d54a741
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.3/11.3.2/S11.3.2_A1.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.
+
+/**
+ * Line Terminator between LeftHandSideExpression and "--" is not allowed
+ *
+ * @path ch11/11.3/11.3.2/S11.3.2_A1.1_T4.js
+ * @description Checking Line separator
+ * @negative
+ */
+
+//CHECK#1
+eval("var x = 1; x\u2029--");
+
diff --git a/js/src/tests/test262/ch11/11.3/11.3.2/S11.3.2_A1.2_T1.js b/js/src/tests/test262/ch11/11.3/11.3.2/S11.3.2_A1.2_T1.js
new file mode 100644
index 000000000..8140d2b8e
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.3/11.3.2/S11.3.2_A1.2_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.
+
+/**
+ * White Space between LeftHandSideExpression and "--" are allowed
+ *
+ * @path ch11/11.3/11.3.2/S11.3.2_A1.2_T1.js
+ * @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/js/src/tests/test262/ch11/11.3/11.3.2/S11.3.2_A2.1_T1.js b/js/src/tests/test262/ch11/11.3/11.3.2/S11.3.2_A2.1_T1.js
new file mode 100644
index 000000000..b665af599
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.3/11.3.2/S11.3.2_A2.1_T1.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.
+
+/**
+ * Operator x-- uses GetValue and PutValue
+ *
+ * @path ch11/11.3/11.3.2/S11.3.2_A2.1_T1.js
+ * @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/js/src/tests/test262/ch11/11.3/11.3.2/S11.3.2_A2.1_T2.js b/js/src/tests/test262/ch11/11.3/11.3.2/S11.3.2_A2.1_T2.js
new file mode 100644
index 000000000..cae6d80b5
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.3/11.3.2/S11.3.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.
+
+/**
+ * Operator x-- uses GetValue and PutValue
+ *
+ * @path ch11/11.3/11.3.2/S11.3.2_A2.1_T2.js
+ * @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/js/src/tests/test262/ch11/11.3/11.3.2/S11.3.2_A2.1_T3.js b/js/src/tests/test262/ch11/11.3/11.3.2/S11.3.2_A2.1_T3.js
new file mode 100644
index 000000000..adcf758c3
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.3/11.3.2/S11.3.2_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.
+
+/**
+ * Operator x-- uses GetValue and PutValue
+ *
+ * @path ch11/11.3/11.3.2/S11.3.2_A2.1_T3.js
+ * @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/js/src/tests/test262/ch11/11.3/11.3.2/S11.3.2_A2.2_T1.js b/js/src/tests/test262/ch11/11.3/11.3.2/S11.3.2_A2.2_T1.js
new file mode 100644
index 000000000..22f31a1fa
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.3/11.3.2/S11.3.2_A2.2_T1.js
@@ -0,0 +1,110 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * Operator x-- uses [[Default Value]]
+ *
+ * @path ch11/11.3/11.3.2/S11.3.2_A2.2_T1.js
+ * @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/js/src/tests/test262/ch11/11.3/11.3.2/S11.3.2_A3_T1.js b/js/src/tests/test262/ch11/11.3/11.3.2/S11.3.2_A3_T1.js
new file mode 100644
index 000000000..d35aeffc5
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.3/11.3.2/S11.3.2_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.
+
+/**
+ * Operator x-- returns x = ToNumber(x) - 1
+ *
+ * @path ch11/11.3/11.3.2/S11.3.2_A3_T1.js
+ * @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/js/src/tests/test262/ch11/11.3/11.3.2/S11.3.2_A3_T2.js b/js/src/tests/test262/ch11/11.3/11.3.2/S11.3.2_A3_T2.js
new file mode 100644
index 000000000..cf1435a4c
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.3/11.3.2/S11.3.2_A3_T2.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.
+
+/**
+ * Operator x-- returns x = ToNumber(x) - 1
+ *
+ * @path ch11/11.3/11.3.2/S11.3.2_A3_T2.js
+ * @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/js/src/tests/test262/ch11/11.3/11.3.2/S11.3.2_A3_T3.js b/js/src/tests/test262/ch11/11.3/11.3.2/S11.3.2_A3_T3.js
new file mode 100644
index 000000000..63108752b
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.3/11.3.2/S11.3.2_A3_T3.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.
+
+/**
+ * Operator x-- returns x = ToNumber(x) - 1
+ *
+ * @path ch11/11.3/11.3.2/S11.3.2_A3_T3.js
+ * @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/js/src/tests/test262/ch11/11.3/11.3.2/S11.3.2_A3_T4.js b/js/src/tests/test262/ch11/11.3/11.3.2/S11.3.2_A3_T4.js
new file mode 100644
index 000000000..ea248bfb0
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.3/11.3.2/S11.3.2_A3_T4.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.
+
+/**
+ * Operator x-- returns x = ToNumber(x) - 1
+ *
+ * @path ch11/11.3/11.3.2/S11.3.2_A3_T4.js
+ * @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/js/src/tests/test262/ch11/11.3/11.3.2/S11.3.2_A3_T5.js b/js/src/tests/test262/ch11/11.3/11.3.2/S11.3.2_A3_T5.js
new file mode 100644
index 000000000..b571f0654
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.3/11.3.2/S11.3.2_A3_T5.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.
+
+/**
+ * Operator x-- returns x = ToNumber(x) - 1
+ *
+ * @path ch11/11.3/11.3.2/S11.3.2_A3_T5.js
+ * @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/js/src/tests/test262/ch11/11.3/11.3.2/S11.3.2_A4_T1.js b/js/src/tests/test262/ch11/11.3/11.3.2/S11.3.2_A4_T1.js
new file mode 100644
index 000000000..4d07e77e4
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.3/11.3.2/S11.3.2_A4_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.
+
+/**
+ * Operator x-- returns ToNumber(x)
+ *
+ * @path ch11/11.3/11.3.2/S11.3.2_A4_T1.js
+ * @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/js/src/tests/test262/ch11/11.3/11.3.2/S11.3.2_A4_T2.js b/js/src/tests/test262/ch11/11.3/11.3.2/S11.3.2_A4_T2.js
new file mode 100644
index 000000000..eb5c3bcde
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.3/11.3.2/S11.3.2_A4_T2.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.
+
+/**
+ * Operator x-- returns ToNumber(x)
+ *
+ * @path ch11/11.3/11.3.2/S11.3.2_A4_T2.js
+ * @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/js/src/tests/test262/ch11/11.3/11.3.2/S11.3.2_A4_T3.js b/js/src/tests/test262/ch11/11.3/11.3.2/S11.3.2_A4_T3.js
new file mode 100644
index 000000000..8a4edfca8
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.3/11.3.2/S11.3.2_A4_T3.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.
+
+/**
+ * Operator x-- returns ToNumber(x)
+ *
+ * @path ch11/11.3/11.3.2/S11.3.2_A4_T3.js
+ * @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/js/src/tests/test262/ch11/11.3/11.3.2/S11.3.2_A4_T4.js b/js/src/tests/test262/ch11/11.3/11.3.2/S11.3.2_A4_T4.js
new file mode 100644
index 000000000..add21d32a
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.3/11.3.2/S11.3.2_A4_T4.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.
+
+/**
+ * Operator x-- returns ToNumber(x)
+ *
+ * @path ch11/11.3/11.3.2/S11.3.2_A4_T4.js
+ * @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/js/src/tests/test262/ch11/11.3/11.3.2/S11.3.2_A4_T5.js b/js/src/tests/test262/ch11/11.3/11.3.2/S11.3.2_A4_T5.js
new file mode 100644
index 000000000..aa6856568
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.3/11.3.2/S11.3.2_A4_T5.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.
+
+/**
+ * Operator x-- returns ToNumber(x)
+ *
+ * @path ch11/11.3/11.3.2/S11.3.2_A4_T5.js
+ * @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/js/src/tests/test262/ch11/11.3/11.3.2/browser.js b/js/src/tests/test262/ch11/11.3/11.3.2/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.3/11.3.2/browser.js
diff --git a/js/src/tests/test262/ch11/11.3/11.3.2/shell.js b/js/src/tests/test262/ch11/11.3/11.3.2/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.3/11.3.2/shell.js
diff --git a/js/src/tests/test262/ch11/11.3/browser.js b/js/src/tests/test262/ch11/11.3/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.3/browser.js
diff --git a/js/src/tests/test262/ch11/11.3/shell.js b/js/src/tests/test262/ch11/11.3/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.3/shell.js
diff --git a/js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-0-1.js b/js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-0-1.js
new file mode 100644
index 000000000..2a3407dd5
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-0-1.js
@@ -0,0 +1,26 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * This test is actually testing the [[Delete]] internal method (8.12.8). Since the
+ * language provides no way to directly exercise [[Delete]], the tests are placed here.
+ *
+ * @path ch11/11.4/11.4.1/11.4.1-0-1.js
+ * @description delete operator as UnaryExpression
+ */
+
+
+function testcase() {
+ var x = 1;
+ var y = 2;
+ var z = 3;
+
+ if( (!delete x || delete y) &&
+ delete delete z)
+ {
+ return true;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-2-1.js b/js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-2-1.js
new file mode 100644
index 000000000..223de50d5
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-2-1.js
@@ -0,0 +1,18 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch11/11.4/11.4.1/11.4.1-2-1.js
+ * @description delete operator returns true when deleting a non-reference (number)
+ */
+
+
+function testcase() {
+ var d = delete 42;
+ if (d === true) {
+ return true;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-2-2.js b/js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-2-2.js
new file mode 100644
index 000000000..eed36f4c5
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-2-2.js
@@ -0,0 +1,20 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch11/11.4/11.4.1/11.4.1-2-2.js
+ * @description delete operator returns true when deleting returned value from a function
+ */
+
+
+function testcase() {
+ var bIsFooCalled = false;
+ var foo = function(){bIsFooCalled = true;};
+
+ var d = delete foo();
+ if(d === true && bIsFooCalled === true)
+ return true;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-2-3.js b/js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-2-3.js
new file mode 100644
index 000000000..5d8fc9bce
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-2-3.js
@@ -0,0 +1,18 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch11/11.4/11.4.1/11.4.1-2-3.js
+ * @description delete operator returns true when deleting a non-reference (boolean)
+ */
+
+
+function testcase() {
+ var d = delete true;
+ if (d === true) {
+ return true;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-2-4.js b/js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-2-4.js
new file mode 100644
index 000000000..3da874599
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-2-4.js
@@ -0,0 +1,18 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch11/11.4/11.4.1/11.4.1-2-4.js
+ * @description delete operator returns true when deleting a non-reference (string)
+ */
+
+
+function testcase() {
+ var d = delete "abc";
+ if (d === true) {
+ return true;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-2-5.js b/js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-2-5.js
new file mode 100644
index 000000000..ae32bebce
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-2-5.js
@@ -0,0 +1,18 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch11/11.4/11.4.1/11.4.1-2-5.js
+ * @description delete operator returns true when deleting a non-reference (obj)
+ */
+
+
+function testcase() {
+ var d = delete {a:0} ;
+ if (d === true) {
+ return true;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-2-6.js b/js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-2-6.js
new file mode 100644
index 000000000..bcee797c2
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-2-6.js
@@ -0,0 +1,18 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch11/11.4/11.4.1/11.4.1-2-6.js
+ * @description delete operator returns true when deleting a non-reference (null)
+ */
+
+
+function testcase() {
+ var d = delete null;
+ if (d === true) {
+ return true;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-3-1.js b/js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-3-1.js
new file mode 100644
index 000000000..9ae258064
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-3-1.js
@@ -0,0 +1,19 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch11/11.4/11.4.1/11.4.1-3-1.js
+ * @description delete operator returns true when deleting an unresolvable reference
+ */
+
+
+function testcase() {
+ // just cooking up a long/veryLikely unique name
+ var d = delete __ES3_1_test_suite_test_11_4_1_3_unique_id_0__;
+ if (d === true) {
+ return true;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-3-2.js b/js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-3-2.js
new file mode 100644
index 000000000..fefff3071
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-3-2.js
@@ -0,0 +1,24 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch11/11.4/11.4.1/11.4.1-3-2.js
+ * @description delete operator throws ReferenceError when deleting an explicitly qualified yet unresolvable reference (base obj undefined)
+ */
+
+
+function testcase() {
+ // just cooking up a long/veryLikely unique name
+ try
+ {
+ var d = delete __ES3_1_test_suite_test_11_4_1_3_unique_id_2__.x;
+ }
+ catch(e)
+ {
+ if (e instanceof ReferenceError)
+ return true;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-3-3.js b/js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-3-3.js
new file mode 100644
index 000000000..1f70cca92
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-3-3.js
@@ -0,0 +1,19 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch11/11.4/11.4.1/11.4.1-3-3.js
+ * @description delete operator returns true when deleting an explicitly qualified yet unresolvable reference (property undefined for base obj)
+ */
+
+
+function testcase() {
+ var __ES3_1_test_suite_test_11_4_1_3_unique_id_3__ = {};
+ var d = delete __ES3_1_test_suite_test_11_4_1_3_unique_id_3__.x;
+ if (d === true) {
+ return true;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-3-a-1-s.js b/js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-3-a-1-s.js
new file mode 100644
index 000000000..7172421d0
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-3-a-1-s.js
@@ -0,0 +1,23 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch11/11.4/11.4.1/11.4.1-3-a-1-s.js
+ * @description Strict Mode - SyntaxError is thrown when deleting an un-resolvable reference
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+
+ try {
+ eval("delete obj");
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-4-a-1-s.js b/js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-4-a-1-s.js
new file mode 100644
index 000000000..82c586a1f
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-4-a-1-s.js
@@ -0,0 +1,28 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch11/11.4/11.4.1/11.4.1-4-a-1-s.js
+ * @description Strict Mode - TypeError is thrown when deleting non-configurable data property
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+ var obj = {};
+ Object.defineProperty(obj, "prop", {
+ value: "abc",
+ configurable: false
+ });
+
+ try {
+ delete obj.prop;
+ return false;
+ } catch (e) {
+ return e instanceof TypeError && obj.prop === "abc";
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-4-a-2-s.js b/js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-4-a-2-s.js
new file mode 100644
index 000000000..135f01295
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-4-a-2-s.js
@@ -0,0 +1,30 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch11/11.4/11.4.1/11.4.1-4-a-2-s.js
+ * @description Strict Mode - TypeError is thrown when deleting non-configurable accessor property
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+ var obj = {};
+ Object.defineProperty(obj, "prop", {
+ get: function () {
+ return "abc";
+ },
+ configurable: false
+ });
+
+ try {
+ delete obj.prop;
+ return false;
+ } catch (e) {
+ return e instanceof TypeError && obj.prop === "abc";
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-4-a-3-s.js b/js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-4-a-3-s.js
new file mode 100644
index 000000000..85bc8b2d7
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-4-a-3-s.js
@@ -0,0 +1,24 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch11/11.4/11.4.1/11.4.1-4-a-3-s.js
+ * @description Strict Mode - TypeError isn't thrown when deleting configurable data property
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+ var obj = {};
+ Object.defineProperty(obj, "prop", {
+ value: "abc",
+ configurable: true
+ });
+
+ delete obj.prop;
+ return !obj.hasOwnProperty("prop");
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-4-a-4-s.js b/js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-4-a-4-s.js
new file mode 100644
index 000000000..6ce81cfbc
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-4-a-4-s.js
@@ -0,0 +1,26 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch11/11.4/11.4.1/11.4.1-4-a-4-s.js
+ * @description Strict Mode - TypeError isn't thrown when deleting configurable accessor property
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+ var obj = {};
+ Object.defineProperty(obj, "prop", {
+ get: function () {
+ return "abc";
+ },
+ configurable: true
+ });
+
+ delete obj.prop;
+ return !obj.hasOwnProperty("prop");
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-4.a-1.js b/js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-4.a-1.js
new file mode 100644
index 000000000..0ed36af96
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-4.a-1.js
@@ -0,0 +1,26 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * This test is actually testing the [[Delete]] internal method (8.12.8). Since the
+ * language provides no way to directly exercise [[Delete]], the tests are placed here.
+ *
+ * @path ch11/11.4/11.4.1/11.4.1-4.a-1.js
+ * @description delete operator returns true when deleting a configurable data property
+ */
+
+
+function testcase() {
+ var o = {};
+
+ var desc = { value: 1, configurable: true };
+ Object.defineProperty(o, "foo", desc);
+
+ var d = delete o.foo;
+ if (d === true && o.hasOwnProperty("foo") === false) {
+ return true;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-4.a-10.js b/js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-4.a-10.js
new file mode 100644
index 000000000..7a515d725
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-4.a-10.js
@@ -0,0 +1,33 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * This test is actually testing the [[Delete]] internal method (8.12.8). Since the
+ * language provides no way to directly exercise [[Delete]], the tests are placed here.
+ *
+ * @path ch11/11.4/11.4.1/11.4.1-4.a-10.js
+ * @description delete operator returns true for property (stringify) defined on built-in object (JSON)
+ */
+
+
+function testcase() {
+ try {
+ var o = JSON.stringify;
+ var desc;
+ try {
+ desc = Object.getOwnPropertyDescriptor(JSON, 'stringify')
+ }
+ catch (e) {
+ };
+ var d = delete JSON.stringify;
+ if (d === true && JSON.stringify === undefined) {
+ return true;
+ }
+ } finally {
+ if (desc) Object.defineProperty(JSON, 'stringify', desc)
+ else JSON.stringify = o /* this branch messes up the attributes */;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-4.a-11.js b/js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-4.a-11.js
new file mode 100644
index 000000000..b46af9f74
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-4.a-11.js
@@ -0,0 +1,24 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * This test is actually testing the [[Delete]] internal method (8.12.8). Since the
+ * language provides no way to directly exercise [[Delete]], the tests are placed here.
+ *
+ * @path ch11/11.4/11.4.1/11.4.1-4.a-11.js
+ * @description delete operator returns true on deleting arguments propterties(arguments.callee)
+ */
+
+
+function testcase() {
+ function foo(a,b)
+ {
+ return (delete arguments.callee);
+ }
+ var d = delete arguments.callee;
+ if(d === true && arguments.callee === undefined)
+ return true;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-4.a-12.js b/js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-4.a-12.js
new file mode 100644
index 000000000..5cc30983c
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-4.a-12.js
@@ -0,0 +1,23 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * This test is actually testing the [[Delete]] internal method (8.12.8). Since the
+ * language provides no way to directly exercise [[Delete]], the tests are placed here.
+ *
+ * @path ch11/11.4/11.4.1/11.4.1-4.a-12.js
+ * @description delete operator returns false when deleting a property(length)
+ */
+
+
+function testcase() {
+
+ var a = [1,2,3]
+ a.x = 10;
+ var d = delete a.length
+ if(d === false && a.length === 3)
+ return true;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-4.a-13.js b/js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-4.a-13.js
new file mode 100644
index 000000000..5156957ed
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-4.a-13.js
@@ -0,0 +1,25 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * This test is actually testing the [[Delete]] internal method (8.12.8). Since the
+ * language provides no way to directly exercise [[Delete]], the tests are placed here.
+ *
+ * @path ch11/11.4/11.4.1/11.4.1-4.a-13.js
+ * @description delete operator returns false when deleting Array object
+ */
+
+
+function testcase() {
+
+ var a = [1,2,3]
+ a.x = 10;
+
+ var d = delete a
+
+ if(d === false && Array.isArray(a) === true)
+ return true;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-4.a-14.js b/js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-4.a-14.js
new file mode 100644
index 000000000..288d25ec0
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-4.a-14.js
@@ -0,0 +1,23 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * This test is actually testing the [[Delete]] internal method (8.12.8). Since the
+ * language provides no way to directly exercise [[Delete]], the tests are placed here.
+ *
+ * @path ch11/11.4/11.4.1/11.4.1-4.a-14.js
+ * @description delete operator returns true when deleting Array elements
+ */
+
+
+function testcase() {
+
+ var a = [1,2,3]
+ a.x = 10;
+ var d = delete a[1]
+ if(d === true && a[1] === undefined)
+ return true;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-4.a-15.js b/js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-4.a-15.js
new file mode 100644
index 000000000..98a6d6c08
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-4.a-15.js
@@ -0,0 +1,23 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * This test is actually testing the [[Delete]] internal method (8.12.8). Since the
+ * language provides no way to directly exercise [[Delete]], the tests are placed here.
+ *
+ * @path ch11/11.4/11.4.1/11.4.1-4.a-15.js
+ * @description delete operator returns true when deleting Array expandos
+ */
+
+
+function testcase() {
+
+ var a = [1,2,3]
+ a.x = 10;
+ var d = delete a.x;
+ if( d === true && a.x === undefined)
+ return true;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-4.a-16.js b/js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-4.a-16.js
new file mode 100644
index 000000000..01873811f
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-4.a-16.js
@@ -0,0 +1,20 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * This test is actually testing the [[Delete]] internal method (8.12.8). Since the
+ * language provides no way to directly exercise [[Delete]], the tests are placed here.
+ *
+ * @path ch11/11.4/11.4.1/11.4.1-4.a-16.js
+ * @description delete operator returns false on deleting arguments object
+ */
+
+
+function testcase() {
+
+ if(delete arguments === false && arguments !== undefined)
+ return true;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-4.a-17.js b/js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-4.a-17.js
new file mode 100644
index 000000000..97f0e0ab9
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-4.a-17.js
@@ -0,0 +1,25 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * This test is actually testing the [[Delete]] internal method (8.12.8). Since the
+ * language provides no way to directly exercise [[Delete]], the tests are placed here.
+ *
+ * @path ch11/11.4/11.4.1/11.4.1-4.a-17.js
+ * @description delete operator returns true on deleting a arguments element
+ */
+
+
+function testcase() {
+ function foo(a,b)
+ {
+ var d = delete arguments[0];
+ return (d === true && arguments[0] === undefined);
+ }
+
+ if(foo(1,2) === true)
+ return true;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-4.a-2.js b/js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-4.a-2.js
new file mode 100644
index 000000000..be165f1f1
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-4.a-2.js
@@ -0,0 +1,29 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * This test is actually testing the [[Delete]] internal method (8.12.8). Since the
+ * language provides no way to directly exercise [[Delete]], the tests are placed here.
+ *
+ * @path ch11/11.4/11.4.1/11.4.1-4.a-2.js
+ * @description delete operator returns true when deleting a configurable accessor property
+ */
+
+
+function testcase() {
+ var o = {};
+
+ // define an accessor
+ // dummy getter
+ var getter = function () { return 1; }
+ var desc = { get: getter, configurable: true };
+ Object.defineProperty(o, "foo", desc);
+
+ var d = delete o.foo;
+ if (d === true && o.hasOwnProperty("foo") === false) {
+ return true;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-4.a-3-s.js b/js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-4.a-3-s.js
new file mode 100644
index 000000000..85e5c23db
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-4.a-3-s.js
@@ -0,0 +1,32 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * This test is actually testing the [[Delete]] internal method (8.12.8). Since the
+ * language provides no way to directly exercise [[Delete]], the tests are placed here.
+ *
+ * @path ch11/11.4/11.4.1/11.4.1-4.a-3-s.js
+ * @description delete operator throws TypeError when deleting a non-configurable data property in strict mode
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ 'use strict';
+
+ var o = {};
+ var desc = { value : 1 }; // all other attributes default to false
+ Object.defineProperty(o, "foo", desc);
+
+ // Now, deleting o.foo should throw TypeError because [[Configurable]] on foo is false.
+ try {
+ delete o.foo;
+ return false;
+ }
+ catch (e) {
+ return (e instanceof TypeError);
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-4.a-3.js b/js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-4.a-3.js
new file mode 100644
index 000000000..25f9bc7d0
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-4.a-3.js
@@ -0,0 +1,26 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * This test is actually testing the [[Delete]] internal method (8.12.8). Since the
+ * language provides no way to directly exercise [[Delete]], the tests are placed here.
+ *
+ * @path ch11/11.4/11.4.1/11.4.1-4.a-3.js
+ * @description delete operator returns false when deleting a non-configurable data property
+ */
+
+
+function testcase() {
+ var o = {};
+ var desc = { value : 1, configurable: false }; // all other attributes default to false
+ Object.defineProperty(o, "foo", desc);
+
+ // Now, deleting o.foo should fail because [[Configurable]] on foo is false.
+ var d = delete o.foo;
+ if (d === false && o.hasOwnProperty("foo") === true) {
+ return true;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-4.a-4.js b/js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-4.a-4.js
new file mode 100644
index 000000000..98f2496f9
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-4.a-4.js
@@ -0,0 +1,22 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * This test is actually testing the [[Delete]] internal method (8.12.8). Since the
+ * language provides no way to directly exercise [[Delete]], the tests are placed here.
+ *
+ * @path ch11/11.4/11.4.1/11.4.1-4.a-4.js
+ * @description delete operator returns false when deleting a non-configurable data property (NaN)
+ */
+
+
+function testcase() {
+ // NaN (15.1.1.1) has [[Configurable]] set to false.
+ var d = delete NaN;
+ if (d === false) {
+ return true;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-4.a-5.js b/js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-4.a-5.js
new file mode 100644
index 000000000..0585bb3c4
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-4.a-5.js
@@ -0,0 +1,28 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * This test is actually testing the [[Delete]] internal method (8.12.8). Since the
+ * language provides no way to directly exercise [[Delete]], the tests are placed here.
+ *
+ * @path ch11/11.4/11.4.1/11.4.1-4.a-5.js
+ * @description delete operator returns false when deleting the environment object inside 'with'
+ */
+
+
+function testcase() {
+ var o = new Object();
+ o.x = 1;
+ var d;
+ with(o)
+ {
+ d = delete o;
+ }
+ if (d === false && typeof(o) === 'object' && o.x === 1) {
+ return true;
+ }
+ return false;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-4.a-6.js b/js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-4.a-6.js
new file mode 100644
index 000000000..a5194837f
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-4.a-6.js
@@ -0,0 +1,27 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * This test is actually testing the [[Delete]] internal method (8.12.8). Since the
+ * language provides no way to directly exercise [[Delete]], the tests are placed here.
+ *
+ * @path ch11/11.4/11.4.1/11.4.1-4.a-6.js
+ * @description delete operator returns true when deleting a property inside 'with'
+ */
+
+
+function testcase() {
+ var o = new Object();
+ o.x = 1;
+ var d;
+ with(o)
+ {
+ d = delete x;
+ }
+ if (d === true && o.x === undefined) {
+ return true;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-4.a-7.js b/js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-4.a-7.js
new file mode 100644
index 000000000..85bbe995d
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-4.a-7.js
@@ -0,0 +1,23 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * This test is actually testing the [[Delete]] internal method (8.12.8). Since the
+ * language provides no way to directly exercise [[Delete]], the tests are placed here.
+ *
+ * @path ch11/11.4/11.4.1/11.4.1-4.a-7.js
+ * @description delete operator inside 'eval'
+ */
+
+
+function testcase() {
+ var x = 1;
+ var d = eval("delete x");
+ if (d === false && x === 1) {
+ return true;
+ }
+ return false;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-4.a-8-s.js b/js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-4.a-8-s.js
new file mode 100644
index 000000000..c73f8d833
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-4.a-8-s.js
@@ -0,0 +1,28 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * This test is actually testing the [[Delete]] internal method (8.12.8). Since the
+ * language provides no way to directly exercise [[Delete]], the tests are placed here.
+ *
+ * @path ch11/11.4/11.4.1/11.4.1-4.a-8-s.js
+ * @description delete operator throws TypeError when deleting a non-configurable data property in strict mode
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ 'use strict';
+
+ // NaN (15.1.1.1) has [[Configurable]] set to false.
+ try {
+ delete fnGlobalObject().NaN;
+ return false;
+ }
+ catch (e) {
+ return (e instanceof TypeError);
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-4.a-8.js b/js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-4.a-8.js
new file mode 100644
index 000000000..0d6da1a80
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-4.a-8.js
@@ -0,0 +1,26 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * This test is actually testing the [[Delete]] internal method (8.12.8). Since the
+ * language provides no way to directly exercise [[Delete]], the tests are placed here.
+ *
+ * @path ch11/11.4/11.4.1/11.4.1-4.a-8.js
+ * @description delete operator returns true for built-in objects (JSON)
+ */
+
+
+function testcase() {
+ try {
+ var o = JSON;
+ var d = delete JSON;
+ if (d === true) {
+ return true;
+ }
+ } finally {
+ JSON = o;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-4.a-9-s.js b/js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-4.a-9-s.js
new file mode 100644
index 000000000..da7a464ba
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-4.a-9-s.js
@@ -0,0 +1,27 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * This test is actually testing the [[Delete]] internal method (8.12.8). Since the
+ * language provides no way to directly exercise [[Delete]], the tests are placed here.
+ *
+ * @path ch11/11.4/11.4.1/11.4.1-4.a-9-s.js
+ * @description delete operator throws TypeError when deleting a non-configurable data property (Math.LN2) in strict mode
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ 'use strict';
+
+ try {
+ delete Math.LN2;
+ return false;
+ }
+ catch (e) {
+ return (e instanceof TypeError);
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-4.a-9.js b/js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-4.a-9.js
new file mode 100644
index 000000000..472fdc0c8
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-4.a-9.js
@@ -0,0 +1,21 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * This test is actually testing the [[Delete]] internal method (8.12.8). Since the
+ * language provides no way to directly exercise [[Delete]], the tests are placed here.
+ *
+ * @path ch11/11.4/11.4.1/11.4.1-4.a-9.js
+ * @description delete operator returns false when deleting a non-configurable data property (Math.LN2)
+ */
+
+
+function testcase() {
+ var d = delete Math.LN2;
+ if (d === false) {
+ return true;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-5-1.js b/js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-5-1.js
new file mode 100644
index 000000000..c4de1ba6f
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-5-1.js
@@ -0,0 +1,20 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch11/11.4/11.4.1/11.4.1-5-1.js
+ * @description delete operator returns false when deleting a direct reference to a var
+ */
+
+
+function testcase() {
+ var x = 1;
+
+ // Now, deleting 'x' directly should fail;
+ var d = delete x;
+ if(d === false && x === 1)
+ return true;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-5-2.js b/js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-5-2.js
new file mode 100644
index 000000000..838b653b1
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-5-2.js
@@ -0,0 +1,23 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch11/11.4/11.4.1/11.4.1-5-2.js
+ * @description delete operator returns false when deleting a direct reference to a function argument
+ */
+
+
+function testcase() {
+
+ function foo(a,b) {
+
+ // Now, deleting 'a' directly should fail
+ // because 'a' is direct reference to a function argument;
+ var d = delete a;
+ return (d === false && a === 1);
+ }
+ return foo(1,2);
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-5-3.js b/js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-5-3.js
new file mode 100644
index 000000000..33efcdb3e
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-5-3.js
@@ -0,0 +1,20 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch11/11.4/11.4.1/11.4.1-5-3.js
+ * @description delete operator returns false when deleting a direct reference to a function name
+ */
+
+
+function testcase() {
+ var foo = function(){};
+
+ // Now, deleting 'foo' directly should fail;
+ var d = delete foo;
+ if(d === false && fnExists(foo))
+ return true;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-5-a-1-s.js b/js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-5-a-1-s.js
new file mode 100644
index 000000000..3235f6aff
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-5-a-1-s.js
@@ -0,0 +1,24 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch11/11.4/11.4.1/11.4.1-5-a-1-s.js
+ * @description Strict Mode - SyntaxError is thrown when deleting a variable which is a primitive value type (number)
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+ var _11_4_1_5 = 5;
+
+ try {
+ eval("delete _11_4_1_5;");
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-5-a-10-s.js b/js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-5-a-10-s.js
new file mode 100644
index 000000000..6d614fb99
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-5-a-10-s.js
@@ -0,0 +1,24 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch11/11.4/11.4.1/11.4.1-5-a-10-s.js
+ * @description Strict Mode - SyntaxError is thrown when deleting a variable of type Array
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+ var arrObj = [1,2,3];
+
+ try {
+ eval("delete arrObj;");
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-5-a-11-s.js b/js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-5-a-11-s.js
new file mode 100644
index 000000000..328b4926f
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-5-a-11-s.js
@@ -0,0 +1,24 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch11/11.4/11.4.1/11.4.1-5-a-11-s.js
+ * @description Strict Mode - SyntaxError is thrown when deleting a variable of type String
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+ var strObj = new String("abc");
+
+ try {
+ eval("delete strObj;");
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-5-a-12-s.js b/js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-5-a-12-s.js
new file mode 100644
index 000000000..e09226b1d
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-5-a-12-s.js
@@ -0,0 +1,24 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch11/11.4/11.4.1/11.4.1-5-a-12-s.js
+ * @description Strict Mode - SyntaxError is thrown when deleting a variable of type Boolean
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+ var boolObj = new Boolean(false);
+
+ try {
+ eval("delete boolObj;");
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-5-a-13-s.js b/js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-5-a-13-s.js
new file mode 100644
index 000000000..008466068
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-5-a-13-s.js
@@ -0,0 +1,24 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch11/11.4/11.4.1/11.4.1-5-a-13-s.js
+ * @description Strict Mode - SyntaxError is thrown when deleting a variable of type Number
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+ var numObj = new Number(0);
+
+ try {
+ eval("delete numObj;");
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-5-a-14-s.js b/js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-5-a-14-s.js
new file mode 100644
index 000000000..8d6770b27
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-5-a-14-s.js
@@ -0,0 +1,24 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch11/11.4/11.4.1/11.4.1-5-a-14-s.js
+ * @description Strict Mode - SyntaxError is thrown when deleting a variable of type Date
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+ var dateObj = new Date();
+
+ try {
+ eval("delete dateObj;");
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-5-a-15-s.js b/js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-5-a-15-s.js
new file mode 100644
index 000000000..3ce568c6a
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-5-a-15-s.js
@@ -0,0 +1,24 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch11/11.4/11.4.1/11.4.1-5-a-15-s.js
+ * @description Strict Mode - SyntaxError is thrown when deleting a variable of type RegExp
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+ var regObj = new RegExp();
+
+ try {
+ eval("delete regObj;");
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-5-a-16-s.js b/js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-5-a-16-s.js
new file mode 100644
index 000000000..0edd4401f
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-5-a-16-s.js
@@ -0,0 +1,24 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch11/11.4/11.4.1/11.4.1-5-a-16-s.js
+ * @description Strict Mode - SyntaxError is thrown when deleting a variable of type Error
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+ var errObj = new Error();
+
+ try {
+ eval("delete errObj;");
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-5-a-17-s.js b/js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-5-a-17-s.js
new file mode 100644
index 000000000..2cb8fedef
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-5-a-17-s.js
@@ -0,0 +1,23 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch11/11.4/11.4.1/11.4.1-5-a-17-s.js
+ * @description Strict Mode - SyntaxError is thrown when deleting a variable of type Arguments
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+ try {
+ eval("var argObj = (function (a, b) { delete arguments; }(1, 2));");
+
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-5-a-18-s.js b/js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-5-a-18-s.js
new file mode 100644
index 000000000..d26819ff7
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-5-a-18-s.js
@@ -0,0 +1,23 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch11/11.4/11.4.1/11.4.1-5-a-18-s.js
+ * @description Strict Mode - SyntaxError is thrown when deleting a built-in (Object)
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+
+ try {
+ eval("delete Object;");
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-5-a-19-s.js b/js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-5-a-19-s.js
new file mode 100644
index 000000000..c45a701b0
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-5-a-19-s.js
@@ -0,0 +1,23 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch11/11.4/11.4.1/11.4.1-5-a-19-s.js
+ * @description Strict Mode - SyntaxError is thrown when deleting a built-in (Function)
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+
+ try {
+ eval("delete Function;");
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-5-a-2-s.js b/js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-5-a-2-s.js
new file mode 100644
index 000000000..aa5290faa
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-5-a-2-s.js
@@ -0,0 +1,26 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch11/11.4/11.4.1/11.4.1-5-a-2-s.js
+ * @description Strict Mode - SyntaxError is thrown when deleting a function parameter
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+ function funObj(x) {
+ eval("delete x;");
+ }
+
+ try {
+ funObj(1);
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-5-a-20-s.js b/js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-5-a-20-s.js
new file mode 100644
index 000000000..cf683589c
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-5-a-20-s.js
@@ -0,0 +1,23 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch11/11.4/11.4.1/11.4.1-5-a-20-s.js
+ * @description Strict Mode - SyntaxError is thrown when deleting a built-in (Array)
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+
+ try {
+ eval("delete Array;");
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-5-a-21-s.js b/js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-5-a-21-s.js
new file mode 100644
index 000000000..994e6ff96
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-5-a-21-s.js
@@ -0,0 +1,23 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch11/11.4/11.4.1/11.4.1-5-a-21-s.js
+ * @description Strict Mode - SyntaxError is thrown when deleting a built-in (String)
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+
+ try {
+ eval("delete String;");
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-5-a-22-s.js b/js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-5-a-22-s.js
new file mode 100644
index 000000000..341062b03
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-5-a-22-s.js
@@ -0,0 +1,23 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch11/11.4/11.4.1/11.4.1-5-a-22-s.js
+ * @description Strict Mode - SyntaxError is thrown when deleting a built-in (Boolean)
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+
+ try {
+ eval("delete Boolean;");
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-5-a-23-s.js b/js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-5-a-23-s.js
new file mode 100644
index 000000000..b0302df8b
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-5-a-23-s.js
@@ -0,0 +1,23 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch11/11.4/11.4.1/11.4.1-5-a-23-s.js
+ * @description Strict Mode - SyntaxError is thrown when deleting a built-in (Number)
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+
+ try {
+ eval("delete Number;");
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-5-a-24-s.js b/js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-5-a-24-s.js
new file mode 100644
index 000000000..0f03df1a7
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-5-a-24-s.js
@@ -0,0 +1,23 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch11/11.4/11.4.1/11.4.1-5-a-24-s.js
+ * @description Strict Mode - SyntaxError is thrown when deleting a built-in (Date)
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+
+ try {
+ eval("delete Date;");
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-5-a-25-s.js b/js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-5-a-25-s.js
new file mode 100644
index 000000000..0f418645a
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-5-a-25-s.js
@@ -0,0 +1,23 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch11/11.4/11.4.1/11.4.1-5-a-25-s.js
+ * @description Strict Mode - SyntaxError is thrown when deleting a built-in (RegExp)
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+
+ try {
+ eval("delete RegExp;");
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-5-a-26-s.js b/js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-5-a-26-s.js
new file mode 100644
index 000000000..62ed21fc3
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-5-a-26-s.js
@@ -0,0 +1,26 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch11/11.4/11.4.1/11.4.1-5-a-26-s.js
+ * @description Strict Mode - SyntaxError is thrown when deleting a built-in (Error)
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+ var errorBackup = Error;
+ try {
+ eval("delete Error;");
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError;
+ } finally {
+ Error = errorBackup;
+ }
+
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-5-a-27-s.js b/js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-5-a-27-s.js
new file mode 100644
index 000000000..4dacb29bd
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-5-a-27-s.js
@@ -0,0 +1,25 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch11/11.4/11.4.1/11.4.1-5-a-27-s.js
+ * @description Strict Mode - TypeError is thrown after deleting a property, calling preventExtensions, and attempting to reassign the property
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+ var a = {x:0, get y() { return 0;}};
+ delete a.x;
+ Object.preventExtensions(a);
+ try {
+ a.x = 1;
+ return false;
+ } catch (e) {
+ return e instanceof TypeError;
+ }
+}
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-5-a-28-s.js b/js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-5-a-28-s.js
new file mode 100644
index 000000000..4a5e015c3
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-5-a-28-s.js
@@ -0,0 +1,23 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch11/11.4/11.4.1/11.4.1-5-a-28-s.js
+ * @description Strict Mode - TypeError is thrown when deleting RegExp.length
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+ var a = new RegExp();
+ try {
+ var b = delete RegExp.length;
+ return false;
+ } catch (e) {
+ return e instanceof TypeError;
+ }
+}
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-5-a-3-s.js b/js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-5-a-3-s.js
new file mode 100644
index 000000000..3c1e18390
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-5-a-3-s.js
@@ -0,0 +1,24 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch11/11.4/11.4.1/11.4.1-5-a-3-s.js
+ * @description Strict Mode - SyntaxError is thrown when deleting a function name
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+ function funObj () { }
+
+ try {
+ eval("delete funObj");
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-5-a-4-s.js b/js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-5-a-4-s.js
new file mode 100644
index 000000000..55bca492b
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-5-a-4-s.js
@@ -0,0 +1,26 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch11/11.4/11.4.1/11.4.1-5-a-4-s.js
+ * @description Strict Mode - SyntaxError is thrown when deleting a function parameter
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+ function funObj(x, y, z) {
+ eval("delete y;");
+ }
+
+ try {
+ funObj(1);
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-5-a-5-s.js b/js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-5-a-5-s.js
new file mode 100644
index 000000000..4e72bc917
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-5-a-5-s.js
@@ -0,0 +1,24 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch11/11.4/11.4.1/11.4.1-5-a-5-s.js
+ * @description Strict Mode - SyntaxError is thrown when deleting a variable which is a primitive type (boolean)
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+ var _11_4_1_5 = true;
+
+ try {
+ eval("delete _11_4_1_5;");
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-5-a-5gs.js b/js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-5-a-5gs.js
new file mode 100644
index 000000000..ed126f668
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-5-a-5gs.js
@@ -0,0 +1,15 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch11/11.4/11.4.1/11.4.1-5-a-5gs.js
+ * @description Strict Mode - SyntaxError is thrown when deleting a variable which is primitive type(boolean)
+ * @onlyStrict
+ * @negative ^((?!NotEarlyError).)*$
+ */
+"use strict";
+var _11_4_1_5 = 7;
+throw NotEarlyError;
+delete _11_4_1_5; \ No newline at end of file
diff --git a/js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-5-a-6-s.js b/js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-5-a-6-s.js
new file mode 100644
index 000000000..f428dfeb6
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-5-a-6-s.js
@@ -0,0 +1,24 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch11/11.4/11.4.1/11.4.1-5-a-6-s.js
+ * @description Strict Mode - SyntaxError is thrown when deleting a variable which is a primitive type (string)
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+ var _11_4_1_5 = "abc";
+
+ try {
+ eval("delete _11_4_1_5;");
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-5-a-7-s.js b/js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-5-a-7-s.js
new file mode 100644
index 000000000..090276fd7
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-5-a-7-s.js
@@ -0,0 +1,24 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch11/11.4/11.4.1/11.4.1-5-a-7-s.js
+ * @description Strict Mode - SyntaxError is thrown when deleting a variable of type Object
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+ var obj = new Object();
+
+ try {
+ eval("delete obj;");
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-5-a-8-s.js b/js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-5-a-8-s.js
new file mode 100644
index 000000000..3116d6bc7
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-5-a-8-s.js
@@ -0,0 +1,24 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch11/11.4/11.4.1/11.4.1-5-a-8-s.js
+ * @description Strict Mode - SyntaxError is thrown when deleting a function object
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+ var funObj = function () { };
+
+ try {
+ eval("delete funObj;");
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-5-a-9-s.js b/js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-5-a-9-s.js
new file mode 100644
index 000000000..45b626551
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.4/11.4.1/11.4.1-5-a-9-s.js
@@ -0,0 +1,24 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch11/11.4/11.4.1/11.4.1-5-a-9-s.js
+ * @description Strict Mode - SyntaxError is thrown when deleting a variable of type function (declaration)
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+ function funObj () { };
+
+ try {
+ eval("delete funObj;");
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch11/11.4/11.4.1/11.4.4-4.a-3-s.js b/js/src/tests/test262/ch11/11.4/11.4.1/11.4.4-4.a-3-s.js
new file mode 100644
index 000000000..109216dea
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.4/11.4.1/11.4.4-4.a-3-s.js
@@ -0,0 +1,32 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * This test is actually testing the [[Delete]] internal method (8.12.8). Since the
+ * language provides no way to directly exercise [[Delete]], the tests are placed here.
+ *
+ * @path ch11/11.4/11.4.1/11.4.4-4.a-3-s.js
+ * @description delete operator throws TypeError when deleting a non-configurable data property in strict mode
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ 'use strict';
+
+ var o = {};
+ var desc = { value : 1 }; // all other attributes default to false
+ Object.defineProperty(o, "foo", desc);
+
+ // Now, deleting o.foo should throw TypeError because [[Configurable]] on foo is false.
+ try {
+ delete o.foo;
+ return false;
+ }
+ catch (e) {
+ return (e instanceof TypeError);
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch11/11.4/11.4.1/S11.4.1_A1.js b/js/src/tests/test262/ch11/11.4/11.4.1/S11.4.1_A1.js
new file mode 100644
index 000000000..35764288f
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.4/11.4.1/S11.4.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.
+
+/**
+ * White Space and Line Terminator between "delete" and UnaryExpression are allowed
+ *
+ * @path ch11/11.4/11.4.1/S11.4.1_A1.js
+ * @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/js/src/tests/test262/ch11/11.4/11.4.1/S11.4.1_A2.1.js b/js/src/tests/test262/ch11/11.4/11.4.1/S11.4.1_A2.1.js
new file mode 100644
index 000000000..b993e4a9d
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.4/11.4.1/S11.4.1_A2.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.
+
+/**
+ * If Type(x) is not Reference, return true
+ *
+ * @path ch11/11.4/11.4.1/S11.4.1_A2.1.js
+ * @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/js/src/tests/test262/ch11/11.4/11.4.1/S11.4.1_A2.2_T1.js b/js/src/tests/test262/ch11/11.4/11.4.1/S11.4.1_A2.2_T1.js
new file mode 100644
index 000000000..97fd10939
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.4/11.4.1/S11.4.1_A2.2_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.
+
+/**
+ * If GetBase(x) doesn't have a property GetPropertyName(x), return true
+ *
+ * @path ch11/11.4/11.4.1/S11.4.1_A2.2_T1.js
+ * @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/js/src/tests/test262/ch11/11.4/11.4.1/S11.4.1_A2.2_T2.js b/js/src/tests/test262/ch11/11.4/11.4.1/S11.4.1_A2.2_T2.js
new file mode 100644
index 000000000..e5c0cbe54
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.4/11.4.1/S11.4.1_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.
+
+/**
+ * If GetBase(x) doesn't have a property GetPropertyName(x), return true
+ *
+ * @path ch11/11.4/11.4.1/S11.4.1_A2.2_T2.js
+ * @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/js/src/tests/test262/ch11/11.4/11.4.1/S11.4.1_A3.1.js b/js/src/tests/test262/ch11/11.4/11.4.1/S11.4.1_A3.1.js
new file mode 100644
index 000000000..b1edccca9
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.4/11.4.1/S11.4.1_A3.1.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.
+
+/**
+ * If the property has the DontDelete attribute, return false
+ *
+ * @path ch11/11.4/11.4.1/S11.4.1_A3.1.js
+ * @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/js/src/tests/test262/ch11/11.4/11.4.1/S11.4.1_A3.2.js b/js/src/tests/test262/ch11/11.4/11.4.1/S11.4.1_A3.2.js
new file mode 100644
index 000000000..bee091183
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.4/11.4.1/S11.4.1_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.
+
+/**
+ * If the property doesn't have the DontDelete attribute, return true
+ *
+ * @path ch11/11.4/11.4.1/S11.4.1_A3.2.js
+ * @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/js/src/tests/test262/ch11/11.4/11.4.1/S11.4.1_A3.3.js b/js/src/tests/test262/ch11/11.4/11.4.1/S11.4.1_A3.3.js
new file mode 100644
index 000000000..e396ee626
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.4/11.4.1/S11.4.1_A3.3.js
@@ -0,0 +1,61 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * If the property doesn't have the DontDelete attribute, remove the property
+ *
+ * @path ch11/11.4/11.4.1/S11.4.1_A3.3.js
+ * @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/js/src/tests/test262/ch11/11.4/11.4.1/S11.4.1_A4.js b/js/src/tests/test262/ch11/11.4/11.4.1/S11.4.1_A4.js
new file mode 100644
index 000000000..a534ce959
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.4/11.4.1/S11.4.1_A4.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.
+
+/**
+ * "Delete" operator removes property, which is reference to the object, not the object
+ *
+ * @path ch11/11.4/11.4.1/S11.4.1_A4.js
+ * @description Checking two reference by one object
+ */
+
+//CHECK#1
+var obj = new Object();
+var 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/js/src/tests/test262/ch11/11.4/11.4.1/S11.4.1_A5.js b/js/src/tests/test262/ch11/11.4/11.4.1/S11.4.1_A5.js
new file mode 100644
index 000000000..2fd5f5243
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.4/11.4.1/S11.4.1_A5.js
@@ -0,0 +1,35 @@
+// Copyright 2011 Google Inc. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * A strict delete should either succeed, returning true, or it
+ * should fail by throwing a TypeError. Under no circumstances
+ * should a strict delete return false.
+ *
+ * @path ch11/11.4/11.4.1/S11.4.1_A5.js
+ * @description See if a strict delete returns false when deleting a
+ * non-standard property.
+ * @onlyStrict
+ */
+
+"use strict";
+
+var reNames = Object.getOwnPropertyNames(RegExp);
+for (var i = 0, len = reNames.length; i < len; i++) {
+ var reName = reNames[i];
+ if (reName !== 'prototype') {
+ var deleted = 'unassigned';
+ try {
+ deleted = delete RegExp[reName];
+ } catch (err) {
+ if (!(err instanceof TypeError)) {
+ $ERROR('#1: strict delete threw a non-TypeError: ' + err);
+ }
+ // fall through
+ }
+ if (deleted === false) {
+ $ERROR('#2: Strict delete returned false');
+ }
+ }
+}
+
diff --git a/js/src/tests/test262/ch11/11.4/11.4.1/browser.js b/js/src/tests/test262/ch11/11.4/11.4.1/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.4/11.4.1/browser.js
diff --git a/js/src/tests/test262/ch11/11.4/11.4.1/shell.js b/js/src/tests/test262/ch11/11.4/11.4.1/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.4/11.4.1/shell.js
diff --git a/js/src/tests/test262/ch11/11.4/11.4.2/S11.4.2_A1.js b/js/src/tests/test262/ch11/11.4/11.4.2/S11.4.2_A1.js
new file mode 100644
index 000000000..6211fc242
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.4/11.4.2/S11.4.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.
+
+/**
+ * White Space and Line Terminator between "void" and UnaryExpression are allowed
+ *
+ * @path ch11/11.4/11.4.2/S11.4.2_A1.js
+ * @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/js/src/tests/test262/ch11/11.4/11.4.2/S11.4.2_A2_T1.js b/js/src/tests/test262/ch11/11.4/11.4.2/S11.4.2_A2_T1.js
new file mode 100644
index 000000000..bb2ba2a9d
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.4/11.4.2/S11.4.2_A2_T1.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.
+
+/**
+ * Operator "void" uses GetValue
+ *
+ * @path ch11/11.4/11.4.2/S11.4.2_A2_T1.js
+ * @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/js/src/tests/test262/ch11/11.4/11.4.2/S11.4.2_A2_T2.js b/js/src/tests/test262/ch11/11.4/11.4.2/S11.4.2_A2_T2.js
new file mode 100644
index 000000000..a6074837a
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.4/11.4.2/S11.4.2_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.
+
+/**
+ * Operator "void" uses GetValue
+ *
+ * @path ch11/11.4/11.4.2/S11.4.2_A2_T2.js
+ * @description If GetBase(x) is null, throw ReferenceError
+ * @negative
+ */
+
+//CHECK#1
+void x;
+
diff --git a/js/src/tests/test262/ch11/11.4/11.4.2/S11.4.2_A4_T1.js b/js/src/tests/test262/ch11/11.4/11.4.2/S11.4.2_A4_T1.js
new file mode 100644
index 000000000..169eeb6c8
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.4/11.4.2/S11.4.2_A4_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.
+
+/**
+ * Operator "void" evaluates UnaryExpression and returns undefined
+ *
+ * @path ch11/11.4/11.4.2/S11.4.2_A4_T1.js
+ * @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/js/src/tests/test262/ch11/11.4/11.4.2/S11.4.2_A4_T2.js b/js/src/tests/test262/ch11/11.4/11.4.2/S11.4.2_A4_T2.js
new file mode 100644
index 000000000..0175474af
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.4/11.4.2/S11.4.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.
+
+/**
+ * Operator "void" evaluates UnaryExpression and returns undefined
+ *
+ * @path ch11/11.4/11.4.2/S11.4.2_A4_T2.js
+ * @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/js/src/tests/test262/ch11/11.4/11.4.2/S11.4.2_A4_T3.js b/js/src/tests/test262/ch11/11.4/11.4.2/S11.4.2_A4_T3.js
new file mode 100644
index 000000000..884b84af4
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.4/11.4.2/S11.4.2_A4_T3.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.
+
+/**
+ * Operator "void" evaluates UnaryExpression and returns undefined
+ *
+ * @path ch11/11.4/11.4.2/S11.4.2_A4_T3.js
+ * @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/js/src/tests/test262/ch11/11.4/11.4.2/S11.4.2_A4_T4.js b/js/src/tests/test262/ch11/11.4/11.4.2/S11.4.2_A4_T4.js
new file mode 100644
index 000000000..d6da81854
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.4/11.4.2/S11.4.2_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.
+
+/**
+ * Operator "void" evaluates UnaryExpression and returns undefined
+ *
+ * @path ch11/11.4/11.4.2/S11.4.2_A4_T4.js
+ * @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/js/src/tests/test262/ch11/11.4/11.4.2/S11.4.2_A4_T5.js b/js/src/tests/test262/ch11/11.4/11.4.2/S11.4.2_A4_T5.js
new file mode 100644
index 000000000..2be1def15
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.4/11.4.2/S11.4.2_A4_T5.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.
+
+/**
+ * Operator "void" evaluates UnaryExpression and returns undefined
+ *
+ * @path ch11/11.4/11.4.2/S11.4.2_A4_T5.js
+ * @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/js/src/tests/test262/ch11/11.4/11.4.2/S11.4.2_A4_T6.js b/js/src/tests/test262/ch11/11.4/11.4.2/S11.4.2_A4_T6.js
new file mode 100644
index 000000000..40c184cbe
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.4/11.4.2/S11.4.2_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.
+
+/**
+ * Operator "void" evaluates UnaryExpression and returns undefined
+ *
+ * @path ch11/11.4/11.4.2/S11.4.2_A4_T6.js
+ * @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/js/src/tests/test262/ch11/11.4/11.4.2/browser.js b/js/src/tests/test262/ch11/11.4/11.4.2/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.4/11.4.2/browser.js
diff --git a/js/src/tests/test262/ch11/11.4/11.4.2/shell.js b/js/src/tests/test262/ch11/11.4/11.4.2/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.4/11.4.2/shell.js
diff --git a/js/src/tests/test262/ch11/11.4/11.4.3/S11.4.3_A1.js b/js/src/tests/test262/ch11/11.4/11.4.3/S11.4.3_A1.js
new file mode 100644
index 000000000..5021bab91
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.4/11.4.3/S11.4.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.
+
+/**
+ * White Space and Line Terminator between "typeof" and UnaryExpression are allowed
+ *
+ * @path ch11/11.4/11.4.3/S11.4.3_A1.js
+ * @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/js/src/tests/test262/ch11/11.4/11.4.3/S11.4.3_A2_T1.js b/js/src/tests/test262/ch11/11.4/11.4.3/S11.4.3_A2_T1.js
new file mode 100644
index 000000000..02217c333
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.4/11.4.3/S11.4.3_A2_T1.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.
+
+/**
+ * Operator "typeof" uses GetValue
+ *
+ * @path ch11/11.4/11.4.3/S11.4.3_A2_T1.js
+ * @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/js/src/tests/test262/ch11/11.4/11.4.3/S11.4.3_A2_T2.js b/js/src/tests/test262/ch11/11.4/11.4.3/S11.4.3_A2_T2.js
new file mode 100644
index 000000000..4030c1257
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.4/11.4.3/S11.4.3_A2_T2.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.
+
+/**
+ * Operator "typeof" uses GetValue
+ *
+ * @path ch11/11.4/11.4.3/S11.4.3_A2_T2.js
+ * @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/js/src/tests/test262/ch11/11.4/11.4.3/S11.4.3_A3.1.js b/js/src/tests/test262/ch11/11.4/11.4.3/S11.4.3_A3.1.js
new file mode 100644
index 000000000..1609ad326
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.4/11.4.3/S11.4.3_A3.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.
+
+/**
+ * Result of applying "typeof" operator to undefined is "undefined"
+ *
+ * @path ch11/11.4/11.4.3/S11.4.3_A3.1.js
+ * @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/js/src/tests/test262/ch11/11.4/11.4.3/S11.4.3_A3.2.js b/js/src/tests/test262/ch11/11.4/11.4.3/S11.4.3_A3.2.js
new file mode 100644
index 000000000..94353f557
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.4/11.4.3/S11.4.3_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.
+
+/**
+ * Result of applying "typeof" operator to null is "object"
+ *
+ * @path ch11/11.4/11.4.3/S11.4.3_A3.2.js
+ * @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/js/src/tests/test262/ch11/11.4/11.4.3/S11.4.3_A3.3.js b/js/src/tests/test262/ch11/11.4/11.4.3/S11.4.3_A3.3.js
new file mode 100644
index 000000000..70dcf3ec6
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.4/11.4.3/S11.4.3_A3.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.
+
+/**
+ * Result of applying "typeof" operator to boolean is "boolean"
+ *
+ * @path ch11/11.4/11.4.3/S11.4.3_A3.3.js
+ * @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/js/src/tests/test262/ch11/11.4/11.4.3/S11.4.3_A3.4.js b/js/src/tests/test262/ch11/11.4/11.4.3/S11.4.3_A3.4.js
new file mode 100644
index 000000000..e1444e9f5
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.4/11.4.3/S11.4.3_A3.4.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.
+
+/**
+ * Result of appying "typeof" operator to number is "number"
+ *
+ * @path ch11/11.4/11.4.3/S11.4.3_A3.4.js
+ * @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/js/src/tests/test262/ch11/11.4/11.4.3/S11.4.3_A3.5.js b/js/src/tests/test262/ch11/11.4/11.4.3/S11.4.3_A3.5.js
new file mode 100644
index 000000000..f1c07acd1
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.4/11.4.3/S11.4.3_A3.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.
+
+/**
+ * Result of appying "typeof" operator to string is "string"
+ *
+ * @path ch11/11.4/11.4.3/S11.4.3_A3.5.js
+ * @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/js/src/tests/test262/ch11/11.4/11.4.3/S11.4.3_A3.6.js b/js/src/tests/test262/ch11/11.4/11.4.3/S11.4.3_A3.6.js
new file mode 100644
index 000000000..feab82ac6
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.4/11.4.3/S11.4.3_A3.6.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.
+
+/**
+ * Result of applying "typeof" operator to the object that is native and doesn't implement [[Call]] is "object"
+ *
+ * @path ch11/11.4/11.4.3/S11.4.3_A3.6.js
+ * @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/js/src/tests/test262/ch11/11.4/11.4.3/S11.4.3_A3.7.js b/js/src/tests/test262/ch11/11.4/11.4.3/S11.4.3_A3.7.js
new file mode 100644
index 000000000..66282799a
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.4/11.4.3/S11.4.3_A3.7.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.
+
+/**
+ * Result of applying "typeof" operator to the object that is native and implements [[Call]] is "function"
+ *
+ * @path ch11/11.4/11.4.3/S11.4.3_A3.7.js
+ * @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/js/src/tests/test262/ch11/11.4/11.4.3/browser.js b/js/src/tests/test262/ch11/11.4/11.4.3/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.4/11.4.3/browser.js
diff --git a/js/src/tests/test262/ch11/11.4/11.4.3/shell.js b/js/src/tests/test262/ch11/11.4/11.4.3/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.4/11.4.3/shell.js
diff --git a/js/src/tests/test262/ch11/11.4/11.4.4/11.4.4-2-1-s.js b/js/src/tests/test262/ch11/11.4/11.4.4/11.4.4-2-1-s.js
new file mode 100644
index 000000000..f7e9b82de
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.4/11.4.4/11.4.4-2-1-s.js
@@ -0,0 +1,23 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch11/11.4/11.4.4/11.4.4-2-1-s.js
+ * @description Strict Mode - SyntaxError is thrown for ++eval
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+ var blah = eval;
+ try {
+ eval("++eval;");
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError && blah === eval;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch11/11.4/11.4.4/11.4.4-2-2-s.js b/js/src/tests/test262/ch11/11.4/11.4.4/11.4.4-2-2-s.js
new file mode 100644
index 000000000..142adabef
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.4/11.4.4/11.4.4-2-2-s.js
@@ -0,0 +1,23 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch11/11.4/11.4.4/11.4.4-2-2-s.js
+ * @description Strict Mode - SyntaxError is thrown for ++arguments
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+ var blah = arguments;
+ try {
+ eval("++arguments;");
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError && blah === arguments;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch11/11.4/11.4.4/11.4.4-2-3-s.js b/js/src/tests/test262/ch11/11.4/11.4.4/11.4.4-2-3-s.js
new file mode 100644
index 000000000..00d6448e3
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.4/11.4.4/11.4.4-2-3-s.js
@@ -0,0 +1,19 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch11/11.4/11.4.4/11.4.4-2-3-s.js
+ * @description Strict Mode - SyntaxError is not thrown for ++arguments[...]
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+ arguments[1] = 7;
+ ++arguments[1];
+ return arguments[1]===8;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch11/11.4/11.4.4/S11.4.4_A1.js b/js/src/tests/test262/ch11/11.4/11.4.4/S11.4.4_A1.js
new file mode 100644
index 000000000..1a6f53940
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.4/11.4.4/S11.4.4_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.
+
+/**
+ * White Space and Line Terminator between "++" and UnaryExpression are allowed
+ *
+ * @path ch11/11.4/11.4.4/S11.4.4_A1.js
+ * @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/js/src/tests/test262/ch11/11.4/11.4.4/S11.4.4_A2.1_T1.js b/js/src/tests/test262/ch11/11.4/11.4.4/S11.4.4_A2.1_T1.js
new file mode 100644
index 000000000..253e2a970
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.4/11.4.4/S11.4.4_A2.1_T1.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.
+
+/**
+ * Operator ++x uses GetValue and PutValue
+ *
+ * @path ch11/11.4/11.4.4/S11.4.4_A2.1_T1.js
+ * @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/js/src/tests/test262/ch11/11.4/11.4.4/S11.4.4_A2.1_T2.js b/js/src/tests/test262/ch11/11.4/11.4.4/S11.4.4_A2.1_T2.js
new file mode 100644
index 000000000..a67137e4b
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.4/11.4.4/S11.4.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.
+
+/**
+ * Operator ++x uses GetValue and PutValue
+ *
+ * @path ch11/11.4/11.4.4/S11.4.4_A2.1_T2.js
+ * @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/js/src/tests/test262/ch11/11.4/11.4.4/S11.4.4_A2.1_T3.js b/js/src/tests/test262/ch11/11.4/11.4.4/S11.4.4_A2.1_T3.js
new file mode 100644
index 000000000..7faa4d81f
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.4/11.4.4/S11.4.4_A2.1_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.
+
+/**
+ * Operator ++x uses GetValue and PutValue
+ *
+ * @path ch11/11.4/11.4.4/S11.4.4_A2.1_T3.js
+ * @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/js/src/tests/test262/ch11/11.4/11.4.4/S11.4.4_A2.2_T1.js b/js/src/tests/test262/ch11/11.4/11.4.4/S11.4.4_A2.2_T1.js
new file mode 100644
index 000000000..bdc909df1
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.4/11.4.4/S11.4.4_A2.2_T1.js
@@ -0,0 +1,104 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * Operator ++x uses [[Default Value]]
+ *
+ * @path ch11/11.4/11.4.4/S11.4.4_A2.2_T1.js
+ * @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/js/src/tests/test262/ch11/11.4/11.4.4/S11.4.4_A3_T1.js b/js/src/tests/test262/ch11/11.4/11.4.4/S11.4.4_A3_T1.js
new file mode 100644
index 000000000..9c41505c9
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.4/11.4.4/S11.4.4_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.
+
+/**
+ * Operator ++x returns x = ToNumber(x) + 1
+ *
+ * @path ch11/11.4/11.4.4/S11.4.4_A3_T1.js
+ * @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/js/src/tests/test262/ch11/11.4/11.4.4/S11.4.4_A3_T2.js b/js/src/tests/test262/ch11/11.4/11.4.4/S11.4.4_A3_T2.js
new file mode 100644
index 000000000..52296a948
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.4/11.4.4/S11.4.4_A3_T2.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.
+
+/**
+ * Operator ++x returns x = ToNumber(x) + 1
+ *
+ * @path ch11/11.4/11.4.4/S11.4.4_A3_T2.js
+ * @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/js/src/tests/test262/ch11/11.4/11.4.4/S11.4.4_A3_T3.js b/js/src/tests/test262/ch11/11.4/11.4.4/S11.4.4_A3_T3.js
new file mode 100644
index 000000000..aee3607dd
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.4/11.4.4/S11.4.4_A3_T3.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.
+
+/**
+ * Operator ++x returns x = ToNumber(x) + 1
+ *
+ * @path ch11/11.4/11.4.4/S11.4.4_A3_T3.js
+ * @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/js/src/tests/test262/ch11/11.4/11.4.4/S11.4.4_A3_T4.js b/js/src/tests/test262/ch11/11.4/11.4.4/S11.4.4_A3_T4.js
new file mode 100644
index 000000000..89619003e
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.4/11.4.4/S11.4.4_A3_T4.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.
+
+/**
+ * Operator ++x returns x = ToNumber(x) + 1
+ *
+ * @path ch11/11.4/11.4.4/S11.4.4_A3_T4.js
+ * @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/js/src/tests/test262/ch11/11.4/11.4.4/S11.4.4_A3_T5.js b/js/src/tests/test262/ch11/11.4/11.4.4/S11.4.4_A3_T5.js
new file mode 100644
index 000000000..d08522f72
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.4/11.4.4/S11.4.4_A3_T5.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.
+
+/**
+ * Operator ++x returns x = ToNumber(x) + 1
+ *
+ * @path ch11/11.4/11.4.4/S11.4.4_A3_T5.js
+ * @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/js/src/tests/test262/ch11/11.4/11.4.4/S11.4.4_A4_T1.js b/js/src/tests/test262/ch11/11.4/11.4.4/S11.4.4_A4_T1.js
new file mode 100644
index 000000000..585e75091
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.4/11.4.4/S11.4.4_A4_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.
+
+/**
+ * Operator ++x returns ToNumber(x) + 1
+ *
+ * @path ch11/11.4/11.4.4/S11.4.4_A4_T1.js
+ * @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/js/src/tests/test262/ch11/11.4/11.4.4/S11.4.4_A4_T2.js b/js/src/tests/test262/ch11/11.4/11.4.4/S11.4.4_A4_T2.js
new file mode 100644
index 000000000..3aacac1b8
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.4/11.4.4/S11.4.4_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.
+
+/**
+ * Operator ++x returns ToNumber(x) + 1
+ *
+ * @path ch11/11.4/11.4.4/S11.4.4_A4_T2.js
+ * @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/js/src/tests/test262/ch11/11.4/11.4.4/S11.4.4_A4_T3.js b/js/src/tests/test262/ch11/11.4/11.4.4/S11.4.4_A4_T3.js
new file mode 100644
index 000000000..4e2d5f22a
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.4/11.4.4/S11.4.4_A4_T3.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.
+
+/**
+ * Operator ++x returns ToNumber(x) + 1
+ *
+ * @path ch11/11.4/11.4.4/S11.4.4_A4_T3.js
+ * @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/js/src/tests/test262/ch11/11.4/11.4.4/S11.4.4_A4_T4.js b/js/src/tests/test262/ch11/11.4/11.4.4/S11.4.4_A4_T4.js
new file mode 100644
index 000000000..f0edb536e
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.4/11.4.4/S11.4.4_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.
+
+/**
+ * Operator ++x returns ToNumber(x) + 1
+ *
+ * @path ch11/11.4/11.4.4/S11.4.4_A4_T4.js
+ * @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/js/src/tests/test262/ch11/11.4/11.4.4/S11.4.4_A4_T5.js b/js/src/tests/test262/ch11/11.4/11.4.4/S11.4.4_A4_T5.js
new file mode 100644
index 000000000..c6c9d526a
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.4/11.4.4/S11.4.4_A4_T5.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.
+
+/**
+ * Operator ++x returns ToNumber(x) + 1
+ *
+ * @path ch11/11.4/11.4.4/S11.4.4_A4_T5.js
+ * @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/js/src/tests/test262/ch11/11.4/11.4.4/browser.js b/js/src/tests/test262/ch11/11.4/11.4.4/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.4/11.4.4/browser.js
diff --git a/js/src/tests/test262/ch11/11.4/11.4.4/shell.js b/js/src/tests/test262/ch11/11.4/11.4.4/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.4/11.4.4/shell.js
diff --git a/js/src/tests/test262/ch11/11.4/11.4.5/11.4.5-2-1-s.js b/js/src/tests/test262/ch11/11.4/11.4.5/11.4.5-2-1-s.js
new file mode 100644
index 000000000..2c0d4c1a1
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.4/11.4.5/11.4.5-2-1-s.js
@@ -0,0 +1,23 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch11/11.4/11.4.5/11.4.5-2-1-s.js
+ * @description Strict Mode - SyntaxError is thrown for --eval
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+ var blah = eval;
+ try {
+ eval("--eval;");
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError && blah === eval;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch11/11.4/11.4.5/11.4.5-2-2-s.js b/js/src/tests/test262/ch11/11.4/11.4.5/11.4.5-2-2-s.js
new file mode 100644
index 000000000..373dabe9e
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.4/11.4.5/11.4.5-2-2-s.js
@@ -0,0 +1,23 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch11/11.4/11.4.5/11.4.5-2-2-s.js
+ * @description Strict Mode - SyntaxError is thrown for --arguments
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+ var blah = arguments;
+ try {
+ eval("--arguments;");
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError && blah === arguments;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch11/11.4/11.4.5/11.4.5-2-2gs.js b/js/src/tests/test262/ch11/11.4/11.4.5/11.4.5-2-2gs.js
new file mode 100644
index 000000000..3040d8029
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.4/11.4.5/11.4.5-2-2gs.js
@@ -0,0 +1,16 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+
+/**
+ * @path ch11/11.4/11.4.5/11.4.5-2-2gs.js
+ * @description Strict Mode - SyntaxError is throw if the UnaryExpression operated upon by a Prefix Increment operator(--arguments)
+ * @onlyStrict
+ * @negative ^((?!NotEarlyError).)*$
+ */
+
+"use strict";
+throw NotEarlyError;
+--arguments;
diff --git a/js/src/tests/test262/ch11/11.4/11.4.5/11.4.5-2-3-s.js b/js/src/tests/test262/ch11/11.4/11.4.5/11.4.5-2-3-s.js
new file mode 100644
index 000000000..9af3f7bcb
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.4/11.4.5/11.4.5-2-3-s.js
@@ -0,0 +1,19 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch11/11.4/11.4.5/11.4.5-2-3-s.js
+ * @description Strict Mode - SyntaxError is not thrown for --arguments[...]
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+ arguments[1] = 7;
+ --arguments[1];
+ return arguments[1]===6;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch11/11.4/11.4.5/S11.4.5_A1.js b/js/src/tests/test262/ch11/11.4/11.4.5/S11.4.5_A1.js
new file mode 100644
index 000000000..5be2493ee
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.4/11.4.5/S11.4.5_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.
+
+/**
+ * White Space and Line Terminator between "--" and UnaryExpression are allowed
+ *
+ * @path ch11/11.4/11.4.5/S11.4.5_A1.js
+ * @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/js/src/tests/test262/ch11/11.4/11.4.5/S11.4.5_A2.1_T1.js b/js/src/tests/test262/ch11/11.4/11.4.5/S11.4.5_A2.1_T1.js
new file mode 100644
index 000000000..136b72c51
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.4/11.4.5/S11.4.5_A2.1_T1.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.
+
+/**
+ * Operator --x uses GetValue and PutValue
+ *
+ * @path ch11/11.4/11.4.5/S11.4.5_A2.1_T1.js
+ * @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/js/src/tests/test262/ch11/11.4/11.4.5/S11.4.5_A2.1_T2.js b/js/src/tests/test262/ch11/11.4/11.4.5/S11.4.5_A2.1_T2.js
new file mode 100644
index 000000000..2dabef975
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.4/11.4.5/S11.4.5_A2.1_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.
+
+/**
+ * Operator --x uses GetValue and PutValue
+ *
+ * @path ch11/11.4/11.4.5/S11.4.5_A2.1_T2.js
+ * @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/js/src/tests/test262/ch11/11.4/11.4.5/S11.4.5_A2.1_T3.js b/js/src/tests/test262/ch11/11.4/11.4.5/S11.4.5_A2.1_T3.js
new file mode 100644
index 000000000..5700185b9
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.4/11.4.5/S11.4.5_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.
+
+/**
+ * Operator --x uses GetValue and PutValue
+ *
+ * @path ch11/11.4/11.4.5/S11.4.5_A2.1_T3.js
+ * @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/js/src/tests/test262/ch11/11.4/11.4.5/S11.4.5_A2.2_T1.js b/js/src/tests/test262/ch11/11.4/11.4.5/S11.4.5_A2.2_T1.js
new file mode 100644
index 000000000..6f19db9db
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.4/11.4.5/S11.4.5_A2.2_T1.js
@@ -0,0 +1,104 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * Operator --x uses [[Default Value]]
+ *
+ * @path ch11/11.4/11.4.5/S11.4.5_A2.2_T1.js
+ * @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/js/src/tests/test262/ch11/11.4/11.4.5/S11.4.5_A3_T1.js b/js/src/tests/test262/ch11/11.4/11.4.5/S11.4.5_A3_T1.js
new file mode 100644
index 000000000..f7fd9fc7b
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.4/11.4.5/S11.4.5_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.
+
+/**
+ * Operator --x returns x = ToNumber(x) - 1
+ *
+ * @path ch11/11.4/11.4.5/S11.4.5_A3_T1.js
+ * @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/js/src/tests/test262/ch11/11.4/11.4.5/S11.4.5_A3_T2.js b/js/src/tests/test262/ch11/11.4/11.4.5/S11.4.5_A3_T2.js
new file mode 100644
index 000000000..a946e8648
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.4/11.4.5/S11.4.5_A3_T2.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.
+
+/**
+ * Operator --x returns x = ToNumber(x) - 1
+ *
+ * @path ch11/11.4/11.4.5/S11.4.5_A3_T2.js
+ * @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/js/src/tests/test262/ch11/11.4/11.4.5/S11.4.5_A3_T3.js b/js/src/tests/test262/ch11/11.4/11.4.5/S11.4.5_A3_T3.js
new file mode 100644
index 000000000..6ed487073
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.4/11.4.5/S11.4.5_A3_T3.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.
+
+/**
+ * Operator --x returns x = ToNumber(x) - 1
+ *
+ * @path ch11/11.4/11.4.5/S11.4.5_A3_T3.js
+ * @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/js/src/tests/test262/ch11/11.4/11.4.5/S11.4.5_A3_T4.js b/js/src/tests/test262/ch11/11.4/11.4.5/S11.4.5_A3_T4.js
new file mode 100644
index 000000000..ed0d7798b
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.4/11.4.5/S11.4.5_A3_T4.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.
+
+/**
+ * Operator --x returns x = ToNumber(x) - 1
+ *
+ * @path ch11/11.4/11.4.5/S11.4.5_A3_T4.js
+ * @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/js/src/tests/test262/ch11/11.4/11.4.5/S11.4.5_A3_T5.js b/js/src/tests/test262/ch11/11.4/11.4.5/S11.4.5_A3_T5.js
new file mode 100644
index 000000000..0fd3f76ac
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.4/11.4.5/S11.4.5_A3_T5.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.
+
+/**
+ * Operator --x returns x = ToNumber(x) - 1
+ *
+ * @path ch11/11.4/11.4.5/S11.4.5_A3_T5.js
+ * @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/js/src/tests/test262/ch11/11.4/11.4.5/S11.4.5_A4_T1.js b/js/src/tests/test262/ch11/11.4/11.4.5/S11.4.5_A4_T1.js
new file mode 100644
index 000000000..7f424a239
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.4/11.4.5/S11.4.5_A4_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.
+
+/**
+ * Operator --x returns ToNumber(x) - 1
+ *
+ * @path ch11/11.4/11.4.5/S11.4.5_A4_T1.js
+ * @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/js/src/tests/test262/ch11/11.4/11.4.5/S11.4.5_A4_T2.js b/js/src/tests/test262/ch11/11.4/11.4.5/S11.4.5_A4_T2.js
new file mode 100644
index 000000000..c5c77de06
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.4/11.4.5/S11.4.5_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.
+
+/**
+ * Operator --x returns ToNumber(x) - 1
+ *
+ * @path ch11/11.4/11.4.5/S11.4.5_A4_T2.js
+ * @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/js/src/tests/test262/ch11/11.4/11.4.5/S11.4.5_A4_T3.js b/js/src/tests/test262/ch11/11.4/11.4.5/S11.4.5_A4_T3.js
new file mode 100644
index 000000000..29d4d123f
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.4/11.4.5/S11.4.5_A4_T3.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.
+
+/**
+ * Operator --x returns ToNumber(x) - 1
+ *
+ * @path ch11/11.4/11.4.5/S11.4.5_A4_T3.js
+ * @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/js/src/tests/test262/ch11/11.4/11.4.5/S11.4.5_A4_T4.js b/js/src/tests/test262/ch11/11.4/11.4.5/S11.4.5_A4_T4.js
new file mode 100644
index 000000000..a1f600ace
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.4/11.4.5/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.
+
+/**
+ * Operator --x returns ToNumber(x) - 1
+ *
+ * @path ch11/11.4/11.4.5/S11.4.5_A4_T4.js
+ * @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/js/src/tests/test262/ch11/11.4/11.4.5/S11.4.5_A4_T5.js b/js/src/tests/test262/ch11/11.4/11.4.5/S11.4.5_A4_T5.js
new file mode 100644
index 000000000..fe40976df
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.4/11.4.5/S11.4.5_A4_T5.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.
+
+/**
+ * Operator --x returns ToNumber(x) - 1
+ *
+ * @path ch11/11.4/11.4.5/S11.4.5_A4_T5.js
+ * @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/js/src/tests/test262/ch11/11.4/11.4.5/browser.js b/js/src/tests/test262/ch11/11.4/11.4.5/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.4/11.4.5/browser.js
diff --git a/js/src/tests/test262/ch11/11.4/11.4.5/shell.js b/js/src/tests/test262/ch11/11.4/11.4.5/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.4/11.4.5/shell.js
diff --git a/js/src/tests/test262/ch11/11.4/11.4.6/11.4.6-2-1.js b/js/src/tests/test262/ch11/11.4/11.4.6/11.4.6-2-1.js
new file mode 100644
index 000000000..b4d785c18
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.4/11.4.6/11.4.6-2-1.js
@@ -0,0 +1,15 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch11/11.4/11.4.6/11.4.6-2-1.js
+ * @description +"" should be zero
+ */
+
+
+function testcase() {
+ return +"" === 0;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch11/11.4/11.4.6/S11.4.6_A1.js b/js/src/tests/test262/ch11/11.4/11.4.6/S11.4.6_A1.js
new file mode 100644
index 000000000..ac0f45a12
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.4/11.4.6/S11.4.6_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.
+
+/**
+ * White Space and Line Terminator between "+" and UnaryExpression are allowed
+ *
+ * @path ch11/11.4/11.4.6/S11.4.6_A1.js
+ * @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/js/src/tests/test262/ch11/11.4/11.4.6/S11.4.6_A2.1_T1.js b/js/src/tests/test262/ch11/11.4/11.4.6/S11.4.6_A2.1_T1.js
new file mode 100644
index 000000000..a3074769a
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.4/11.4.6/S11.4.6_A2.1_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.
+
+/**
+ * Operator +x uses GetValue
+ *
+ * @path ch11/11.4/11.4.6/S11.4.6_A2.1_T1.js
+ * @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/js/src/tests/test262/ch11/11.4/11.4.6/S11.4.6_A2.1_T2.js b/js/src/tests/test262/ch11/11.4/11.4.6/S11.4.6_A2.1_T2.js
new file mode 100644
index 000000000..ab6aa9fe4
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.4/11.4.6/S11.4.6_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.
+
+/**
+ * Operator +x uses GetValue
+ *
+ * @path ch11/11.4/11.4.6/S11.4.6_A2.1_T2.js
+ * @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/js/src/tests/test262/ch11/11.4/11.4.6/S11.4.6_A2.2_T1.js b/js/src/tests/test262/ch11/11.4/11.4.6/S11.4.6_A2.2_T1.js
new file mode 100644
index 000000000..78eb580bb
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.4/11.4.6/S11.4.6_A2.2_T1.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.
+
+/**
+ * Operator +x uses [[Default Value]]
+ *
+ * @path ch11/11.4/11.4.6/S11.4.6_A2.2_T1.js
+ * @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/js/src/tests/test262/ch11/11.4/11.4.6/S11.4.6_A3_T1.js b/js/src/tests/test262/ch11/11.4/11.4.6/S11.4.6_A3_T1.js
new file mode 100644
index 000000000..7338942de
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.4/11.4.6/S11.4.6_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.
+
+/**
+ * Operator +x returns ToNumber(x)
+ *
+ * @path ch11/11.4/11.4.6/S11.4.6_A3_T1.js
+ * @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/js/src/tests/test262/ch11/11.4/11.4.6/S11.4.6_A3_T2.js b/js/src/tests/test262/ch11/11.4/11.4.6/S11.4.6_A3_T2.js
new file mode 100644
index 000000000..86f537c64
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.4/11.4.6/S11.4.6_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.
+
+/**
+ * Operator +x returns ToNumber(x)
+ *
+ * @path ch11/11.4/11.4.6/S11.4.6_A3_T2.js
+ * @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/js/src/tests/test262/ch11/11.4/11.4.6/S11.4.6_A3_T3.js b/js/src/tests/test262/ch11/11.4/11.4.6/S11.4.6_A3_T3.js
new file mode 100644
index 000000000..36628861a
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.4/11.4.6/S11.4.6_A3_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.
+
+/**
+ * Operator +x returns ToNumber(x)
+ *
+ * @path ch11/11.4/11.4.6/S11.4.6_A3_T3.js
+ * @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/js/src/tests/test262/ch11/11.4/11.4.6/S11.4.6_A3_T4.js b/js/src/tests/test262/ch11/11.4/11.4.6/S11.4.6_A3_T4.js
new file mode 100644
index 000000000..61b853375
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.4/11.4.6/S11.4.6_A3_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.
+
+/**
+ * Operator +x returns ToNumber(x)
+ *
+ * @path ch11/11.4/11.4.6/S11.4.6_A3_T4.js
+ * @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/js/src/tests/test262/ch11/11.4/11.4.6/S11.4.6_A3_T5.js b/js/src/tests/test262/ch11/11.4/11.4.6/S11.4.6_A3_T5.js
new file mode 100644
index 000000000..9b56ff09f
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.4/11.4.6/S11.4.6_A3_T5.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.
+
+/**
+ * Operator +x returns ToNumber(x)
+ *
+ * @path ch11/11.4/11.4.6/S11.4.6_A3_T5.js
+ * @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/js/src/tests/test262/ch11/11.4/11.4.6/browser.js b/js/src/tests/test262/ch11/11.4/11.4.6/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.4/11.4.6/browser.js
diff --git a/js/src/tests/test262/ch11/11.4/11.4.6/shell.js b/js/src/tests/test262/ch11/11.4/11.4.6/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.4/11.4.6/shell.js
diff --git a/js/src/tests/test262/ch11/11.4/11.4.7/11.4.7-4-1.js b/js/src/tests/test262/ch11/11.4/11.4.7/11.4.7-4-1.js
new file mode 100644
index 000000000..12d050866
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.4/11.4.7/11.4.7-4-1.js
@@ -0,0 +1,15 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch11/11.4/11.4.7/11.4.7-4-1.js
+ * @description -"" should be zero
+ */
+
+
+function testcase() {
+ return -"" === 0;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch11/11.4/11.4.7/S11.4.7_A1.js b/js/src/tests/test262/ch11/11.4/11.4.7/S11.4.7_A1.js
new file mode 100644
index 000000000..13234518b
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.4/11.4.7/S11.4.7_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.
+
+/**
+ * White Space and Line Terminator between "-" and UnaryExpression are allowed
+ *
+ * @path ch11/11.4/11.4.7/S11.4.7_A1.js
+ * @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/js/src/tests/test262/ch11/11.4/11.4.7/S11.4.7_A2.1_T1.js b/js/src/tests/test262/ch11/11.4/11.4.7/S11.4.7_A2.1_T1.js
new file mode 100644
index 000000000..8b3c47a90
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.4/11.4.7/S11.4.7_A2.1_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.
+
+/**
+ * Operator -x uses GetValue
+ *
+ * @path ch11/11.4/11.4.7/S11.4.7_A2.1_T1.js
+ * @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/js/src/tests/test262/ch11/11.4/11.4.7/S11.4.7_A2.1_T2.js b/js/src/tests/test262/ch11/11.4/11.4.7/S11.4.7_A2.1_T2.js
new file mode 100644
index 000000000..e7de28aa5
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.4/11.4.7/S11.4.7_A2.1_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.
+
+/**
+ * Operator -x uses GetValue
+ *
+ * @path ch11/11.4/11.4.7/S11.4.7_A2.1_T2.js
+ * @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/js/src/tests/test262/ch11/11.4/11.4.7/S11.4.7_A2.2_T1.js b/js/src/tests/test262/ch11/11.4/11.4.7/S11.4.7_A2.2_T1.js
new file mode 100644
index 000000000..a9ad69e5c
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.4/11.4.7/S11.4.7_A2.2_T1.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.
+
+/**
+ * Operator -x uses [[Default Value]]
+ *
+ * @path ch11/11.4/11.4.7/S11.4.7_A2.2_T1.js
+ * @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/js/src/tests/test262/ch11/11.4/11.4.7/S11.4.7_A3_T1.js b/js/src/tests/test262/ch11/11.4/11.4.7/S11.4.7_A3_T1.js
new file mode 100644
index 000000000..f421d9133
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.4/11.4.7/S11.4.7_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.
+
+/**
+ * Operator -x returns -ToNumber(x)
+ *
+ * @path ch11/11.4/11.4.7/S11.4.7_A3_T1.js
+ * @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/js/src/tests/test262/ch11/11.4/11.4.7/S11.4.7_A3_T2.js b/js/src/tests/test262/ch11/11.4/11.4.7/S11.4.7_A3_T2.js
new file mode 100644
index 000000000..611683c12
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.4/11.4.7/S11.4.7_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.
+
+/**
+ * Operator -x returns -ToNumber(x)
+ *
+ * @path ch11/11.4/11.4.7/S11.4.7_A3_T2.js
+ * @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/js/src/tests/test262/ch11/11.4/11.4.7/S11.4.7_A3_T3.js b/js/src/tests/test262/ch11/11.4/11.4.7/S11.4.7_A3_T3.js
new file mode 100644
index 000000000..9a439804e
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.4/11.4.7/S11.4.7_A3_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.
+
+/**
+ * Operator -x returns -ToNumber(x)
+ *
+ * @path ch11/11.4/11.4.7/S11.4.7_A3_T3.js
+ * @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/js/src/tests/test262/ch11/11.4/11.4.7/S11.4.7_A3_T4.js b/js/src/tests/test262/ch11/11.4/11.4.7/S11.4.7_A3_T4.js
new file mode 100644
index 000000000..7fda40e95
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.4/11.4.7/S11.4.7_A3_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.
+
+/**
+ * Operator -x returns -ToNumber(x)
+ *
+ * @path ch11/11.4/11.4.7/S11.4.7_A3_T4.js
+ * @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/js/src/tests/test262/ch11/11.4/11.4.7/S11.4.7_A3_T5.js b/js/src/tests/test262/ch11/11.4/11.4.7/S11.4.7_A3_T5.js
new file mode 100644
index 000000000..426a4fd8b
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.4/11.4.7/S11.4.7_A3_T5.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.
+
+/**
+ * Operator -x returns -ToNumber(x)
+ *
+ * @path ch11/11.4/11.4.7/S11.4.7_A3_T5.js
+ * @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/js/src/tests/test262/ch11/11.4/11.4.7/S11.4.7_A4.1.js b/js/src/tests/test262/ch11/11.4/11.4.7/S11.4.7_A4.1.js
new file mode 100644
index 000000000..e8d1dfe86
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.4/11.4.7/S11.4.7_A4.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.
+
+/**
+ * If x is NaN, operator -x returns NaN
+ *
+ * @path ch11/11.4/11.4.7/S11.4.7_A4.1.js
+ * @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/js/src/tests/test262/ch11/11.4/11.4.7/S11.4.7_A4.2.js b/js/src/tests/test262/ch11/11.4/11.4.7/S11.4.7_A4.2.js
new file mode 100644
index 000000000..8b39bd249
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.4/11.4.7/S11.4.7_A4.2.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.
+
+/**
+ * Negating +0 produces -0, negating -0 produces +0
+ *
+ * @path ch11/11.4/11.4.7/S11.4.7_A4.2.js
+ * @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/js/src/tests/test262/ch11/11.4/11.4.7/browser.js b/js/src/tests/test262/ch11/11.4/11.4.7/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.4/11.4.7/browser.js
diff --git a/js/src/tests/test262/ch11/11.4/11.4.7/shell.js b/js/src/tests/test262/ch11/11.4/11.4.7/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.4/11.4.7/shell.js
diff --git a/js/src/tests/test262/ch11/11.4/11.4.8/S11.4.8_A1.js b/js/src/tests/test262/ch11/11.4/11.4.8/S11.4.8_A1.js
new file mode 100644
index 000000000..7a646edfd
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.4/11.4.8/S11.4.8_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.
+
+/**
+ * White Space and Line Terminator between "~" and UnaryExpression are allowed
+ *
+ * @path ch11/11.4/11.4.8/S11.4.8_A1.js
+ * @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/js/src/tests/test262/ch11/11.4/11.4.8/S11.4.8_A2.1_T1.js b/js/src/tests/test262/ch11/11.4/11.4.8/S11.4.8_A2.1_T1.js
new file mode 100644
index 000000000..6dc44f7ae
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.4/11.4.8/S11.4.8_A2.1_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.
+
+/**
+ * Operator ~x uses GetValue
+ *
+ * @path ch11/11.4/11.4.8/S11.4.8_A2.1_T1.js
+ * @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/js/src/tests/test262/ch11/11.4/11.4.8/S11.4.8_A2.1_T2.js b/js/src/tests/test262/ch11/11.4/11.4.8/S11.4.8_A2.1_T2.js
new file mode 100644
index 000000000..3f53f4673
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.4/11.4.8/S11.4.8_A2.1_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.
+
+/**
+ * Operator ~x uses GetValue
+ *
+ * @path ch11/11.4/11.4.8/S11.4.8_A2.1_T2.js
+ * @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/js/src/tests/test262/ch11/11.4/11.4.8/S11.4.8_A2.2_T1.js b/js/src/tests/test262/ch11/11.4/11.4.8/S11.4.8_A2.2_T1.js
new file mode 100644
index 000000000..44b5e6127
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.4/11.4.8/S11.4.8_A2.2_T1.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.
+
+/**
+ * Operator ~x uses [[Default Value]]
+ *
+ * @path ch11/11.4/11.4.8/S11.4.8_A2.2_T1.js
+ * @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/js/src/tests/test262/ch11/11.4/11.4.8/S11.4.8_A3_T1.js b/js/src/tests/test262/ch11/11.4/11.4.8/S11.4.8_A3_T1.js
new file mode 100644
index 000000000..0958a0570
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.4/11.4.8/S11.4.8_A3_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.
+
+/**
+ * Operator ~x returns ~ToInt32(x)
+ *
+ * @path ch11/11.4/11.4.8/S11.4.8_A3_T1.js
+ * @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/js/src/tests/test262/ch11/11.4/11.4.8/S11.4.8_A3_T2.js b/js/src/tests/test262/ch11/11.4/11.4.8/S11.4.8_A3_T2.js
new file mode 100644
index 000000000..a7b6d4bbc
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.4/11.4.8/S11.4.8_A3_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.
+
+/**
+ * Operator ~x returns ~ToInt32(x)
+ *
+ * @path ch11/11.4/11.4.8/S11.4.8_A3_T2.js
+ * @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/js/src/tests/test262/ch11/11.4/11.4.8/S11.4.8_A3_T3.js b/js/src/tests/test262/ch11/11.4/11.4.8/S11.4.8_A3_T3.js
new file mode 100644
index 000000000..ec54ebd48
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.4/11.4.8/S11.4.8_A3_T3.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.
+
+/**
+ * Operator ~x returns ~ToInt32(x)
+ *
+ * @path ch11/11.4/11.4.8/S11.4.8_A3_T3.js
+ * @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/js/src/tests/test262/ch11/11.4/11.4.8/S11.4.8_A3_T4.js b/js/src/tests/test262/ch11/11.4/11.4.8/S11.4.8_A3_T4.js
new file mode 100644
index 000000000..d8be652d4
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.4/11.4.8/S11.4.8_A3_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.
+
+/**
+ * Operator ~x returns ~ToInt32(x)
+ *
+ * @path ch11/11.4/11.4.8/S11.4.8_A3_T4.js
+ * @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/js/src/tests/test262/ch11/11.4/11.4.8/S11.4.8_A3_T5.js b/js/src/tests/test262/ch11/11.4/11.4.8/S11.4.8_A3_T5.js
new file mode 100644
index 000000000..8fcfc740b
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.4/11.4.8/S11.4.8_A3_T5.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.
+
+/**
+ * Operator ~x returns ~ToInt32(x)
+ *
+ * @path ch11/11.4/11.4.8/S11.4.8_A3_T5.js
+ * @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/js/src/tests/test262/ch11/11.4/11.4.8/browser.js b/js/src/tests/test262/ch11/11.4/11.4.8/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.4/11.4.8/browser.js
diff --git a/js/src/tests/test262/ch11/11.4/11.4.8/shell.js b/js/src/tests/test262/ch11/11.4/11.4.8/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.4/11.4.8/shell.js
diff --git a/js/src/tests/test262/ch11/11.4/11.4.9/S11.4.9_A1.js b/js/src/tests/test262/ch11/11.4/11.4.9/S11.4.9_A1.js
new file mode 100644
index 000000000..e4c26d0a1
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.4/11.4.9/S11.4.9_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.
+
+/**
+ * White Space and Line Terminator between "!" and UnaryExpression are allowed
+ *
+ * @path ch11/11.4/11.4.9/S11.4.9_A1.js
+ * @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/js/src/tests/test262/ch11/11.4/11.4.9/S11.4.9_A2.1_T1.js b/js/src/tests/test262/ch11/11.4/11.4.9/S11.4.9_A2.1_T1.js
new file mode 100644
index 000000000..d08fdd181
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.4/11.4.9/S11.4.9_A2.1_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.
+
+/**
+ * Operator !x uses GetValue
+ *
+ * @path ch11/11.4/11.4.9/S11.4.9_A2.1_T1.js
+ * @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/js/src/tests/test262/ch11/11.4/11.4.9/S11.4.9_A2.1_T2.js b/js/src/tests/test262/ch11/11.4/11.4.9/S11.4.9_A2.1_T2.js
new file mode 100644
index 000000000..b6592471d
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.4/11.4.9/S11.4.9_A2.1_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.
+
+/**
+ * Operator !x uses GetValue
+ *
+ * @path ch11/11.4/11.4.9/S11.4.9_A2.1_T2.js
+ * @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/js/src/tests/test262/ch11/11.4/11.4.9/S11.4.9_A2.2_T1.js b/js/src/tests/test262/ch11/11.4/11.4.9/S11.4.9_A2.2_T1.js
new file mode 100644
index 000000000..3f156e9d4
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.4/11.4.9/S11.4.9_A2.2_T1.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.
+
+/**
+ * Operator !x uses [[Default Value]]
+ *
+ * @path ch11/11.4/11.4.9/S11.4.9_A2.2_T1.js
+ * @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/js/src/tests/test262/ch11/11.4/11.4.9/S11.4.9_A3_T1.js b/js/src/tests/test262/ch11/11.4/11.4.9/S11.4.9_A3_T1.js
new file mode 100644
index 000000000..05a4ebcc7
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.4/11.4.9/S11.4.9_A3_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.
+
+/**
+ * Operator !x returns !ToBoolean(x)
+ *
+ * @path ch11/11.4/11.4.9/S11.4.9_A3_T1.js
+ * @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/js/src/tests/test262/ch11/11.4/11.4.9/S11.4.9_A3_T2.js b/js/src/tests/test262/ch11/11.4/11.4.9/S11.4.9_A3_T2.js
new file mode 100644
index 000000000..a2e13b0c0
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.4/11.4.9/S11.4.9_A3_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.
+
+/**
+ * Operator !x returns !ToBoolean(x)
+ *
+ * @path ch11/11.4/11.4.9/S11.4.9_A3_T2.js
+ * @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/js/src/tests/test262/ch11/11.4/11.4.9/S11.4.9_A3_T3.js b/js/src/tests/test262/ch11/11.4/11.4.9/S11.4.9_A3_T3.js
new file mode 100644
index 000000000..a15994ddc
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.4/11.4.9/S11.4.9_A3_T3.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.
+
+/**
+ * Operator !x returns !ToBoolean(x)
+ *
+ * @path ch11/11.4/11.4.9/S11.4.9_A3_T3.js
+ * @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/js/src/tests/test262/ch11/11.4/11.4.9/S11.4.9_A3_T4.js b/js/src/tests/test262/ch11/11.4/11.4.9/S11.4.9_A3_T4.js
new file mode 100644
index 000000000..0ac35bb98
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.4/11.4.9/S11.4.9_A3_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.
+
+/**
+ * Operator !x returns !ToBoolean(x)
+ *
+ * @path ch11/11.4/11.4.9/S11.4.9_A3_T4.js
+ * @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/js/src/tests/test262/ch11/11.4/11.4.9/S11.4.9_A3_T5.js b/js/src/tests/test262/ch11/11.4/11.4.9/S11.4.9_A3_T5.js
new file mode 100644
index 000000000..88f6dcaec
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.4/11.4.9/S11.4.9_A3_T5.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.
+
+/**
+ * Operator !x returns !ToBoolean(x)
+ *
+ * @path ch11/11.4/11.4.9/S11.4.9_A3_T5.js
+ * @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/js/src/tests/test262/ch11/11.4/11.4.9/browser.js b/js/src/tests/test262/ch11/11.4/11.4.9/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.4/11.4.9/browser.js
diff --git a/js/src/tests/test262/ch11/11.4/11.4.9/shell.js b/js/src/tests/test262/ch11/11.4/11.4.9/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.4/11.4.9/shell.js
diff --git a/js/src/tests/test262/ch11/11.4/browser.js b/js/src/tests/test262/ch11/11.4/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.4/browser.js
diff --git a/js/src/tests/test262/ch11/11.4/shell.js b/js/src/tests/test262/ch11/11.4/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.4/shell.js
diff --git a/js/src/tests/test262/ch11/11.5/11.5.1/S11.5.1_A1.js b/js/src/tests/test262/ch11/11.5/11.5.1/S11.5.1_A1.js
new file mode 100644
index 000000000..1a9876c01
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.5/11.5.1/S11.5.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.
+
+/**
+ * White Space and Line Terminator between MultiplicativeExpression and "*" or between "*" and UnaryExpression are allowed
+ *
+ * @path ch11/11.5/11.5.1/S11.5.1_A1.js
+ * @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/js/src/tests/test262/ch11/11.5/11.5.1/S11.5.1_A2.1_T1.js b/js/src/tests/test262/ch11/11.5/11.5.1/S11.5.1_A2.1_T1.js
new file mode 100644
index 000000000..ed649ace5
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.5/11.5.1/S11.5.1_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.
+
+/**
+ * Operator x * y uses GetValue
+ *
+ * @path ch11/11.5/11.5.1/S11.5.1_A2.1_T1.js
+ * @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/js/src/tests/test262/ch11/11.5/11.5.1/S11.5.1_A2.1_T2.js b/js/src/tests/test262/ch11/11.5/11.5.1/S11.5.1_A2.1_T2.js
new file mode 100644
index 000000000..e1f16da9d
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.5/11.5.1/S11.5.1_A2.1_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.
+
+/**
+ * Operator x * y uses GetValue
+ *
+ * @path ch11/11.5/11.5.1/S11.5.1_A2.1_T2.js
+ * @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/js/src/tests/test262/ch11/11.5/11.5.1/S11.5.1_A2.1_T3.js b/js/src/tests/test262/ch11/11.5/11.5.1/S11.5.1_A2.1_T3.js
new file mode 100644
index 000000000..22af7df20
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.5/11.5.1/S11.5.1_A2.1_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.
+
+/**
+ * Operator x * y uses GetValue
+ *
+ * @path ch11/11.5/11.5.1/S11.5.1_A2.1_T3.js
+ * @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/js/src/tests/test262/ch11/11.5/11.5.1/S11.5.1_A2.2_T1.js b/js/src/tests/test262/ch11/11.5/11.5.1/S11.5.1_A2.2_T1.js
new file mode 100644
index 000000000..932acabb2
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.5/11.5.1/S11.5.1_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.
+
+/**
+ * Operator x * y uses [[Default Value]]
+ *
+ * @path ch11/11.5/11.5.1/S11.5.1_A2.2_T1.js
+ * @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/js/src/tests/test262/ch11/11.5/11.5.1/S11.5.1_A2.3_T1.js b/js/src/tests/test262/ch11/11.5/11.5.1/S11.5.1_A2.3_T1.js
new file mode 100644
index 000000000..ba58724a9
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.5/11.5.1/S11.5.1_A2.3_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.
+
+/**
+ * ToNumber(first expression) is called first, and then ToNumber(second expression)
+ *
+ * @path ch11/11.5/11.5.1/S11.5.1_A2.3_T1.js
+ * @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/js/src/tests/test262/ch11/11.5/11.5.1/S11.5.1_A2.4_T1.js b/js/src/tests/test262/ch11/11.5/11.5.1/S11.5.1_A2.4_T1.js
new file mode 100644
index 000000000..504923aee
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.5/11.5.1/S11.5.1_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.
+
+/**
+ * First expression is evaluated first, and then second expression
+ *
+ * @path ch11/11.5/11.5.1/S11.5.1_A2.4_T1.js
+ * @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/js/src/tests/test262/ch11/11.5/11.5.1/S11.5.1_A2.4_T2.js b/js/src/tests/test262/ch11/11.5/11.5.1/S11.5.1_A2.4_T2.js
new file mode 100644
index 000000000..262f2e7fc
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.5/11.5.1/S11.5.1_A2.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.
+
+/**
+ * First expression is evaluated first, and then second expression
+ *
+ * @path ch11/11.5/11.5.1/S11.5.1_A2.4_T2.js
+ * @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/js/src/tests/test262/ch11/11.5/11.5.1/S11.5.1_A2.4_T3.js b/js/src/tests/test262/ch11/11.5/11.5.1/S11.5.1_A2.4_T3.js
new file mode 100644
index 000000000..edcb5e006
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.5/11.5.1/S11.5.1_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.
+
+/**
+ * First expression is evaluated first, and then second expression
+ *
+ * @path ch11/11.5/11.5.1/S11.5.1_A2.4_T3.js
+ * @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/js/src/tests/test262/ch11/11.5/11.5.1/S11.5.1_A3_T1.1.js b/js/src/tests/test262/ch11/11.5/11.5.1/S11.5.1_A3_T1.1.js
new file mode 100644
index 000000000..de1e6dfdb
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.5/11.5.1/S11.5.1_A3_T1.1.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.
+
+/**
+ * Operator x * y returns ToNumber(x) * ToNumber(y)
+ *
+ * @path ch11/11.5/11.5.1/S11.5.1_A3_T1.1.js
+ * @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/js/src/tests/test262/ch11/11.5/11.5.1/S11.5.1_A3_T1.2.js b/js/src/tests/test262/ch11/11.5/11.5.1/S11.5.1_A3_T1.2.js
new file mode 100644
index 000000000..1e0a49387
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.5/11.5.1/S11.5.1_A3_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.
+
+/**
+ * Operator x * y returns ToNumber(x) * ToNumber(y)
+ *
+ * @path ch11/11.5/11.5.1/S11.5.1_A3_T1.2.js
+ * @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/js/src/tests/test262/ch11/11.5/11.5.1/S11.5.1_A3_T1.3.js b/js/src/tests/test262/ch11/11.5/11.5.1/S11.5.1_A3_T1.3.js
new file mode 100644
index 000000000..e04ab70ea
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.5/11.5.1/S11.5.1_A3_T1.3.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.
+
+/**
+ * Operator x * y returns ToNumber(x) * ToNumber(y)
+ *
+ * @path ch11/11.5/11.5.1/S11.5.1_A3_T1.3.js
+ * @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/js/src/tests/test262/ch11/11.5/11.5.1/S11.5.1_A3_T1.4.js b/js/src/tests/test262/ch11/11.5/11.5.1/S11.5.1_A3_T1.4.js
new file mode 100644
index 000000000..2dbe84f97
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.5/11.5.1/S11.5.1_A3_T1.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.
+
+/**
+ * Operator x * y returns ToNumber(x) * ToNumber(y)
+ *
+ * @path ch11/11.5/11.5.1/S11.5.1_A3_T1.4.js
+ * @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/js/src/tests/test262/ch11/11.5/11.5.1/S11.5.1_A3_T1.5.js b/js/src/tests/test262/ch11/11.5/11.5.1/S11.5.1_A3_T1.5.js
new file mode 100644
index 000000000..061e0ff27
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.5/11.5.1/S11.5.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.
+
+/**
+ * Operator x * y returns ToNumber(x) * ToNumber(y)
+ *
+ * @path ch11/11.5/11.5.1/S11.5.1_A3_T1.5.js
+ * @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/js/src/tests/test262/ch11/11.5/11.5.1/S11.5.1_A3_T2.1.js b/js/src/tests/test262/ch11/11.5/11.5.1/S11.5.1_A3_T2.1.js
new file mode 100644
index 000000000..08a913b95
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.5/11.5.1/S11.5.1_A3_T2.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.
+
+/**
+ * Operator x * y returns ToNumber(x) * ToNumber(y)
+ *
+ * @path ch11/11.5/11.5.1/S11.5.1_A3_T2.1.js
+ * @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/js/src/tests/test262/ch11/11.5/11.5.1/S11.5.1_A3_T2.2.js b/js/src/tests/test262/ch11/11.5/11.5.1/S11.5.1_A3_T2.2.js
new file mode 100644
index 000000000..063c4da9e
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.5/11.5.1/S11.5.1_A3_T2.2.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.
+
+/**
+ * Operator x * y returns ToNumber(x) * ToNumber(y)
+ *
+ * @path ch11/11.5/11.5.1/S11.5.1_A3_T2.2.js
+ * @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/js/src/tests/test262/ch11/11.5/11.5.1/S11.5.1_A3_T2.3.js b/js/src/tests/test262/ch11/11.5/11.5.1/S11.5.1_A3_T2.3.js
new file mode 100644
index 000000000..cfab7ba6b
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.5/11.5.1/S11.5.1_A3_T2.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.
+
+/**
+ * Operator x * y returns ToNumber(x) * ToNumber(y)
+ *
+ * @path ch11/11.5/11.5.1/S11.5.1_A3_T2.3.js
+ * @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/js/src/tests/test262/ch11/11.5/11.5.1/S11.5.1_A3_T2.4.js b/js/src/tests/test262/ch11/11.5/11.5.1/S11.5.1_A3_T2.4.js
new file mode 100644
index 000000000..0216310cf
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.5/11.5.1/S11.5.1_A3_T2.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.
+
+/**
+ * Operator x * y returns ToNumber(x) * ToNumber(y)
+ *
+ * @path ch11/11.5/11.5.1/S11.5.1_A3_T2.4.js
+ * @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/js/src/tests/test262/ch11/11.5/11.5.1/S11.5.1_A3_T2.5.js b/js/src/tests/test262/ch11/11.5/11.5.1/S11.5.1_A3_T2.5.js
new file mode 100644
index 000000000..5d92d9827
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.5/11.5.1/S11.5.1_A3_T2.5.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.
+
+/**
+ * Operator x * y returns ToNumber(x) * ToNumber(y)
+ *
+ * @path ch11/11.5/11.5.1/S11.5.1_A3_T2.5.js
+ * @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/js/src/tests/test262/ch11/11.5/11.5.1/S11.5.1_A3_T2.6.js b/js/src/tests/test262/ch11/11.5/11.5.1/S11.5.1_A3_T2.6.js
new file mode 100644
index 000000000..429683ff2
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.5/11.5.1/S11.5.1_A3_T2.6.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.
+
+/**
+ * Operator x * y returns ToNumber(x) * ToNumber(y)
+ *
+ * @path ch11/11.5/11.5.1/S11.5.1_A3_T2.6.js
+ * @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/js/src/tests/test262/ch11/11.5/11.5.1/S11.5.1_A3_T2.7.js b/js/src/tests/test262/ch11/11.5/11.5.1/S11.5.1_A3_T2.7.js
new file mode 100644
index 000000000..786f23057
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.5/11.5.1/S11.5.1_A3_T2.7.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.
+
+/**
+ * Operator x * y returns ToNumber(x) * ToNumber(y)
+ *
+ * @path ch11/11.5/11.5.1/S11.5.1_A3_T2.7.js
+ * @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/js/src/tests/test262/ch11/11.5/11.5.1/S11.5.1_A3_T2.8.js b/js/src/tests/test262/ch11/11.5/11.5.1/S11.5.1_A3_T2.8.js
new file mode 100644
index 000000000..ef7ae0503
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.5/11.5.1/S11.5.1_A3_T2.8.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.
+
+/**
+ * Operator x * y returns ToNumber(x) * ToNumber(y)
+ *
+ * @path ch11/11.5/11.5.1/S11.5.1_A3_T2.8.js
+ * @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/js/src/tests/test262/ch11/11.5/11.5.1/S11.5.1_A3_T2.9.js b/js/src/tests/test262/ch11/11.5/11.5.1/S11.5.1_A3_T2.9.js
new file mode 100644
index 000000000..377cb00f0
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.5/11.5.1/S11.5.1_A3_T2.9.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.
+
+/**
+ * Operator x * y returns ToNumber(x) * ToNumber(y)
+ *
+ * @path ch11/11.5/11.5.1/S11.5.1_A3_T2.9.js
+ * @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/js/src/tests/test262/ch11/11.5/11.5.1/S11.5.1_A4_T1.1.js b/js/src/tests/test262/ch11/11.5/11.5.1/S11.5.1_A4_T1.1.js
new file mode 100644
index 000000000..d3b5006ce
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.5/11.5.1/S11.5.1_A4_T1.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.
+
+/**
+ * The result of a floating-point multiplication is governed by the rules of IEEE 754 double-precision arithmetics
+ *
+ * @path ch11/11.5/11.5.1/S11.5.1_A4_T1.1.js
+ * @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/js/src/tests/test262/ch11/11.5/11.5.1/S11.5.1_A4_T1.2.js b/js/src/tests/test262/ch11/11.5/11.5.1/S11.5.1_A4_T1.2.js
new file mode 100644
index 000000000..2f1d7c1c0
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.5/11.5.1/S11.5.1_A4_T1.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.
+
+/**
+ * The result of a floating-point multiplication is governed by the rules of IEEE 754 double-precision arithmetics
+ *
+ * @path ch11/11.5/11.5.1/S11.5.1_A4_T1.2.js
+ * @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/js/src/tests/test262/ch11/11.5/11.5.1/S11.5.1_A4_T2.js b/js/src/tests/test262/ch11/11.5/11.5.1/S11.5.1_A4_T2.js
new file mode 100644
index 000000000..f6bc87a6f
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.5/11.5.1/S11.5.1_A4_T2.js
@@ -0,0 +1,66 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * The result of a floating-point multiplication is governed by the rules of IEEE 754 double-precision arithmetics
+ *
+ * @path ch11/11.5/11.5.1/S11.5.1_A4_T2.js
+ * @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/js/src/tests/test262/ch11/11.5/11.5.1/S11.5.1_A4_T3.js b/js/src/tests/test262/ch11/11.5/11.5.1/S11.5.1_A4_T3.js
new file mode 100644
index 000000000..6bc264f90
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.5/11.5.1/S11.5.1_A4_T3.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.
+
+/**
+ * The result of a floating-point multiplication is governed by the rules of IEEE 754 double-precision arithmetics
+ *
+ * @path ch11/11.5/11.5.1/S11.5.1_A4_T3.js
+ * @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/js/src/tests/test262/ch11/11.5/11.5.1/S11.5.1_A4_T4.js b/js/src/tests/test262/ch11/11.5/11.5.1/S11.5.1_A4_T4.js
new file mode 100644
index 000000000..5603e976e
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.5/11.5.1/S11.5.1_A4_T4.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.
+
+/**
+ * The result of a floating-point multiplication is governed by the rules of IEEE 754 double-precision arithmetics
+ *
+ * @path ch11/11.5/11.5.1/S11.5.1_A4_T4.js
+ * @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/js/src/tests/test262/ch11/11.5/11.5.1/S11.5.1_A4_T5.js b/js/src/tests/test262/ch11/11.5/11.5.1/S11.5.1_A4_T5.js
new file mode 100644
index 000000000..e52526d3a
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.5/11.5.1/S11.5.1_A4_T5.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.
+
+/**
+ * The result of a floating-point multiplication is governed by the rules of IEEE 754 double-precision arithmetics
+ *
+ * @path ch11/11.5/11.5.1/S11.5.1_A4_T5.js
+ * @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/js/src/tests/test262/ch11/11.5/11.5.1/S11.5.1_A4_T6.js b/js/src/tests/test262/ch11/11.5/11.5.1/S11.5.1_A4_T6.js
new file mode 100644
index 000000000..7432a3146
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.5/11.5.1/S11.5.1_A4_T6.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.
+
+/**
+ * The result of a floating-point multiplication is governed by the rules of IEEE 754 double-precision arithmetics
+ *
+ * @path ch11/11.5/11.5.1/S11.5.1_A4_T6.js
+ * @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/js/src/tests/test262/ch11/11.5/11.5.1/S11.5.1_A4_T7.js b/js/src/tests/test262/ch11/11.5/11.5.1/S11.5.1_A4_T7.js
new file mode 100644
index 000000000..5a8d203e5
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.5/11.5.1/S11.5.1_A4_T7.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.
+
+/**
+ * The result of a floating-point multiplication is governed by the rules of IEEE 754 double-precision arithmetics
+ *
+ * @path ch11/11.5/11.5.1/S11.5.1_A4_T7.js
+ * @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/js/src/tests/test262/ch11/11.5/11.5.1/S11.5.1_A4_T8.js b/js/src/tests/test262/ch11/11.5/11.5.1/S11.5.1_A4_T8.js
new file mode 100644
index 000000000..0d777e06f
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.5/11.5.1/S11.5.1_A4_T8.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.
+
+/**
+ * The result of a floating-point multiplication is governed by the rules of IEEE 754 double-precision arithmetics
+ *
+ * @path ch11/11.5/11.5.1/S11.5.1_A4_T8.js
+ * @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/js/src/tests/test262/ch11/11.5/11.5.1/browser.js b/js/src/tests/test262/ch11/11.5/11.5.1/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.5/11.5.1/browser.js
diff --git a/js/src/tests/test262/ch11/11.5/11.5.1/shell.js b/js/src/tests/test262/ch11/11.5/11.5.1/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.5/11.5.1/shell.js
diff --git a/js/src/tests/test262/ch11/11.5/11.5.2/S11.5.2_A1.js b/js/src/tests/test262/ch11/11.5/11.5.2/S11.5.2_A1.js
new file mode 100644
index 000000000..0b92880bd
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.5/11.5.2/S11.5.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.
+
+/**
+ * White Space and Line Terminator between MultiplicativeExpression and "/" or between "/" and UnaryExpression are allowed
+ *
+ * @path ch11/11.5/11.5.2/S11.5.2_A1.js
+ * @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/js/src/tests/test262/ch11/11.5/11.5.2/S11.5.2_A2.1_T1.js b/js/src/tests/test262/ch11/11.5/11.5.2/S11.5.2_A2.1_T1.js
new file mode 100644
index 000000000..c06d2991c
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.5/11.5.2/S11.5.2_A2.1_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.
+
+/**
+ * Operator x / y uses GetValue
+ *
+ * @path ch11/11.5/11.5.2/S11.5.2_A2.1_T1.js
+ * @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/js/src/tests/test262/ch11/11.5/11.5.2/S11.5.2_A2.1_T2.js b/js/src/tests/test262/ch11/11.5/11.5.2/S11.5.2_A2.1_T2.js
new file mode 100644
index 000000000..68396ed54
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.5/11.5.2/S11.5.2_A2.1_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.
+
+/**
+ * Operator x / y uses GetValue
+ *
+ * @path ch11/11.5/11.5.2/S11.5.2_A2.1_T2.js
+ * @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/js/src/tests/test262/ch11/11.5/11.5.2/S11.5.2_A2.1_T3.js b/js/src/tests/test262/ch11/11.5/11.5.2/S11.5.2_A2.1_T3.js
new file mode 100644
index 000000000..d0da4868d
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.5/11.5.2/S11.5.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.
+
+/**
+ * Operator x / y uses GetValue
+ *
+ * @path ch11/11.5/11.5.2/S11.5.2_A2.1_T3.js
+ * @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/js/src/tests/test262/ch11/11.5/11.5.2/S11.5.2_A2.2_T1.js b/js/src/tests/test262/ch11/11.5/11.5.2/S11.5.2_A2.2_T1.js
new file mode 100644
index 000000000..e0d8bc345
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.5/11.5.2/S11.5.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.
+
+/**
+ * Operator x / y uses [[Default Value]]
+ *
+ * @path ch11/11.5/11.5.2/S11.5.2_A2.2_T1.js
+ * @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/js/src/tests/test262/ch11/11.5/11.5.2/S11.5.2_A2.3_T1.js b/js/src/tests/test262/ch11/11.5/11.5.2/S11.5.2_A2.3_T1.js
new file mode 100644
index 000000000..8c0b9888e
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.5/11.5.2/S11.5.2_A2.3_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.
+
+/**
+ * ToNumber(first expression) is called first, and then ToNumber(second expression)
+ *
+ * @path ch11/11.5/11.5.2/S11.5.2_A2.3_T1.js
+ * @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/js/src/tests/test262/ch11/11.5/11.5.2/S11.5.2_A2.4_T1.js b/js/src/tests/test262/ch11/11.5/11.5.2/S11.5.2_A2.4_T1.js
new file mode 100644
index 000000000..2d2d55efe
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.5/11.5.2/S11.5.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.
+
+/**
+ * First expression is evaluated first, and then second expression
+ *
+ * @path ch11/11.5/11.5.2/S11.5.2_A2.4_T1.js
+ * @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/js/src/tests/test262/ch11/11.5/11.5.2/S11.5.2_A2.4_T2.js b/js/src/tests/test262/ch11/11.5/11.5.2/S11.5.2_A2.4_T2.js
new file mode 100644
index 000000000..44f0f2327
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.5/11.5.2/S11.5.2_A2.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.
+
+/**
+ * First expression is evaluated first, and then second expression
+ *
+ * @path ch11/11.5/11.5.2/S11.5.2_A2.4_T2.js
+ * @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/js/src/tests/test262/ch11/11.5/11.5.2/S11.5.2_A2.4_T3.js b/js/src/tests/test262/ch11/11.5/11.5.2/S11.5.2_A2.4_T3.js
new file mode 100644
index 000000000..13ffe9ff3
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.5/11.5.2/S11.5.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.
+
+/**
+ * First expression is evaluated first, and then second expression
+ *
+ * @path ch11/11.5/11.5.2/S11.5.2_A2.4_T3.js
+ * @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/js/src/tests/test262/ch11/11.5/11.5.2/S11.5.2_A3_T1.1.js b/js/src/tests/test262/ch11/11.5/11.5.2/S11.5.2_A3_T1.1.js
new file mode 100644
index 000000000..5e53abaf2
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.5/11.5.2/S11.5.2_A3_T1.1.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.
+
+/**
+ * Operator x / y returns ToNumber(x) / ToNumber(y)
+ *
+ * @path ch11/11.5/11.5.2/S11.5.2_A3_T1.1.js
+ * @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/js/src/tests/test262/ch11/11.5/11.5.2/S11.5.2_A3_T1.2.js b/js/src/tests/test262/ch11/11.5/11.5.2/S11.5.2_A3_T1.2.js
new file mode 100644
index 000000000..97bb6036d
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.5/11.5.2/S11.5.2_A3_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.
+
+/**
+ * Operator x / y returns ToNumber(x) / ToNumber(y)
+ *
+ * @path ch11/11.5/11.5.2/S11.5.2_A3_T1.2.js
+ * @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/js/src/tests/test262/ch11/11.5/11.5.2/S11.5.2_A3_T1.3.js b/js/src/tests/test262/ch11/11.5/11.5.2/S11.5.2_A3_T1.3.js
new file mode 100644
index 000000000..56d1b142c
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.5/11.5.2/S11.5.2_A3_T1.3.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.
+
+/**
+ * Operator x / y returns ToNumber(x) / ToNumber(y)
+ *
+ * @path ch11/11.5/11.5.2/S11.5.2_A3_T1.3.js
+ * @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/js/src/tests/test262/ch11/11.5/11.5.2/S11.5.2_A3_T1.4.js b/js/src/tests/test262/ch11/11.5/11.5.2/S11.5.2_A3_T1.4.js
new file mode 100644
index 000000000..e9269fb45
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.5/11.5.2/S11.5.2_A3_T1.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.
+
+/**
+ * Operator x / y returns ToNumber(x) / ToNumber(y)
+ *
+ * @path ch11/11.5/11.5.2/S11.5.2_A3_T1.4.js
+ * @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/js/src/tests/test262/ch11/11.5/11.5.2/S11.5.2_A3_T1.5.js b/js/src/tests/test262/ch11/11.5/11.5.2/S11.5.2_A3_T1.5.js
new file mode 100644
index 000000000..ec57702be
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.5/11.5.2/S11.5.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.
+
+/**
+ * Operator x / y returns ToNumber(x) / ToNumber(y)
+ *
+ * @path ch11/11.5/11.5.2/S11.5.2_A3_T1.5.js
+ * @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/js/src/tests/test262/ch11/11.5/11.5.2/S11.5.2_A3_T2.1.js b/js/src/tests/test262/ch11/11.5/11.5.2/S11.5.2_A3_T2.1.js
new file mode 100644
index 000000000..7cd3f7cf6
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.5/11.5.2/S11.5.2_A3_T2.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.
+
+/**
+ * Operator x / y returns ToNumber(x) / ToNumber(y)
+ *
+ * @path ch11/11.5/11.5.2/S11.5.2_A3_T2.1.js
+ * @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/js/src/tests/test262/ch11/11.5/11.5.2/S11.5.2_A3_T2.2.js b/js/src/tests/test262/ch11/11.5/11.5.2/S11.5.2_A3_T2.2.js
new file mode 100644
index 000000000..8678544ad
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.5/11.5.2/S11.5.2_A3_T2.2.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.
+
+/**
+ * Operator x / y returns ToNumber(x) / ToNumber(y)
+ *
+ * @path ch11/11.5/11.5.2/S11.5.2_A3_T2.2.js
+ * @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/js/src/tests/test262/ch11/11.5/11.5.2/S11.5.2_A3_T2.3.js b/js/src/tests/test262/ch11/11.5/11.5.2/S11.5.2_A3_T2.3.js
new file mode 100644
index 000000000..bd37aaefa
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.5/11.5.2/S11.5.2_A3_T2.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.
+
+/**
+ * Operator x / y returns ToNumber(x) / ToNumber(y)
+ *
+ * @path ch11/11.5/11.5.2/S11.5.2_A3_T2.3.js
+ * @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/js/src/tests/test262/ch11/11.5/11.5.2/S11.5.2_A3_T2.4.js b/js/src/tests/test262/ch11/11.5/11.5.2/S11.5.2_A3_T2.4.js
new file mode 100644
index 000000000..a67647f6b
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.5/11.5.2/S11.5.2_A3_T2.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.
+
+/**
+ * Operator x / y returns ToNumber(x) / ToNumber(y)
+ *
+ * @path ch11/11.5/11.5.2/S11.5.2_A3_T2.4.js
+ * @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/js/src/tests/test262/ch11/11.5/11.5.2/S11.5.2_A3_T2.5.js b/js/src/tests/test262/ch11/11.5/11.5.2/S11.5.2_A3_T2.5.js
new file mode 100644
index 000000000..ae723bdae
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.5/11.5.2/S11.5.2_A3_T2.5.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.
+
+/**
+ * Operator x / y returns ToNumber(x) / ToNumber(y)
+ *
+ * @path ch11/11.5/11.5.2/S11.5.2_A3_T2.5.js
+ * @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/js/src/tests/test262/ch11/11.5/11.5.2/S11.5.2_A3_T2.6.js b/js/src/tests/test262/ch11/11.5/11.5.2/S11.5.2_A3_T2.6.js
new file mode 100644
index 000000000..728613ebd
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.5/11.5.2/S11.5.2_A3_T2.6.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.
+
+/**
+ * Operator x / y returns ToNumber(x) / ToNumber(y)
+ *
+ * @path ch11/11.5/11.5.2/S11.5.2_A3_T2.6.js
+ * @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/js/src/tests/test262/ch11/11.5/11.5.2/S11.5.2_A3_T2.7.js b/js/src/tests/test262/ch11/11.5/11.5.2/S11.5.2_A3_T2.7.js
new file mode 100644
index 000000000..9a307dc32
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.5/11.5.2/S11.5.2_A3_T2.7.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.
+
+/**
+ * Operator x / y returns ToNumber(x) / ToNumber(y)
+ *
+ * @path ch11/11.5/11.5.2/S11.5.2_A3_T2.7.js
+ * @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/js/src/tests/test262/ch11/11.5/11.5.2/S11.5.2_A3_T2.8.js b/js/src/tests/test262/ch11/11.5/11.5.2/S11.5.2_A3_T2.8.js
new file mode 100644
index 000000000..a3fb0e50e
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.5/11.5.2/S11.5.2_A3_T2.8.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.
+
+/**
+ * Operator x / y returns ToNumber(x) / ToNumber(y)
+ *
+ * @path ch11/11.5/11.5.2/S11.5.2_A3_T2.8.js
+ * @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/js/src/tests/test262/ch11/11.5/11.5.2/S11.5.2_A3_T2.9.js b/js/src/tests/test262/ch11/11.5/11.5.2/S11.5.2_A3_T2.9.js
new file mode 100644
index 000000000..5459c4d04
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.5/11.5.2/S11.5.2_A3_T2.9.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.
+
+/**
+ * Operator x / y returns ToNumber(x) / ToNumber(y)
+ *
+ * @path ch11/11.5/11.5.2/S11.5.2_A3_T2.9.js
+ * @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/js/src/tests/test262/ch11/11.5/11.5.2/S11.5.2_A4_T1.1.js b/js/src/tests/test262/ch11/11.5/11.5.2/S11.5.2_A4_T1.1.js
new file mode 100644
index 000000000..f98c2b58e
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.5/11.5.2/S11.5.2_A4_T1.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.
+
+/**
+ * The result of division is determined by the specification of IEEE 754 arithmetics
+ *
+ * @path ch11/11.5/11.5.2/S11.5.2_A4_T1.1.js
+ * @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/js/src/tests/test262/ch11/11.5/11.5.2/S11.5.2_A4_T1.2.js b/js/src/tests/test262/ch11/11.5/11.5.2/S11.5.2_A4_T1.2.js
new file mode 100644
index 000000000..57415ff2a
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.5/11.5.2/S11.5.2_A4_T1.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.
+
+/**
+ * The result of division is determined by the specification of IEEE 754 arithmetics
+ *
+ * @path ch11/11.5/11.5.2/S11.5.2_A4_T1.2.js
+ * @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/js/src/tests/test262/ch11/11.5/11.5.2/S11.5.2_A4_T10.js b/js/src/tests/test262/ch11/11.5/11.5.2/S11.5.2_A4_T10.js
new file mode 100644
index 000000000..a8a0f25ab
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.5/11.5.2/S11.5.2_A4_T10.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.
+
+/**
+ * The result of division is determined by the specification of IEEE 754 arithmetics
+ *
+ * @path ch11/11.5/11.5.2/S11.5.2_A4_T10.js
+ * @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/js/src/tests/test262/ch11/11.5/11.5.2/S11.5.2_A4_T2.js b/js/src/tests/test262/ch11/11.5/11.5.2/S11.5.2_A4_T2.js
new file mode 100644
index 000000000..4e0143879
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.5/11.5.2/S11.5.2_A4_T2.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.
+
+/**
+ * The result of division is determined by the specification of IEEE 754 arithmetics
+ *
+ * @path ch11/11.5/11.5.2/S11.5.2_A4_T2.js
+ * @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/js/src/tests/test262/ch11/11.5/11.5.2/S11.5.2_A4_T3.js b/js/src/tests/test262/ch11/11.5/11.5.2/S11.5.2_A4_T3.js
new file mode 100644
index 000000000..dd67b91f8
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.5/11.5.2/S11.5.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.
+
+/**
+ * The result of division is determined by the specification of IEEE 754 arithmetics
+ *
+ * @path ch11/11.5/11.5.2/S11.5.2_A4_T3.js
+ * @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/js/src/tests/test262/ch11/11.5/11.5.2/S11.5.2_A4_T4.js b/js/src/tests/test262/ch11/11.5/11.5.2/S11.5.2_A4_T4.js
new file mode 100644
index 000000000..14804ad6f
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.5/11.5.2/S11.5.2_A4_T4.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.
+
+/**
+ * The result of division is determined by the specification of IEEE 754 arithmetics
+ *
+ * @path ch11/11.5/11.5.2/S11.5.2_A4_T4.js
+ * @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/js/src/tests/test262/ch11/11.5/11.5.2/S11.5.2_A4_T5.js b/js/src/tests/test262/ch11/11.5/11.5.2/S11.5.2_A4_T5.js
new file mode 100644
index 000000000..3f84058ca
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.5/11.5.2/S11.5.2_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.
+
+/**
+ * The result of division is determined by the specification of IEEE 754 arithmetics
+ *
+ * @path ch11/11.5/11.5.2/S11.5.2_A4_T5.js
+ * @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/js/src/tests/test262/ch11/11.5/11.5.2/S11.5.2_A4_T6.js b/js/src/tests/test262/ch11/11.5/11.5.2/S11.5.2_A4_T6.js
new file mode 100644
index 000000000..7c013ee31
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.5/11.5.2/S11.5.2_A4_T6.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.
+
+/**
+ * The result of division is determined by the specification of IEEE 754 arithmetics
+ *
+ * @path ch11/11.5/11.5.2/S11.5.2_A4_T6.js
+ * @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/js/src/tests/test262/ch11/11.5/11.5.2/S11.5.2_A4_T7.js b/js/src/tests/test262/ch11/11.5/11.5.2/S11.5.2_A4_T7.js
new file mode 100644
index 000000000..df2b59970
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.5/11.5.2/S11.5.2_A4_T7.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.
+
+/**
+ * The result of division is determined by the specification of IEEE 754 arithmetics
+ *
+ * @path ch11/11.5/11.5.2/S11.5.2_A4_T7.js
+ * @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/js/src/tests/test262/ch11/11.5/11.5.2/S11.5.2_A4_T8.js b/js/src/tests/test262/ch11/11.5/11.5.2/S11.5.2_A4_T8.js
new file mode 100644
index 000000000..1984de1f2
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.5/11.5.2/S11.5.2_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.
+
+/**
+ * The result of division is determined by the specification of IEEE 754 arithmetics
+ *
+ * @path ch11/11.5/11.5.2/S11.5.2_A4_T8.js
+ * @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/js/src/tests/test262/ch11/11.5/11.5.2/S11.5.2_A4_T9.js b/js/src/tests/test262/ch11/11.5/11.5.2/S11.5.2_A4_T9.js
new file mode 100644
index 000000000..9539057d7
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.5/11.5.2/S11.5.2_A4_T9.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.
+
+/**
+ * The result of division is determined by the specification of IEEE 754 arithmetics
+ *
+ * @path ch11/11.5/11.5.2/S11.5.2_A4_T9.js
+ * @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/js/src/tests/test262/ch11/11.5/11.5.2/browser.js b/js/src/tests/test262/ch11/11.5/11.5.2/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.5/11.5.2/browser.js
diff --git a/js/src/tests/test262/ch11/11.5/11.5.2/shell.js b/js/src/tests/test262/ch11/11.5/11.5.2/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.5/11.5.2/shell.js
diff --git a/js/src/tests/test262/ch11/11.5/11.5.3/S11.5.3_A1.js b/js/src/tests/test262/ch11/11.5/11.5.3/S11.5.3_A1.js
new file mode 100644
index 000000000..c372cc545
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.5/11.5.3/S11.5.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.
+
+/**
+ * White Space and Line Terminator between MultiplicativeExpression and "%" or between "%" and UnaryExpression are allowed
+ *
+ * @path ch11/11.5/11.5.3/S11.5.3_A1.js
+ * @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/js/src/tests/test262/ch11/11.5/11.5.3/S11.5.3_A2.1_T1.js b/js/src/tests/test262/ch11/11.5/11.5.3/S11.5.3_A2.1_T1.js
new file mode 100644
index 000000000..b2a973d37
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.5/11.5.3/S11.5.3_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.
+
+/**
+ * Operator x % y uses GetValue
+ *
+ * @path ch11/11.5/11.5.3/S11.5.3_A2.1_T1.js
+ * @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/js/src/tests/test262/ch11/11.5/11.5.3/S11.5.3_A2.1_T2.js b/js/src/tests/test262/ch11/11.5/11.5.3/S11.5.3_A2.1_T2.js
new file mode 100644
index 000000000..5da5f3cff
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.5/11.5.3/S11.5.3_A2.1_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.
+
+/**
+ * Operator x % y uses GetValue
+ *
+ * @path ch11/11.5/11.5.3/S11.5.3_A2.1_T2.js
+ * @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/js/src/tests/test262/ch11/11.5/11.5.3/S11.5.3_A2.1_T3.js b/js/src/tests/test262/ch11/11.5/11.5.3/S11.5.3_A2.1_T3.js
new file mode 100644
index 000000000..20b64080e
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.5/11.5.3/S11.5.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.
+
+/**
+ * Operator x % y uses GetValue
+ *
+ * @path ch11/11.5/11.5.3/S11.5.3_A2.1_T3.js
+ * @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/js/src/tests/test262/ch11/11.5/11.5.3/S11.5.3_A2.2_T1.js b/js/src/tests/test262/ch11/11.5/11.5.3/S11.5.3_A2.2_T1.js
new file mode 100644
index 000000000..ab488af50
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.5/11.5.3/S11.5.3_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.
+
+/**
+ * Operator x % y uses [[Default Value]]
+ *
+ * @path ch11/11.5/11.5.3/S11.5.3_A2.2_T1.js
+ * @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/js/src/tests/test262/ch11/11.5/11.5.3/S11.5.3_A2.3_T1.js b/js/src/tests/test262/ch11/11.5/11.5.3/S11.5.3_A2.3_T1.js
new file mode 100644
index 000000000..836a13ff6
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.5/11.5.3/S11.5.3_A2.3_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.
+
+/**
+ * ToNumber(first expression) is called first, and then ToNumber(second expression)
+ *
+ * @path ch11/11.5/11.5.3/S11.5.3_A2.3_T1.js
+ * @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/js/src/tests/test262/ch11/11.5/11.5.3/S11.5.3_A2.4_T1.js b/js/src/tests/test262/ch11/11.5/11.5.3/S11.5.3_A2.4_T1.js
new file mode 100644
index 000000000..7b87a3bf0
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.5/11.5.3/S11.5.3_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.
+
+/**
+ * First expression is evaluated first, and then second expression
+ *
+ * @path ch11/11.5/11.5.3/S11.5.3_A2.4_T1.js
+ * @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/js/src/tests/test262/ch11/11.5/11.5.3/S11.5.3_A2.4_T2.js b/js/src/tests/test262/ch11/11.5/11.5.3/S11.5.3_A2.4_T2.js
new file mode 100644
index 000000000..f3c306ca1
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.5/11.5.3/S11.5.3_A2.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.
+
+/**
+ * First expression is evaluated first, and then second expression
+ *
+ * @path ch11/11.5/11.5.3/S11.5.3_A2.4_T2.js
+ * @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/js/src/tests/test262/ch11/11.5/11.5.3/S11.5.3_A2.4_T3.js b/js/src/tests/test262/ch11/11.5/11.5.3/S11.5.3_A2.4_T3.js
new file mode 100644
index 000000000..a597a95d2
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.5/11.5.3/S11.5.3_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.
+
+/**
+ * First expression is evaluated first, and then second expression
+ *
+ * @path ch11/11.5/11.5.3/S11.5.3_A2.4_T3.js
+ * @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/js/src/tests/test262/ch11/11.5/11.5.3/S11.5.3_A3_T1.1.js b/js/src/tests/test262/ch11/11.5/11.5.3/S11.5.3_A3_T1.1.js
new file mode 100644
index 000000000..816d0efe9
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.5/11.5.3/S11.5.3_A3_T1.1.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.
+
+/**
+ * Operator x % y returns ToNumber(x) % ToNumber(y)
+ *
+ * @path ch11/11.5/11.5.3/S11.5.3_A3_T1.1.js
+ * @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/js/src/tests/test262/ch11/11.5/11.5.3/S11.5.3_A3_T1.2.js b/js/src/tests/test262/ch11/11.5/11.5.3/S11.5.3_A3_T1.2.js
new file mode 100644
index 000000000..db3ba1d64
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.5/11.5.3/S11.5.3_A3_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.
+
+/**
+ * Operator x % y returns ToNumber(x) % ToNumber(y)
+ *
+ * @path ch11/11.5/11.5.3/S11.5.3_A3_T1.2.js
+ * @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/js/src/tests/test262/ch11/11.5/11.5.3/S11.5.3_A3_T1.3.js b/js/src/tests/test262/ch11/11.5/11.5.3/S11.5.3_A3_T1.3.js
new file mode 100644
index 000000000..3520ef236
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.5/11.5.3/S11.5.3_A3_T1.3.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.
+
+/**
+ * Operator x % y returns ToNumber(x) % ToNumber(y)
+ *
+ * @path ch11/11.5/11.5.3/S11.5.3_A3_T1.3.js
+ * @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/js/src/tests/test262/ch11/11.5/11.5.3/S11.5.3_A3_T1.4.js b/js/src/tests/test262/ch11/11.5/11.5.3/S11.5.3_A3_T1.4.js
new file mode 100644
index 000000000..0af53ef4e
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.5/11.5.3/S11.5.3_A3_T1.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.
+
+/**
+ * Operator x % y returns ToNumber(x) % ToNumber(y)
+ *
+ * @path ch11/11.5/11.5.3/S11.5.3_A3_T1.4.js
+ * @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/js/src/tests/test262/ch11/11.5/11.5.3/S11.5.3_A3_T1.5.js b/js/src/tests/test262/ch11/11.5/11.5.3/S11.5.3_A3_T1.5.js
new file mode 100644
index 000000000..85cbbecf2
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.5/11.5.3/S11.5.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.
+
+/**
+ * Operator x % y returns ToNumber(x) % ToNumber(y)
+ *
+ * @path ch11/11.5/11.5.3/S11.5.3_A3_T1.5.js
+ * @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/js/src/tests/test262/ch11/11.5/11.5.3/S11.5.3_A3_T2.1.js b/js/src/tests/test262/ch11/11.5/11.5.3/S11.5.3_A3_T2.1.js
new file mode 100644
index 000000000..4cde92634
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.5/11.5.3/S11.5.3_A3_T2.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.
+
+/**
+ * Operator x % y returns ToNumber(x) % ToNumber(y)
+ *
+ * @path ch11/11.5/11.5.3/S11.5.3_A3_T2.1.js
+ * @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/js/src/tests/test262/ch11/11.5/11.5.3/S11.5.3_A3_T2.2.js b/js/src/tests/test262/ch11/11.5/11.5.3/S11.5.3_A3_T2.2.js
new file mode 100644
index 000000000..6196513ce
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.5/11.5.3/S11.5.3_A3_T2.2.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.
+
+/**
+ * Operator x % y returns ToNumber(x) % ToNumber(y)
+ *
+ * @path ch11/11.5/11.5.3/S11.5.3_A3_T2.2.js
+ * @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/js/src/tests/test262/ch11/11.5/11.5.3/S11.5.3_A3_T2.3.js b/js/src/tests/test262/ch11/11.5/11.5.3/S11.5.3_A3_T2.3.js
new file mode 100644
index 000000000..c6f32f2b4
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.5/11.5.3/S11.5.3_A3_T2.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.
+
+/**
+ * Operator x % y returns ToNumber(x) % ToNumber(y)
+ *
+ * @path ch11/11.5/11.5.3/S11.5.3_A3_T2.3.js
+ * @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/js/src/tests/test262/ch11/11.5/11.5.3/S11.5.3_A3_T2.4.js b/js/src/tests/test262/ch11/11.5/11.5.3/S11.5.3_A3_T2.4.js
new file mode 100644
index 000000000..4abfc2c0f
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.5/11.5.3/S11.5.3_A3_T2.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.
+
+/**
+ * Operator x % y returns ToNumber(x) % ToNumber(y)
+ *
+ * @path ch11/11.5/11.5.3/S11.5.3_A3_T2.4.js
+ * @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/js/src/tests/test262/ch11/11.5/11.5.3/S11.5.3_A3_T2.5.js b/js/src/tests/test262/ch11/11.5/11.5.3/S11.5.3_A3_T2.5.js
new file mode 100644
index 000000000..951f4c68c
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.5/11.5.3/S11.5.3_A3_T2.5.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.
+
+/**
+ * Operator x % y returns ToNumber(x) % ToNumber(y)
+ *
+ * @path ch11/11.5/11.5.3/S11.5.3_A3_T2.5.js
+ * @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/js/src/tests/test262/ch11/11.5/11.5.3/S11.5.3_A3_T2.6.js b/js/src/tests/test262/ch11/11.5/11.5.3/S11.5.3_A3_T2.6.js
new file mode 100644
index 000000000..973fe5263
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.5/11.5.3/S11.5.3_A3_T2.6.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.
+
+/**
+ * Operator x % y returns ToNumber(x) % ToNumber(y)
+ *
+ * @path ch11/11.5/11.5.3/S11.5.3_A3_T2.6.js
+ * @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/js/src/tests/test262/ch11/11.5/11.5.3/S11.5.3_A3_T2.7.js b/js/src/tests/test262/ch11/11.5/11.5.3/S11.5.3_A3_T2.7.js
new file mode 100644
index 000000000..baa8a90e4
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.5/11.5.3/S11.5.3_A3_T2.7.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.
+
+/**
+ * Operator x % y returns ToNumber(x) % ToNumber(y)
+ *
+ * @path ch11/11.5/11.5.3/S11.5.3_A3_T2.7.js
+ * @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/js/src/tests/test262/ch11/11.5/11.5.3/S11.5.3_A3_T2.8.js b/js/src/tests/test262/ch11/11.5/11.5.3/S11.5.3_A3_T2.8.js
new file mode 100644
index 000000000..54e229b09
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.5/11.5.3/S11.5.3_A3_T2.8.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.
+
+/**
+ * Operator x % y returns ToNumber(x) % ToNumber(y)
+ *
+ * @path ch11/11.5/11.5.3/S11.5.3_A3_T2.8.js
+ * @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/js/src/tests/test262/ch11/11.5/11.5.3/S11.5.3_A3_T2.9.js b/js/src/tests/test262/ch11/11.5/11.5.3/S11.5.3_A3_T2.9.js
new file mode 100644
index 000000000..3ff69f285
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.5/11.5.3/S11.5.3_A3_T2.9.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.
+
+/**
+ * Operator x % y returns ToNumber(x) % ToNumber(y)
+ *
+ * @path ch11/11.5/11.5.3/S11.5.3_A3_T2.9.js
+ * @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/js/src/tests/test262/ch11/11.5/11.5.3/S11.5.3_A4_T1.1.js b/js/src/tests/test262/ch11/11.5/11.5.3/S11.5.3_A4_T1.1.js
new file mode 100644
index 000000000..b2ad39088
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.5/11.5.3/S11.5.3_A4_T1.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.
+
+/**
+ * The result of a ECMAScript floating-point remainder operation is determined by the rules of IEEE arithmetics
+ *
+ * @path ch11/11.5/11.5.3/S11.5.3_A4_T1.1.js
+ * @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/js/src/tests/test262/ch11/11.5/11.5.3/S11.5.3_A4_T1.2.js b/js/src/tests/test262/ch11/11.5/11.5.3/S11.5.3_A4_T1.2.js
new file mode 100644
index 000000000..2b7da808e
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.5/11.5.3/S11.5.3_A4_T1.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.
+
+/**
+ * The result of a ECMAScript floating-point remainder operation is determined by the rules of IEEE arithmetics
+ *
+ * @path ch11/11.5/11.5.3/S11.5.3_A4_T1.2.js
+ * @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/js/src/tests/test262/ch11/11.5/11.5.3/S11.5.3_A4_T2.js b/js/src/tests/test262/ch11/11.5/11.5.3/S11.5.3_A4_T2.js
new file mode 100644
index 000000000..ce2051688
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.5/11.5.3/S11.5.3_A4_T2.js
@@ -0,0 +1,66 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * The result of a ECMAScript floating-point remainder operation is determined by the rules of IEEE arithmetics
+ *
+ * @path ch11/11.5/11.5.3/S11.5.3_A4_T2.js
+ * @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/js/src/tests/test262/ch11/11.5/11.5.3/S11.5.3_A4_T3.js b/js/src/tests/test262/ch11/11.5/11.5.3/S11.5.3_A4_T3.js
new file mode 100644
index 000000000..5861cf727
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.5/11.5.3/S11.5.3_A4_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.
+
+/**
+ * The result of a ECMAScript floating-point remainder operation is determined by the rules of IEEE arithmetics
+ *
+ * @path ch11/11.5/11.5.3/S11.5.3_A4_T3.js
+ * @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/js/src/tests/test262/ch11/11.5/11.5.3/S11.5.3_A4_T4.js b/js/src/tests/test262/ch11/11.5/11.5.3/S11.5.3_A4_T4.js
new file mode 100644
index 000000000..cdf3ebd38
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.5/11.5.3/S11.5.3_A4_T4.js
@@ -0,0 +1,90 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * The result of a ECMAScript floating-point remainder operation is determined by the rules of IEEE arithmetics
+ *
+ * @path ch11/11.5/11.5.3/S11.5.3_A4_T4.js
+ * @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/js/src/tests/test262/ch11/11.5/11.5.3/S11.5.3_A4_T5.js b/js/src/tests/test262/ch11/11.5/11.5.3/S11.5.3_A4_T5.js
new file mode 100644
index 000000000..46f9e75da
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.5/11.5.3/S11.5.3_A4_T5.js
@@ -0,0 +1,104 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * The result of a ECMAScript floating-point remainder operation is determined by the rules of IEEE arithmetics
+ *
+ * @path ch11/11.5/11.5.3/S11.5.3_A4_T5.js
+ * @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/js/src/tests/test262/ch11/11.5/11.5.3/S11.5.3_A4_T6.js b/js/src/tests/test262/ch11/11.5/11.5.3/S11.5.3_A4_T6.js
new file mode 100644
index 000000000..02373aec7
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.5/11.5.3/S11.5.3_A4_T6.js
@@ -0,0 +1,82 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * The result of a ECMAScript floating-point remainder operation is determined by the rules of IEEE arithmetics
+ *
+ * @path ch11/11.5/11.5.3/S11.5.3_A4_T6.js
+ * @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/js/src/tests/test262/ch11/11.5/11.5.3/S11.5.3_A4_T7.js b/js/src/tests/test262/ch11/11.5/11.5.3/S11.5.3_A4_T7.js
new file mode 100644
index 000000000..54356536e
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.5/11.5.3/S11.5.3_A4_T7.js
@@ -0,0 +1,74 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * The result of a ECMAScript floating-point remainder operation is determined by the rules of IEEE arithmetics
+ *
+ * @path ch11/11.5/11.5.3/S11.5.3_A4_T7.js
+ * @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/js/src/tests/test262/ch11/11.5/11.5.3/browser.js b/js/src/tests/test262/ch11/11.5/11.5.3/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.5/11.5.3/browser.js
diff --git a/js/src/tests/test262/ch11/11.5/11.5.3/shell.js b/js/src/tests/test262/ch11/11.5/11.5.3/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.5/11.5.3/shell.js
diff --git a/js/src/tests/test262/ch11/11.5/browser.js b/js/src/tests/test262/ch11/11.5/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.5/browser.js
diff --git a/js/src/tests/test262/ch11/11.5/shell.js b/js/src/tests/test262/ch11/11.5/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.5/shell.js
diff --git a/js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A1.js b/js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A1.js
new file mode 100644
index 000000000..6e4793095
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.6/11.6.1/S11.6.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.
+
+/**
+ * White Space and Line Terminator between AdditiveExpression and "+" or between "+" and MultiplicativeExpression are allowed
+ *
+ * @path ch11/11.6/11.6.1/S11.6.1_A1.js
+ * @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/js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A2.1_T1.js b/js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A2.1_T1.js
new file mode 100644
index 000000000..748f791fa
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_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.
+
+/**
+ * Operator x + y uses GetValue
+ *
+ * @path ch11/11.6/11.6.1/S11.6.1_A2.1_T1.js
+ * @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/js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A2.1_T2.js b/js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A2.1_T2.js
new file mode 100644
index 000000000..8a790be9f
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A2.1_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.
+
+/**
+ * Operator x + y uses GetValue
+ *
+ * @path ch11/11.6/11.6.1/S11.6.1_A2.1_T2.js
+ * @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/js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A2.1_T3.js b/js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A2.1_T3.js
new file mode 100644
index 000000000..6609a5593
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A2.1_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.
+
+/**
+ * Operator x + y uses GetValue
+ *
+ * @path ch11/11.6/11.6.1/S11.6.1_A2.1_T3.js
+ * @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/js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A2.2_T1.js b/js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A2.2_T1.js
new file mode 100644
index 000000000..debdcd883
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_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.
+
+/**
+ * Operator x + y uses [[Default Value]]
+ *
+ * @path ch11/11.6/11.6.1/S11.6.1_A2.2_T1.js
+ * @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/js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A2.2_T2.js b/js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A2.2_T2.js
new file mode 100644
index 000000000..732c32cc8
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A2.2_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.
+
+/**
+ * Operator x + y uses [[Default Value]]
+ *
+ * @path ch11/11.6/11.6.1/S11.6.1_A2.2_T2.js
+ * @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/js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A2.2_T3.js b/js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A2.2_T3.js
new file mode 100644
index 000000000..965c53d4d
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A2.2_T3.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.
+
+/**
+ * Operator x + y uses [[Default Value]]
+ *
+ * @path ch11/11.6/11.6.1/S11.6.1_A2.2_T3.js
+ * @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/js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A2.3_T1.js b/js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A2.3_T1.js
new file mode 100644
index 000000000..07f11d4a1
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A2.3_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.
+
+/**
+ * ToNumber(first expression) is called first, and then ToNumber(second expression)
+ *
+ * @path ch11/11.6/11.6.1/S11.6.1_A2.3_T1.js
+ * @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/js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A2.4_T1.js b/js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A2.4_T1.js
new file mode 100644
index 000000000..ad6f74b40
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_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.
+
+/**
+ * First expression is evaluated first, and then second expression
+ *
+ * @path ch11/11.6/11.6.1/S11.6.1_A2.4_T1.js
+ * @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/js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A2.4_T2.js b/js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A2.4_T2.js
new file mode 100644
index 000000000..349041ed4
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A2.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.
+
+/**
+ * First expression is evaluated first, and then second expression
+ *
+ * @path ch11/11.6/11.6.1/S11.6.1_A2.4_T2.js
+ * @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/js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A2.4_T3.js b/js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A2.4_T3.js
new file mode 100644
index 000000000..60d89e506
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_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.
+
+/**
+ * First expression is evaluated first, and then second expression
+ *
+ * @path ch11/11.6/11.6.1/S11.6.1_A2.4_T3.js
+ * @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/js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A3.1_T1.1.js b/js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A3.1_T1.1.js
new file mode 100644
index 000000000..e0f9656dd
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A3.1_T1.1.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.
+
+/**
+ * If Type(Primitive(x)) is not String and Type(Primitive(y)) is not String, then operator x + y returns ToNumber(x) + ToNumber(y)
+ *
+ * @path ch11/11.6/11.6.1/S11.6.1_A3.1_T1.1.js
+ * @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/js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A3.1_T1.2.js b/js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A3.1_T1.2.js
new file mode 100644
index 000000000..f5fccb105
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A3.1_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.
+
+/**
+ * If Type(Primitive(x)) is not String and Type(Primitive(y)) is not String, then operator x + y returns ToNumber(x) + ToNumber(y)
+ *
+ * @path ch11/11.6/11.6.1/S11.6.1_A3.1_T1.2.js
+ * @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/js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A3.1_T1.3.js b/js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A3.1_T1.3.js
new file mode 100644
index 000000000..c9d52e593
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A3.1_T1.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.
+
+/**
+ * If Type(Primitive(x)) is not String and Type(Primitive(y)) is not String, then operator x + y returns ToNumber(x) + ToNumber(y)
+ *
+ * @path ch11/11.6/11.6.1/S11.6.1_A3.1_T1.3.js
+ * @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/js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A3.1_T2.1.js b/js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A3.1_T2.1.js
new file mode 100644
index 000000000..e5e3ee261
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A3.1_T2.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.
+
+/**
+ * If Type(Primitive(x)) is not String and Type(Primitive(y)) is not String, then operator x + y returns ToNumber(x) + ToNumber(y)
+ *
+ * @path ch11/11.6/11.6.1/S11.6.1_A3.1_T2.1.js
+ * @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/js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A3.1_T2.2.js b/js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A3.1_T2.2.js
new file mode 100644
index 000000000..ec9dff926
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A3.1_T2.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.
+
+/**
+ * If Type(Primitive(x)) is not String and Type(Primitive(y)) is not String, then operator x + y returns ToNumber(x) + ToNumber(y)
+ *
+ * @path ch11/11.6/11.6.1/S11.6.1_A3.1_T2.2.js
+ * @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/js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A3.1_T2.3.js b/js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A3.1_T2.3.js
new file mode 100644
index 000000000..dac10c083
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A3.1_T2.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.
+
+/**
+ * If Type(Primitive(x)) is not String and Type(Primitive(y)) is not String, then operator x + y returns ToNumber(x) + ToNumber(y)
+ *
+ * @path ch11/11.6/11.6.1/S11.6.1_A3.1_T2.3.js
+ * @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/js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A3.1_T2.4.js b/js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A3.1_T2.4.js
new file mode 100644
index 000000000..a2d56e2f7
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A3.1_T2.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.
+
+/**
+ * If Type(Primitive(x)) is not String and Type(Primitive(y)) is not String, then operator x + y returns ToNumber(x) + ToNumber(y)
+ *
+ * @path ch11/11.6/11.6.1/S11.6.1_A3.1_T2.4.js
+ * @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/js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A3.1_T2.5.js b/js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A3.1_T2.5.js
new file mode 100644
index 000000000..a3cfe0523
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A3.1_T2.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.
+
+/**
+ * If Type(Primitive(x)) is not String and Type(Primitive(y)) is not String, then operator x + y returns ToNumber(x) + ToNumber(y)
+ *
+ * @path ch11/11.6/11.6.1/S11.6.1_A3.1_T2.5.js
+ * @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/js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A3.2_T1.1.js b/js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A3.2_T1.1.js
new file mode 100644
index 000000000..f2f1f8724
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A3.2_T1.1.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.
+
+/**
+ * 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)
+ *
+ * @path ch11/11.6/11.6.1/S11.6.1_A3.2_T1.1.js
+ * @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/js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A3.2_T1.2.js b/js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A3.2_T1.2.js
new file mode 100644
index 000000000..422ed6b53
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A3.2_T1.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.
+
+/**
+ * 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)
+ *
+ * @path ch11/11.6/11.6.1/S11.6.1_A3.2_T1.2.js
+ * @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/js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A3.2_T2.1.js b/js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A3.2_T2.1.js
new file mode 100644
index 000000000..461a14c1a
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A3.2_T2.1.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.
+
+/**
+ * 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)
+ *
+ * @path ch11/11.6/11.6.1/S11.6.1_A3.2_T2.1.js
+ * @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/js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A3.2_T2.2.js b/js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A3.2_T2.2.js
new file mode 100644
index 000000000..5f4a4075a
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A3.2_T2.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.
+
+/**
+ * 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)
+ *
+ * @path ch11/11.6/11.6.1/S11.6.1_A3.2_T2.2.js
+ * @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/js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A3.2_T2.3.js b/js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A3.2_T2.3.js
new file mode 100644
index 000000000..a097ed83b
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A3.2_T2.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.
+
+/**
+ * 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)
+ *
+ * @path ch11/11.6/11.6.1/S11.6.1_A3.2_T2.3.js
+ * @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/js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A3.2_T2.4.js b/js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A3.2_T2.4.js
new file mode 100644
index 000000000..a957677b7
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A3.2_T2.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.
+
+/**
+ * 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)
+ *
+ * @path ch11/11.6/11.6.1/S11.6.1_A3.2_T2.4.js
+ * @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/js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A4_T1.js b/js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A4_T1.js
new file mode 100644
index 000000000..8a8ac37da
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A4_T1.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.
+
+/**
+ * The result of an addition is determined using the rules of IEEE 754 double-precision arithmetics
+ *
+ * @path ch11/11.6/11.6.1/S11.6.1_A4_T1.js
+ * @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/js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A4_T2.js b/js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A4_T2.js
new file mode 100644
index 000000000..6e6452567
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.6/11.6.1/S11.6.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.
+
+/**
+ * The result of an addition is determined using the rules of IEEE 754 double-precision arithmetics
+ *
+ * @path ch11/11.6/11.6.1/S11.6.1_A4_T2.js
+ * @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/js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A4_T3.js b/js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A4_T3.js
new file mode 100644
index 000000000..d434e6c23
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A4_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.
+
+/**
+ * The result of an addition is determined using the rules of IEEE 754 double-precision arithmetics
+ *
+ * @path ch11/11.6/11.6.1/S11.6.1_A4_T3.js
+ * @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/js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A4_T4.js b/js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A4_T4.js
new file mode 100644
index 000000000..4fd4a6f56
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A4_T4.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.
+
+/**
+ * The result of an addition is determined using the rules of IEEE 754 double-precision arithmetics
+ *
+ * @path ch11/11.6/11.6.1/S11.6.1_A4_T4.js
+ * @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/js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A4_T5.js b/js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A4_T5.js
new file mode 100644
index 000000000..3ae18550a
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A4_T5.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.
+
+/**
+ * The result of an addition is determined using the rules of IEEE 754 double-precision arithmetics
+ *
+ * @path ch11/11.6/11.6.1/S11.6.1_A4_T5.js
+ * @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/js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A4_T6.js b/js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A4_T6.js
new file mode 100644
index 000000000..b25a8fbae
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A4_T6.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.
+
+/**
+ * The result of an addition is determined using the rules of IEEE 754 double-precision arithmetics
+ *
+ * @path ch11/11.6/11.6.1/S11.6.1_A4_T6.js
+ * @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/js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A4_T7.js b/js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A4_T7.js
new file mode 100644
index 000000000..c8af57916
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A4_T7.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.
+
+/**
+ * The result of an addition is determined using the rules of IEEE 754 double-precision arithmetics
+ *
+ * @path ch11/11.6/11.6.1/S11.6.1_A4_T7.js
+ * @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/js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A4_T8.js b/js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A4_T8.js
new file mode 100644
index 000000000..ec90d44e5
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A4_T8.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.
+
+/**
+ * The result of an addition is determined using the rules of IEEE 754 double-precision arithmetics
+ *
+ * @path ch11/11.6/11.6.1/S11.6.1_A4_T8.js
+ * @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/js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A4_T9.js b/js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A4_T9.js
new file mode 100644
index 000000000..bc082438a
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A4_T9.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.
+
+/**
+ * The result of an addition is determined using the rules of IEEE 754 double-precision arithmetics
+ *
+ * @path ch11/11.6/11.6.1/S11.6.1_A4_T9.js
+ * @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/js/src/tests/test262/ch11/11.6/11.6.1/browser.js b/js/src/tests/test262/ch11/11.6/11.6.1/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.6/11.6.1/browser.js
diff --git a/js/src/tests/test262/ch11/11.6/11.6.1/shell.js b/js/src/tests/test262/ch11/11.6/11.6.1/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.6/11.6.1/shell.js
diff --git a/js/src/tests/test262/ch11/11.6/11.6.2/S11.6.2_A1.js b/js/src/tests/test262/ch11/11.6/11.6.2/S11.6.2_A1.js
new file mode 100644
index 000000000..c3c08a221
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.6/11.6.2/S11.6.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.
+
+/**
+ * White Space and Line Terminator between AdditiveExpression and "-" or between "-" and MultiplicativeExpression are allowed
+ *
+ * @path ch11/11.6/11.6.2/S11.6.2_A1.js
+ * @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/js/src/tests/test262/ch11/11.6/11.6.2/S11.6.2_A2.1_T1.js b/js/src/tests/test262/ch11/11.6/11.6.2/S11.6.2_A2.1_T1.js
new file mode 100644
index 000000000..8d85c8233
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.6/11.6.2/S11.6.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.
+
+/**
+ * Operator x - y uses GetValue
+ *
+ * @path ch11/11.6/11.6.2/S11.6.2_A2.1_T1.js
+ * @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/js/src/tests/test262/ch11/11.6/11.6.2/S11.6.2_A2.1_T2.js b/js/src/tests/test262/ch11/11.6/11.6.2/S11.6.2_A2.1_T2.js
new file mode 100644
index 000000000..34bcafc2b
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.6/11.6.2/S11.6.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.
+
+/**
+ * Operator x - y uses GetValue
+ *
+ * @path ch11/11.6/11.6.2/S11.6.2_A2.1_T2.js
+ * @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/js/src/tests/test262/ch11/11.6/11.6.2/S11.6.2_A2.1_T3.js b/js/src/tests/test262/ch11/11.6/11.6.2/S11.6.2_A2.1_T3.js
new file mode 100644
index 000000000..e5ef600f8
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.6/11.6.2/S11.6.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.
+
+/**
+ * Operator x - y uses GetValue
+ *
+ * @path ch11/11.6/11.6.2/S11.6.2_A2.1_T3.js
+ * @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/js/src/tests/test262/ch11/11.6/11.6.2/S11.6.2_A2.2_T1.js b/js/src/tests/test262/ch11/11.6/11.6.2/S11.6.2_A2.2_T1.js
new file mode 100644
index 000000000..3f24d4c13
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.6/11.6.2/S11.6.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.
+
+/**
+ * Operator x - y uses [[Default Value]]
+ *
+ * @path ch11/11.6/11.6.2/S11.6.2_A2.2_T1.js
+ * @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/js/src/tests/test262/ch11/11.6/11.6.2/S11.6.2_A2.3_T1.js b/js/src/tests/test262/ch11/11.6/11.6.2/S11.6.2_A2.3_T1.js
new file mode 100644
index 000000000..b54588088
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.6/11.6.2/S11.6.2_A2.3_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.
+
+/**
+ * ToNumber(first expression) is called first, and then ToNumber(second expression)
+ *
+ * @path ch11/11.6/11.6.2/S11.6.2_A2.3_T1.js
+ * @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/js/src/tests/test262/ch11/11.6/11.6.2/S11.6.2_A2.4_T1.js b/js/src/tests/test262/ch11/11.6/11.6.2/S11.6.2_A2.4_T1.js
new file mode 100644
index 000000000..09b0a7184
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.6/11.6.2/S11.6.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.
+
+/**
+ * First expression is evaluated first, and then second expression
+ *
+ * @path ch11/11.6/11.6.2/S11.6.2_A2.4_T1.js
+ * @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/js/src/tests/test262/ch11/11.6/11.6.2/S11.6.2_A2.4_T2.js b/js/src/tests/test262/ch11/11.6/11.6.2/S11.6.2_A2.4_T2.js
new file mode 100644
index 000000000..ef853e38f
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.6/11.6.2/S11.6.2_A2.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.
+
+/**
+ * First expression is evaluated first, and then second expression
+ *
+ * @path ch11/11.6/11.6.2/S11.6.2_A2.4_T2.js
+ * @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/js/src/tests/test262/ch11/11.6/11.6.2/S11.6.2_A2.4_T3.js b/js/src/tests/test262/ch11/11.6/11.6.2/S11.6.2_A2.4_T3.js
new file mode 100644
index 000000000..ace9f2e95
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.6/11.6.2/S11.6.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.
+
+/**
+ * First expression is evaluated first, and then second expression
+ *
+ * @path ch11/11.6/11.6.2/S11.6.2_A2.4_T3.js
+ * @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/js/src/tests/test262/ch11/11.6/11.6.2/S11.6.2_A3_T1.1.js b/js/src/tests/test262/ch11/11.6/11.6.2/S11.6.2_A3_T1.1.js
new file mode 100644
index 000000000..732297bf4
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.6/11.6.2/S11.6.2_A3_T1.1.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.
+
+/**
+ * Operator x - y returns ToNumber(x) - ToNumber(y)
+ *
+ * @path ch11/11.6/11.6.2/S11.6.2_A3_T1.1.js
+ * @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/js/src/tests/test262/ch11/11.6/11.6.2/S11.6.2_A3_T1.2.js b/js/src/tests/test262/ch11/11.6/11.6.2/S11.6.2_A3_T1.2.js
new file mode 100644
index 000000000..4a19423a0
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.6/11.6.2/S11.6.2_A3_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.
+
+/**
+ * Operator x - y returns ToNumber(x) - ToNumber(y)
+ *
+ * @path ch11/11.6/11.6.2/S11.6.2_A3_T1.2.js
+ * @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/js/src/tests/test262/ch11/11.6/11.6.2/S11.6.2_A3_T1.3.js b/js/src/tests/test262/ch11/11.6/11.6.2/S11.6.2_A3_T1.3.js
new file mode 100644
index 000000000..5e2f31a80
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.6/11.6.2/S11.6.2_A3_T1.3.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.
+
+/**
+ * Operator x - y returns ToNumber(x) - ToNumber(y)
+ *
+ * @path ch11/11.6/11.6.2/S11.6.2_A3_T1.3.js
+ * @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/js/src/tests/test262/ch11/11.6/11.6.2/S11.6.2_A3_T1.4.js b/js/src/tests/test262/ch11/11.6/11.6.2/S11.6.2_A3_T1.4.js
new file mode 100644
index 000000000..a76eb6628
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.6/11.6.2/S11.6.2_A3_T1.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.
+
+/**
+ * Operator x - y returns ToNumber(x) - ToNumber(y)
+ *
+ * @path ch11/11.6/11.6.2/S11.6.2_A3_T1.4.js
+ * @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/js/src/tests/test262/ch11/11.6/11.6.2/S11.6.2_A3_T1.5.js b/js/src/tests/test262/ch11/11.6/11.6.2/S11.6.2_A3_T1.5.js
new file mode 100644
index 000000000..21bc87c78
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.6/11.6.2/S11.6.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.
+
+/**
+ * Operator x - y returns ToNumber(x) - ToNumber(y)
+ *
+ * @path ch11/11.6/11.6.2/S11.6.2_A3_T1.5.js
+ * @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/js/src/tests/test262/ch11/11.6/11.6.2/S11.6.2_A3_T2.1.js b/js/src/tests/test262/ch11/11.6/11.6.2/S11.6.2_A3_T2.1.js
new file mode 100644
index 000000000..8682a7154
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.6/11.6.2/S11.6.2_A3_T2.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.
+
+/**
+ * Operator x - y returns ToNumber(x) - ToNumber(y)
+ *
+ * @path ch11/11.6/11.6.2/S11.6.2_A3_T2.1.js
+ * @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/js/src/tests/test262/ch11/11.6/11.6.2/S11.6.2_A3_T2.2.js b/js/src/tests/test262/ch11/11.6/11.6.2/S11.6.2_A3_T2.2.js
new file mode 100644
index 000000000..2c98620cc
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.6/11.6.2/S11.6.2_A3_T2.2.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.
+
+/**
+ * Operator x - y returns ToNumber(x) - ToNumber(y)
+ *
+ * @path ch11/11.6/11.6.2/S11.6.2_A3_T2.2.js
+ * @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/js/src/tests/test262/ch11/11.6/11.6.2/S11.6.2_A3_T2.3.js b/js/src/tests/test262/ch11/11.6/11.6.2/S11.6.2_A3_T2.3.js
new file mode 100644
index 000000000..9edba35ba
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.6/11.6.2/S11.6.2_A3_T2.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.
+
+/**
+ * Operator x - y returns ToNumber(x) - ToNumber(y)
+ *
+ * @path ch11/11.6/11.6.2/S11.6.2_A3_T2.3.js
+ * @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/js/src/tests/test262/ch11/11.6/11.6.2/S11.6.2_A3_T2.4.js b/js/src/tests/test262/ch11/11.6/11.6.2/S11.6.2_A3_T2.4.js
new file mode 100644
index 000000000..9169bacdd
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.6/11.6.2/S11.6.2_A3_T2.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.
+
+/**
+ * Operator x - y returns ToNumber(x) - ToNumber(y)
+ *
+ * @path ch11/11.6/11.6.2/S11.6.2_A3_T2.4.js
+ * @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/js/src/tests/test262/ch11/11.6/11.6.2/S11.6.2_A3_T2.5.js b/js/src/tests/test262/ch11/11.6/11.6.2/S11.6.2_A3_T2.5.js
new file mode 100644
index 000000000..953fb4088
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.6/11.6.2/S11.6.2_A3_T2.5.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.
+
+/**
+ * Operator x - y returns ToNumber(x) - ToNumber(y)
+ *
+ * @path ch11/11.6/11.6.2/S11.6.2_A3_T2.5.js
+ * @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/js/src/tests/test262/ch11/11.6/11.6.2/S11.6.2_A3_T2.6.js b/js/src/tests/test262/ch11/11.6/11.6.2/S11.6.2_A3_T2.6.js
new file mode 100644
index 000000000..34fdcb385
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.6/11.6.2/S11.6.2_A3_T2.6.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.
+
+/**
+ * Operator x - y returns ToNumber(x) - ToNumber(y)
+ *
+ * @path ch11/11.6/11.6.2/S11.6.2_A3_T2.6.js
+ * @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/js/src/tests/test262/ch11/11.6/11.6.2/S11.6.2_A3_T2.7.js b/js/src/tests/test262/ch11/11.6/11.6.2/S11.6.2_A3_T2.7.js
new file mode 100644
index 000000000..3e467ed63
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.6/11.6.2/S11.6.2_A3_T2.7.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.
+
+/**
+ * Operator x - y returns ToNumber(x) - ToNumber(y)
+ *
+ * @path ch11/11.6/11.6.2/S11.6.2_A3_T2.7.js
+ * @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/js/src/tests/test262/ch11/11.6/11.6.2/S11.6.2_A3_T2.8.js b/js/src/tests/test262/ch11/11.6/11.6.2/S11.6.2_A3_T2.8.js
new file mode 100644
index 000000000..92704df1d
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.6/11.6.2/S11.6.2_A3_T2.8.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.
+
+/**
+ * Operator x - y returns ToNumber(x) - ToNumber(y)
+ *
+ * @path ch11/11.6/11.6.2/S11.6.2_A3_T2.8.js
+ * @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/js/src/tests/test262/ch11/11.6/11.6.2/S11.6.2_A3_T2.9.js b/js/src/tests/test262/ch11/11.6/11.6.2/S11.6.2_A3_T2.9.js
new file mode 100644
index 000000000..22bbe59e5
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.6/11.6.2/S11.6.2_A3_T2.9.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.
+
+/**
+ * Operator x - y returns ToNumber(x) - ToNumber(y)
+ *
+ * @path ch11/11.6/11.6.2/S11.6.2_A3_T2.9.js
+ * @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/js/src/tests/test262/ch11/11.6/11.6.2/S11.6.2_A4_T1.js b/js/src/tests/test262/ch11/11.6/11.6.2/S11.6.2_A4_T1.js
new file mode 100644
index 000000000..2ea5c563c
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.6/11.6.2/S11.6.2_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.
+
+/**
+ * Operator x - y produces the same result as x + (-y)
+ *
+ * @path ch11/11.6/11.6.2/S11.6.2_A4_T1.js
+ * @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/js/src/tests/test262/ch11/11.6/11.6.2/S11.6.2_A4_T2.js b/js/src/tests/test262/ch11/11.6/11.6.2/S11.6.2_A4_T2.js
new file mode 100644
index 000000000..3853092ca
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.6/11.6.2/S11.6.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.
+
+/**
+ * Operator x - y produces the same result as x + (-y)
+ *
+ * @path ch11/11.6/11.6.2/S11.6.2_A4_T2.js
+ * @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/js/src/tests/test262/ch11/11.6/11.6.2/S11.6.2_A4_T3.js b/js/src/tests/test262/ch11/11.6/11.6.2/S11.6.2_A4_T3.js
new file mode 100644
index 000000000..e1c18e1cb
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.6/11.6.2/S11.6.2_A4_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.
+
+/**
+ * Operator x - y produces the same result as x + (-y)
+ *
+ * @path ch11/11.6/11.6.2/S11.6.2_A4_T3.js
+ * @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/js/src/tests/test262/ch11/11.6/11.6.2/S11.6.2_A4_T4.js b/js/src/tests/test262/ch11/11.6/11.6.2/S11.6.2_A4_T4.js
new file mode 100644
index 000000000..2a0ddf37b
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.6/11.6.2/S11.6.2_A4_T4.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.
+
+/**
+ * Operator x - y produces the same result as x + (-y)
+ *
+ * @path ch11/11.6/11.6.2/S11.6.2_A4_T4.js
+ * @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/js/src/tests/test262/ch11/11.6/11.6.2/S11.6.2_A4_T5.js b/js/src/tests/test262/ch11/11.6/11.6.2/S11.6.2_A4_T5.js
new file mode 100644
index 000000000..bcc6ac258
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.6/11.6.2/S11.6.2_A4_T5.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.
+
+/**
+ * Operator x - y produces the same result as x + (-y)
+ *
+ * @path ch11/11.6/11.6.2/S11.6.2_A4_T5.js
+ * @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/js/src/tests/test262/ch11/11.6/11.6.2/S11.6.2_A4_T6.js b/js/src/tests/test262/ch11/11.6/11.6.2/S11.6.2_A4_T6.js
new file mode 100644
index 000000000..a71e3068f
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.6/11.6.2/S11.6.2_A4_T6.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.
+
+/**
+ * Operator x - y produces the same result as x + (-y)
+ *
+ * @path ch11/11.6/11.6.2/S11.6.2_A4_T6.js
+ * @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/js/src/tests/test262/ch11/11.6/11.6.2/S11.6.2_A4_T7.js b/js/src/tests/test262/ch11/11.6/11.6.2/S11.6.2_A4_T7.js
new file mode 100644
index 000000000..8f810cb46
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.6/11.6.2/S11.6.2_A4_T7.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.
+
+/**
+ * Operator x - y produces the same result as x + (-y)
+ *
+ * @path ch11/11.6/11.6.2/S11.6.2_A4_T7.js
+ * @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/js/src/tests/test262/ch11/11.6/11.6.2/S11.6.2_A4_T8.js b/js/src/tests/test262/ch11/11.6/11.6.2/S11.6.2_A4_T8.js
new file mode 100644
index 000000000..b8a5cd4e8
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.6/11.6.2/S11.6.2_A4_T8.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.
+
+/**
+ * Operator x - y produces the same result as x + (-y)
+ *
+ * @path ch11/11.6/11.6.2/S11.6.2_A4_T8.js
+ * @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/js/src/tests/test262/ch11/11.6/11.6.2/browser.js b/js/src/tests/test262/ch11/11.6/11.6.2/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.6/11.6.2/browser.js
diff --git a/js/src/tests/test262/ch11/11.6/11.6.2/shell.js b/js/src/tests/test262/ch11/11.6/11.6.2/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.6/11.6.2/shell.js
diff --git a/js/src/tests/test262/ch11/11.6/browser.js b/js/src/tests/test262/ch11/11.6/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.6/browser.js
diff --git a/js/src/tests/test262/ch11/11.6/shell.js b/js/src/tests/test262/ch11/11.6/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.6/shell.js
diff --git a/js/src/tests/test262/ch11/11.7/11.7.1/S11.7.1_A1.js b/js/src/tests/test262/ch11/11.7/11.7.1/S11.7.1_A1.js
new file mode 100644
index 000000000..4b4e16d24
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.7/11.7.1/S11.7.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.
+
+/**
+ * White Space and Line Terminator between ShiftExpression and "<<" or between "<<" and AdditiveExpression are allowed
+ *
+ * @path ch11/11.7/11.7.1/S11.7.1_A1.js
+ * @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/js/src/tests/test262/ch11/11.7/11.7.1/S11.7.1_A2.1_T1.js b/js/src/tests/test262/ch11/11.7/11.7.1/S11.7.1_A2.1_T1.js
new file mode 100644
index 000000000..e1066f118
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.7/11.7.1/S11.7.1_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.
+
+/**
+ * Operator x << y uses GetValue
+ *
+ * @path ch11/11.7/11.7.1/S11.7.1_A2.1_T1.js
+ * @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/js/src/tests/test262/ch11/11.7/11.7.1/S11.7.1_A2.1_T2.js b/js/src/tests/test262/ch11/11.7/11.7.1/S11.7.1_A2.1_T2.js
new file mode 100644
index 000000000..1d6dcee60
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.7/11.7.1/S11.7.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.
+
+/**
+ * Operator x << y uses GetValue
+ *
+ * @path ch11/11.7/11.7.1/S11.7.1_A2.1_T2.js
+ * @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/js/src/tests/test262/ch11/11.7/11.7.1/S11.7.1_A2.1_T3.js b/js/src/tests/test262/ch11/11.7/11.7.1/S11.7.1_A2.1_T3.js
new file mode 100644
index 000000000..b33c6c680
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.7/11.7.1/S11.7.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.
+
+/**
+ * Operator x << y uses GetValue
+ *
+ * @path ch11/11.7/11.7.1/S11.7.1_A2.1_T3.js
+ * @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/js/src/tests/test262/ch11/11.7/11.7.1/S11.7.1_A2.2_T1.js b/js/src/tests/test262/ch11/11.7/11.7.1/S11.7.1_A2.2_T1.js
new file mode 100644
index 000000000..b0403a9fb
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.7/11.7.1/S11.7.1_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.
+
+/**
+ * Operator x << y uses [[Default Value]]
+ *
+ * @path ch11/11.7/11.7.1/S11.7.1_A2.2_T1.js
+ * @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/js/src/tests/test262/ch11/11.7/11.7.1/S11.7.1_A2.3_T1.js b/js/src/tests/test262/ch11/11.7/11.7.1/S11.7.1_A2.3_T1.js
new file mode 100644
index 000000000..e06852489
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.7/11.7.1/S11.7.1_A2.3_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.
+
+/**
+ * ToNumber(first expression) is called first, and then ToNumber(second expression)
+ *
+ * @path ch11/11.7/11.7.1/S11.7.1_A2.3_T1.js
+ * @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/js/src/tests/test262/ch11/11.7/11.7.1/S11.7.1_A2.4_T1.js b/js/src/tests/test262/ch11/11.7/11.7.1/S11.7.1_A2.4_T1.js
new file mode 100644
index 000000000..1beb86794
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.7/11.7.1/S11.7.1_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.
+
+/**
+ * First expression is evaluated first, and then second expression
+ *
+ * @path ch11/11.7/11.7.1/S11.7.1_A2.4_T1.js
+ * @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/js/src/tests/test262/ch11/11.7/11.7.1/S11.7.1_A2.4_T2.js b/js/src/tests/test262/ch11/11.7/11.7.1/S11.7.1_A2.4_T2.js
new file mode 100644
index 000000000..e44dd956a
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.7/11.7.1/S11.7.1_A2.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.
+
+/**
+ * First expression is evaluated first, and then second expression
+ *
+ * @path ch11/11.7/11.7.1/S11.7.1_A2.4_T2.js
+ * @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/js/src/tests/test262/ch11/11.7/11.7.1/S11.7.1_A2.4_T3.js b/js/src/tests/test262/ch11/11.7/11.7.1/S11.7.1_A2.4_T3.js
new file mode 100644
index 000000000..ed53451ac
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.7/11.7.1/S11.7.1_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.
+
+/**
+ * First expression is evaluated first, and then second expression
+ *
+ * @path ch11/11.7/11.7.1/S11.7.1_A2.4_T3.js
+ * @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/js/src/tests/test262/ch11/11.7/11.7.1/S11.7.1_A3_T1.1.js b/js/src/tests/test262/ch11/11.7/11.7.1/S11.7.1_A3_T1.1.js
new file mode 100644
index 000000000..5e1e84696
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.7/11.7.1/S11.7.1_A3_T1.1.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.
+
+/**
+ * Operator x << y returns ToNumber(x) << ToNumber(y)
+ *
+ * @path ch11/11.7/11.7.1/S11.7.1_A3_T1.1.js
+ * @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/js/src/tests/test262/ch11/11.7/11.7.1/S11.7.1_A3_T1.2.js b/js/src/tests/test262/ch11/11.7/11.7.1/S11.7.1_A3_T1.2.js
new file mode 100644
index 000000000..06d8dca64
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.7/11.7.1/S11.7.1_A3_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.
+
+/**
+ * Operator x << y returns ToNumber(x) << ToNumber(y)
+ *
+ * @path ch11/11.7/11.7.1/S11.7.1_A3_T1.2.js
+ * @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/js/src/tests/test262/ch11/11.7/11.7.1/S11.7.1_A3_T1.3.js b/js/src/tests/test262/ch11/11.7/11.7.1/S11.7.1_A3_T1.3.js
new file mode 100644
index 000000000..400362c34
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.7/11.7.1/S11.7.1_A3_T1.3.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.
+
+/**
+ * Operator x << y returns ToNumber(x) << ToNumber(y)
+ *
+ * @path ch11/11.7/11.7.1/S11.7.1_A3_T1.3.js
+ * @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/js/src/tests/test262/ch11/11.7/11.7.1/S11.7.1_A3_T1.4.js b/js/src/tests/test262/ch11/11.7/11.7.1/S11.7.1_A3_T1.4.js
new file mode 100644
index 000000000..f96d4eee5
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.7/11.7.1/S11.7.1_A3_T1.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.
+
+/**
+ * Operator x << y returns ToNumber(x) << ToNumber(y)
+ *
+ * @path ch11/11.7/11.7.1/S11.7.1_A3_T1.4.js
+ * @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/js/src/tests/test262/ch11/11.7/11.7.1/S11.7.1_A3_T1.5.js b/js/src/tests/test262/ch11/11.7/11.7.1/S11.7.1_A3_T1.5.js
new file mode 100644
index 000000000..a548852a9
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.7/11.7.1/S11.7.1_A3_T1.5.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.
+
+/**
+ * Operator x << y returns ToNumber(x) << ToNumber(y)
+ *
+ * @path ch11/11.7/11.7.1/S11.7.1_A3_T1.5.js
+ * @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/js/src/tests/test262/ch11/11.7/11.7.1/S11.7.1_A3_T2.1.js b/js/src/tests/test262/ch11/11.7/11.7.1/S11.7.1_A3_T2.1.js
new file mode 100644
index 000000000..3865695e1
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.7/11.7.1/S11.7.1_A3_T2.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.
+
+/**
+ * Operator x << y returns ToNumber(x) << ToNumber(y)
+ *
+ * @path ch11/11.7/11.7.1/S11.7.1_A3_T2.1.js
+ * @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/js/src/tests/test262/ch11/11.7/11.7.1/S11.7.1_A3_T2.2.js b/js/src/tests/test262/ch11/11.7/11.7.1/S11.7.1_A3_T2.2.js
new file mode 100644
index 000000000..363ee7234
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.7/11.7.1/S11.7.1_A3_T2.2.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.
+
+/**
+ * Operator x << y returns ToNumber(x) << ToNumber(y)
+ *
+ * @path ch11/11.7/11.7.1/S11.7.1_A3_T2.2.js
+ * @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/js/src/tests/test262/ch11/11.7/11.7.1/S11.7.1_A3_T2.3.js b/js/src/tests/test262/ch11/11.7/11.7.1/S11.7.1_A3_T2.3.js
new file mode 100644
index 000000000..182b1fbd2
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.7/11.7.1/S11.7.1_A3_T2.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.
+
+/**
+ * Operator x << y returns ToNumber(x) << ToNumber(y)
+ *
+ * @path ch11/11.7/11.7.1/S11.7.1_A3_T2.3.js
+ * @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/js/src/tests/test262/ch11/11.7/11.7.1/S11.7.1_A3_T2.4.js b/js/src/tests/test262/ch11/11.7/11.7.1/S11.7.1_A3_T2.4.js
new file mode 100644
index 000000000..2a4836aa5
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.7/11.7.1/S11.7.1_A3_T2.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.
+
+/**
+ * Operator x << y returns ToNumber(x) << ToNumber(y)
+ *
+ * @path ch11/11.7/11.7.1/S11.7.1_A3_T2.4.js
+ * @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/js/src/tests/test262/ch11/11.7/11.7.1/S11.7.1_A3_T2.5.js b/js/src/tests/test262/ch11/11.7/11.7.1/S11.7.1_A3_T2.5.js
new file mode 100644
index 000000000..fa8652c5b
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.7/11.7.1/S11.7.1_A3_T2.5.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.
+
+/**
+ * Operator x << y returns ToNumber(x) << ToNumber(y)
+ *
+ * @path ch11/11.7/11.7.1/S11.7.1_A3_T2.5.js
+ * @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/js/src/tests/test262/ch11/11.7/11.7.1/S11.7.1_A3_T2.6.js b/js/src/tests/test262/ch11/11.7/11.7.1/S11.7.1_A3_T2.6.js
new file mode 100644
index 000000000..4f5d8c668
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.7/11.7.1/S11.7.1_A3_T2.6.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.
+
+/**
+ * Operator x << y returns ToNumber(x) << ToNumber(y)
+ *
+ * @path ch11/11.7/11.7.1/S11.7.1_A3_T2.6.js
+ * @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/js/src/tests/test262/ch11/11.7/11.7.1/S11.7.1_A3_T2.7.js b/js/src/tests/test262/ch11/11.7/11.7.1/S11.7.1_A3_T2.7.js
new file mode 100644
index 000000000..da246f173
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.7/11.7.1/S11.7.1_A3_T2.7.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.
+
+/**
+ * Operator x << y returns ToNumber(x) << ToNumber(y)
+ *
+ * @path ch11/11.7/11.7.1/S11.7.1_A3_T2.7.js
+ * @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/js/src/tests/test262/ch11/11.7/11.7.1/S11.7.1_A3_T2.8.js b/js/src/tests/test262/ch11/11.7/11.7.1/S11.7.1_A3_T2.8.js
new file mode 100644
index 000000000..6c0d3858d
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.7/11.7.1/S11.7.1_A3_T2.8.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.
+
+/**
+ * Operator x << y returns ToNumber(x) << ToNumber(y)
+ *
+ * @path ch11/11.7/11.7.1/S11.7.1_A3_T2.8.js
+ * @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/js/src/tests/test262/ch11/11.7/11.7.1/S11.7.1_A3_T2.9.js b/js/src/tests/test262/ch11/11.7/11.7.1/S11.7.1_A3_T2.9.js
new file mode 100644
index 000000000..25935fea7
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.7/11.7.1/S11.7.1_A3_T2.9.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.
+
+/**
+ * Operator x << y returns ToNumber(x) << ToNumber(y)
+ *
+ * @path ch11/11.7/11.7.1/S11.7.1_A3_T2.9.js
+ * @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/js/src/tests/test262/ch11/11.7/11.7.1/S11.7.1_A4_T1.js b/js/src/tests/test262/ch11/11.7/11.7.1/S11.7.1_A4_T1.js
new file mode 100644
index 000000000..6c2416dd9
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.7/11.7.1/S11.7.1_A4_T1.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.
+
+/**
+ * Check operator x << y in distinct points
+ *
+ * @path ch11/11.7/11.7.1/S11.7.1_A4_T1.js
+ * @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/js/src/tests/test262/ch11/11.7/11.7.1/S11.7.1_A4_T2.js b/js/src/tests/test262/ch11/11.7/11.7.1/S11.7.1_A4_T2.js
new file mode 100644
index 000000000..0cdfbda0e
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.7/11.7.1/S11.7.1_A4_T2.js
@@ -0,0 +1,2572 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * Check operator x << y in distinct points
+ *
+ * @path ch11/11.7/11.7.1/S11.7.1_A4_T2.js
+ * @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/js/src/tests/test262/ch11/11.7/11.7.1/S11.7.1_A4_T3.js b/js/src/tests/test262/ch11/11.7/11.7.1/S11.7.1_A4_T3.js
new file mode 100644
index 000000000..5357d1857
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.7/11.7.1/S11.7.1_A4_T3.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.
+
+/**
+ * Check operator x << y in distinct points
+ *
+ * @path ch11/11.7/11.7.1/S11.7.1_A4_T3.js
+ * @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/js/src/tests/test262/ch11/11.7/11.7.1/S11.7.1_A4_T4.js b/js/src/tests/test262/ch11/11.7/11.7.1/S11.7.1_A4_T4.js
new file mode 100644
index 000000000..15082a7cc
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.7/11.7.1/S11.7.1_A4_T4.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.
+
+/**
+ * Check operator x << y in distinct points
+ *
+ * @path ch11/11.7/11.7.1/S11.7.1_A4_T4.js
+ * @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/js/src/tests/test262/ch11/11.7/11.7.1/S11.7.1_A5.1_T1.js b/js/src/tests/test262/ch11/11.7/11.7.1/S11.7.1_A5.1_T1.js
new file mode 100644
index 000000000..49bdc5e7e
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.7/11.7.1/S11.7.1_A5.1_T1.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.
+
+/**
+ * Operator x << y uses ToInt32(ShiftExpression)
+ *
+ * @path ch11/11.7/11.7.1/S11.7.1_A5.1_T1.js
+ * @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/js/src/tests/test262/ch11/11.7/11.7.1/S11.7.1_A5.2_T1.js b/js/src/tests/test262/ch11/11.7/11.7.1/S11.7.1_A5.2_T1.js
new file mode 100644
index 000000000..689fe1203
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.7/11.7.1/S11.7.1_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.
+
+/**
+ * Operator x << y uses ToUint32(AdditiveExpression) & 31
+ *
+ * @path ch11/11.7/11.7.1/S11.7.1_A5.2_T1.js
+ * @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/js/src/tests/test262/ch11/11.7/11.7.1/browser.js b/js/src/tests/test262/ch11/11.7/11.7.1/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.7/11.7.1/browser.js
diff --git a/js/src/tests/test262/ch11/11.7/11.7.1/shell.js b/js/src/tests/test262/ch11/11.7/11.7.1/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.7/11.7.1/shell.js
diff --git a/js/src/tests/test262/ch11/11.7/11.7.2/S11.7.2_A1.js b/js/src/tests/test262/ch11/11.7/11.7.2/S11.7.2_A1.js
new file mode 100644
index 000000000..086e03849
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.7/11.7.2/S11.7.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.
+
+/**
+ * White Space and Line Terminator between ShiftExpression and ">>" or between ">>" and AdditiveExpression are allowed
+ *
+ * @path ch11/11.7/11.7.2/S11.7.2_A1.js
+ * @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/js/src/tests/test262/ch11/11.7/11.7.2/S11.7.2_A2.1_T1.js b/js/src/tests/test262/ch11/11.7/11.7.2/S11.7.2_A2.1_T1.js
new file mode 100644
index 000000000..b036436d8
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.7/11.7.2/S11.7.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.
+
+/**
+ * Operator x >> y uses GetValue
+ *
+ * @path ch11/11.7/11.7.2/S11.7.2_A2.1_T1.js
+ * @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/js/src/tests/test262/ch11/11.7/11.7.2/S11.7.2_A2.1_T2.js b/js/src/tests/test262/ch11/11.7/11.7.2/S11.7.2_A2.1_T2.js
new file mode 100644
index 000000000..107ac4ade
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.7/11.7.2/S11.7.2_A2.1_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.
+
+/**
+ * Operator x >> y uses GetValue
+ *
+ * @path ch11/11.7/11.7.2/S11.7.2_A2.1_T2.js
+ * @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/js/src/tests/test262/ch11/11.7/11.7.2/S11.7.2_A2.1_T3.js b/js/src/tests/test262/ch11/11.7/11.7.2/S11.7.2_A2.1_T3.js
new file mode 100644
index 000000000..1ce6c6dd2
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.7/11.7.2/S11.7.2_A2.1_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.
+
+/**
+ * Operator x >> y uses GetValue
+ *
+ * @path ch11/11.7/11.7.2/S11.7.2_A2.1_T3.js
+ * @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/js/src/tests/test262/ch11/11.7/11.7.2/S11.7.2_A2.2_T1.js b/js/src/tests/test262/ch11/11.7/11.7.2/S11.7.2_A2.2_T1.js
new file mode 100644
index 000000000..3debe0ae1
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.7/11.7.2/S11.7.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.
+
+/**
+ * Operator x >> y uses [[Default Value]]
+ *
+ * @path ch11/11.7/11.7.2/S11.7.2_A2.2_T1.js
+ * @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/js/src/tests/test262/ch11/11.7/11.7.2/S11.7.2_A2.3_T1.js b/js/src/tests/test262/ch11/11.7/11.7.2/S11.7.2_A2.3_T1.js
new file mode 100644
index 000000000..1d3d1c544
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.7/11.7.2/S11.7.2_A2.3_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.
+
+/**
+ * ToNumber(first expression) is called first, and then ToNumber(second expression)
+ *
+ * @path ch11/11.7/11.7.2/S11.7.2_A2.3_T1.js
+ * @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/js/src/tests/test262/ch11/11.7/11.7.2/S11.7.2_A2.4_T1.js b/js/src/tests/test262/ch11/11.7/11.7.2/S11.7.2_A2.4_T1.js
new file mode 100644
index 000000000..310bee61f
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.7/11.7.2/S11.7.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.
+
+/**
+ * First expression is evaluated first, and then second expression
+ *
+ * @path ch11/11.7/11.7.2/S11.7.2_A2.4_T1.js
+ * @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/js/src/tests/test262/ch11/11.7/11.7.2/S11.7.2_A2.4_T2.js b/js/src/tests/test262/ch11/11.7/11.7.2/S11.7.2_A2.4_T2.js
new file mode 100644
index 000000000..4f1eb349a
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.7/11.7.2/S11.7.2_A2.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.
+
+/**
+ * First expression is evaluated first, and then second expression
+ *
+ * @path ch11/11.7/11.7.2/S11.7.2_A2.4_T2.js
+ * @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/js/src/tests/test262/ch11/11.7/11.7.2/S11.7.2_A2.4_T3.js b/js/src/tests/test262/ch11/11.7/11.7.2/S11.7.2_A2.4_T3.js
new file mode 100644
index 000000000..45f52d79d
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.7/11.7.2/S11.7.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.
+
+/**
+ * First expression is evaluated first, and then second expression
+ *
+ * @path ch11/11.7/11.7.2/S11.7.2_A2.4_T3.js
+ * @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/js/src/tests/test262/ch11/11.7/11.7.2/S11.7.2_A3_T1.1.js b/js/src/tests/test262/ch11/11.7/11.7.2/S11.7.2_A3_T1.1.js
new file mode 100644
index 000000000..0f872cd25
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.7/11.7.2/S11.7.2_A3_T1.1.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.
+
+/**
+ * Operator x >> y returns ToNumber(x) >> ToNumber(y)
+ *
+ * @path ch11/11.7/11.7.2/S11.7.2_A3_T1.1.js
+ * @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/js/src/tests/test262/ch11/11.7/11.7.2/S11.7.2_A3_T1.2.js b/js/src/tests/test262/ch11/11.7/11.7.2/S11.7.2_A3_T1.2.js
new file mode 100644
index 000000000..0398c019a
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.7/11.7.2/S11.7.2_A3_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.
+
+/**
+ * Operator x >> y returns ToNumber(x) >> ToNumber(y)
+ *
+ * @path ch11/11.7/11.7.2/S11.7.2_A3_T1.2.js
+ * @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/js/src/tests/test262/ch11/11.7/11.7.2/S11.7.2_A3_T1.3.js b/js/src/tests/test262/ch11/11.7/11.7.2/S11.7.2_A3_T1.3.js
new file mode 100644
index 000000000..7172e563c
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.7/11.7.2/S11.7.2_A3_T1.3.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.
+
+/**
+ * Operator x >> y returns ToNumber(x) >> ToNumber(y)
+ *
+ * @path ch11/11.7/11.7.2/S11.7.2_A3_T1.3.js
+ * @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/js/src/tests/test262/ch11/11.7/11.7.2/S11.7.2_A3_T1.4.js b/js/src/tests/test262/ch11/11.7/11.7.2/S11.7.2_A3_T1.4.js
new file mode 100644
index 000000000..b792d7c82
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.7/11.7.2/S11.7.2_A3_T1.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.
+
+/**
+ * Operator x >> y returns ToNumber(x) >> ToNumber(y)
+ *
+ * @path ch11/11.7/11.7.2/S11.7.2_A3_T1.4.js
+ * @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/js/src/tests/test262/ch11/11.7/11.7.2/S11.7.2_A3_T1.5.js b/js/src/tests/test262/ch11/11.7/11.7.2/S11.7.2_A3_T1.5.js
new file mode 100644
index 000000000..3f208836f
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.7/11.7.2/S11.7.2_A3_T1.5.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.
+
+/**
+ * Operator x >> y returns ToNumber(x) >> ToNumber(y)
+ *
+ * @path ch11/11.7/11.7.2/S11.7.2_A3_T1.5.js
+ * @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/js/src/tests/test262/ch11/11.7/11.7.2/S11.7.2_A3_T2.1.js b/js/src/tests/test262/ch11/11.7/11.7.2/S11.7.2_A3_T2.1.js
new file mode 100644
index 000000000..808fb0e3a
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.7/11.7.2/S11.7.2_A3_T2.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.
+
+/**
+ * Operator x >> y returns ToNumber(x) >> ToNumber(y)
+ *
+ * @path ch11/11.7/11.7.2/S11.7.2_A3_T2.1.js
+ * @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/js/src/tests/test262/ch11/11.7/11.7.2/S11.7.2_A3_T2.2.js b/js/src/tests/test262/ch11/11.7/11.7.2/S11.7.2_A3_T2.2.js
new file mode 100644
index 000000000..57c037ae0
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.7/11.7.2/S11.7.2_A3_T2.2.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.
+
+/**
+ * Operator x >> y returns ToNumber(x) >> ToNumber(y)
+ *
+ * @path ch11/11.7/11.7.2/S11.7.2_A3_T2.2.js
+ * @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/js/src/tests/test262/ch11/11.7/11.7.2/S11.7.2_A3_T2.3.js b/js/src/tests/test262/ch11/11.7/11.7.2/S11.7.2_A3_T2.3.js
new file mode 100644
index 000000000..fe7a31aaa
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.7/11.7.2/S11.7.2_A3_T2.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.
+
+/**
+ * Operator x >> y returns ToNumber(x) >> ToNumber(y)
+ *
+ * @path ch11/11.7/11.7.2/S11.7.2_A3_T2.3.js
+ * @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/js/src/tests/test262/ch11/11.7/11.7.2/S11.7.2_A3_T2.4.js b/js/src/tests/test262/ch11/11.7/11.7.2/S11.7.2_A3_T2.4.js
new file mode 100644
index 000000000..138b77681
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.7/11.7.2/S11.7.2_A3_T2.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.
+
+/**
+ * Operator x >> y returns ToNumber(x) >> ToNumber(y)
+ *
+ * @path ch11/11.7/11.7.2/S11.7.2_A3_T2.4.js
+ * @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/js/src/tests/test262/ch11/11.7/11.7.2/S11.7.2_A3_T2.5.js b/js/src/tests/test262/ch11/11.7/11.7.2/S11.7.2_A3_T2.5.js
new file mode 100644
index 000000000..ca296c62e
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.7/11.7.2/S11.7.2_A3_T2.5.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.
+
+/**
+ * Operator x >> y returns ToNumber(x) >> ToNumber(y)
+ *
+ * @path ch11/11.7/11.7.2/S11.7.2_A3_T2.5.js
+ * @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/js/src/tests/test262/ch11/11.7/11.7.2/S11.7.2_A3_T2.6.js b/js/src/tests/test262/ch11/11.7/11.7.2/S11.7.2_A3_T2.6.js
new file mode 100644
index 000000000..ea18c20a6
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.7/11.7.2/S11.7.2_A3_T2.6.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.
+
+/**
+ * Operator x >> y returns ToNumber(x) >> ToNumber(y)
+ *
+ * @path ch11/11.7/11.7.2/S11.7.2_A3_T2.6.js
+ * @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/js/src/tests/test262/ch11/11.7/11.7.2/S11.7.2_A3_T2.7.js b/js/src/tests/test262/ch11/11.7/11.7.2/S11.7.2_A3_T2.7.js
new file mode 100644
index 000000000..3061313c2
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.7/11.7.2/S11.7.2_A3_T2.7.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.
+
+/**
+ * Operator x >> y returns ToNumber(x) >> ToNumber(y)
+ *
+ * @path ch11/11.7/11.7.2/S11.7.2_A3_T2.7.js
+ * @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/js/src/tests/test262/ch11/11.7/11.7.2/S11.7.2_A3_T2.8.js b/js/src/tests/test262/ch11/11.7/11.7.2/S11.7.2_A3_T2.8.js
new file mode 100644
index 000000000..a918a6791
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.7/11.7.2/S11.7.2_A3_T2.8.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.
+
+/**
+ * Operator x >> y returns ToNumber(x) >> ToNumber(y)
+ *
+ * @path ch11/11.7/11.7.2/S11.7.2_A3_T2.8.js
+ * @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/js/src/tests/test262/ch11/11.7/11.7.2/S11.7.2_A3_T2.9.js b/js/src/tests/test262/ch11/11.7/11.7.2/S11.7.2_A3_T2.9.js
new file mode 100644
index 000000000..f5cbaf944
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.7/11.7.2/S11.7.2_A3_T2.9.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.
+
+/**
+ * Operator x >> y returns ToNumber(x) >> ToNumber(y)
+ *
+ * @path ch11/11.7/11.7.2/S11.7.2_A3_T2.9.js
+ * @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/js/src/tests/test262/ch11/11.7/11.7.2/S11.7.2_A4_T1.js b/js/src/tests/test262/ch11/11.7/11.7.2/S11.7.2_A4_T1.js
new file mode 100644
index 000000000..851139bb1
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.7/11.7.2/S11.7.2_A4_T1.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.
+
+/**
+ * Check x >> y operator in distinct points
+ *
+ * @path ch11/11.7/11.7.2/S11.7.2_A4_T1.js
+ * @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/js/src/tests/test262/ch11/11.7/11.7.2/S11.7.2_A4_T2.js b/js/src/tests/test262/ch11/11.7/11.7.2/S11.7.2_A4_T2.js
new file mode 100644
index 000000000..7077af853
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.7/11.7.2/S11.7.2_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.
+
+/**
+ * Check x >> y operator in distinct points
+ *
+ * @path ch11/11.7/11.7.2/S11.7.2_A4_T2.js
+ * @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/js/src/tests/test262/ch11/11.7/11.7.2/S11.7.2_A4_T3.js b/js/src/tests/test262/ch11/11.7/11.7.2/S11.7.2_A4_T3.js
new file mode 100644
index 000000000..40f8d686d
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.7/11.7.2/S11.7.2_A4_T3.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.
+
+/**
+ * Check x >> y operator in distinct points
+ *
+ * @path ch11/11.7/11.7.2/S11.7.2_A4_T3.js
+ * @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/js/src/tests/test262/ch11/11.7/11.7.2/S11.7.2_A4_T4.js b/js/src/tests/test262/ch11/11.7/11.7.2/S11.7.2_A4_T4.js
new file mode 100644
index 000000000..aa1e0065a
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.7/11.7.2/S11.7.2_A4_T4.js
@@ -0,0 +1,2566 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * Check x >> y operator in distinct points
+ *
+ * @path ch11/11.7/11.7.2/S11.7.2_A4_T4.js
+ * @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/js/src/tests/test262/ch11/11.7/11.7.2/S11.7.2_A5.1_T1.js b/js/src/tests/test262/ch11/11.7/11.7.2/S11.7.2_A5.1_T1.js
new file mode 100644
index 000000000..aa732c311
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.7/11.7.2/S11.7.2_A5.1_T1.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.
+
+/**
+ * Operator x >> y uses ToInt32(ShiftExpression)
+ *
+ * @path ch11/11.7/11.7.2/S11.7.2_A5.1_T1.js
+ * @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/js/src/tests/test262/ch11/11.7/11.7.2/S11.7.2_A5.2_T1.js b/js/src/tests/test262/ch11/11.7/11.7.2/S11.7.2_A5.2_T1.js
new file mode 100644
index 000000000..64eca8df3
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.7/11.7.2/S11.7.2_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.
+
+/**
+ * Operator x >> y uses ToUint32(AdditiveExpression) & 31
+ *
+ * @path ch11/11.7/11.7.2/S11.7.2_A5.2_T1.js
+ * @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/js/src/tests/test262/ch11/11.7/11.7.2/browser.js b/js/src/tests/test262/ch11/11.7/11.7.2/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.7/11.7.2/browser.js
diff --git a/js/src/tests/test262/ch11/11.7/11.7.2/shell.js b/js/src/tests/test262/ch11/11.7/11.7.2/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.7/11.7.2/shell.js
diff --git a/js/src/tests/test262/ch11/11.7/11.7.3/S11.7.3_A1.js b/js/src/tests/test262/ch11/11.7/11.7.3/S11.7.3_A1.js
new file mode 100644
index 000000000..58906e8fb
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.7/11.7.3/S11.7.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.
+
+/**
+ * White Space and Line Terminator between ShiftExpression and ">>>" or between ">>>" and AdditiveExpression are allowed
+ *
+ * @path ch11/11.7/11.7.3/S11.7.3_A1.js
+ * @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/js/src/tests/test262/ch11/11.7/11.7.3/S11.7.3_A2.1_T1.js b/js/src/tests/test262/ch11/11.7/11.7.3/S11.7.3_A2.1_T1.js
new file mode 100644
index 000000000..e153a762e
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.7/11.7.3/S11.7.3_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.
+
+/**
+ * Operator x >>> y uses GetValue
+ *
+ * @path ch11/11.7/11.7.3/S11.7.3_A2.1_T1.js
+ * @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/js/src/tests/test262/ch11/11.7/11.7.3/S11.7.3_A2.1_T2.js b/js/src/tests/test262/ch11/11.7/11.7.3/S11.7.3_A2.1_T2.js
new file mode 100644
index 000000000..cae3ab773
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.7/11.7.3/S11.7.3_A2.1_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.
+
+/**
+ * Operator x >>> y uses GetValue
+ *
+ * @path ch11/11.7/11.7.3/S11.7.3_A2.1_T2.js
+ * @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/js/src/tests/test262/ch11/11.7/11.7.3/S11.7.3_A2.1_T3.js b/js/src/tests/test262/ch11/11.7/11.7.3/S11.7.3_A2.1_T3.js
new file mode 100644
index 000000000..e682a064a
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.7/11.7.3/S11.7.3_A2.1_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.
+
+/**
+ * Operator x >>> y uses GetValue
+ *
+ * @path ch11/11.7/11.7.3/S11.7.3_A2.1_T3.js
+ * @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/js/src/tests/test262/ch11/11.7/11.7.3/S11.7.3_A2.2_T1.js b/js/src/tests/test262/ch11/11.7/11.7.3/S11.7.3_A2.2_T1.js
new file mode 100644
index 000000000..f678b914d
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.7/11.7.3/S11.7.3_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.
+
+/**
+ * Operator x >>> y uses [[Default Value]]
+ *
+ * @path ch11/11.7/11.7.3/S11.7.3_A2.2_T1.js
+ * @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/js/src/tests/test262/ch11/11.7/11.7.3/S11.7.3_A2.3_T1.js b/js/src/tests/test262/ch11/11.7/11.7.3/S11.7.3_A2.3_T1.js
new file mode 100644
index 000000000..717afe75d
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.7/11.7.3/S11.7.3_A2.3_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.
+
+/**
+ * ToNumber(first expression) is called first, and then ToNumber(second expression)
+ *
+ * @path ch11/11.7/11.7.3/S11.7.3_A2.3_T1.js
+ * @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/js/src/tests/test262/ch11/11.7/11.7.3/S11.7.3_A2.4_T1.js b/js/src/tests/test262/ch11/11.7/11.7.3/S11.7.3_A2.4_T1.js
new file mode 100644
index 000000000..7291d20fd
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.7/11.7.3/S11.7.3_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.
+
+/**
+ * First expression is evaluated first, and then second expression
+ *
+ * @path ch11/11.7/11.7.3/S11.7.3_A2.4_T1.js
+ * @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/js/src/tests/test262/ch11/11.7/11.7.3/S11.7.3_A2.4_T2.js b/js/src/tests/test262/ch11/11.7/11.7.3/S11.7.3_A2.4_T2.js
new file mode 100644
index 000000000..84069b1f1
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.7/11.7.3/S11.7.3_A2.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.
+
+/**
+ * First expression is evaluated first, and then second expression
+ *
+ * @path ch11/11.7/11.7.3/S11.7.3_A2.4_T2.js
+ * @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/js/src/tests/test262/ch11/11.7/11.7.3/S11.7.3_A2.4_T3.js b/js/src/tests/test262/ch11/11.7/11.7.3/S11.7.3_A2.4_T3.js
new file mode 100644
index 000000000..72f08b3ee
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.7/11.7.3/S11.7.3_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.
+
+/**
+ * First expression is evaluated first, and then second expression
+ *
+ * @path ch11/11.7/11.7.3/S11.7.3_A2.4_T3.js
+ * @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/js/src/tests/test262/ch11/11.7/11.7.3/S11.7.3_A3_T1.1.js b/js/src/tests/test262/ch11/11.7/11.7.3/S11.7.3_A3_T1.1.js
new file mode 100644
index 000000000..0d90bbd6f
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.7/11.7.3/S11.7.3_A3_T1.1.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.
+
+/**
+ * Operator x >>> y returns ToNumber(x) >>> ToNumber(y)
+ *
+ * @path ch11/11.7/11.7.3/S11.7.3_A3_T1.1.js
+ * @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/js/src/tests/test262/ch11/11.7/11.7.3/S11.7.3_A3_T1.2.js b/js/src/tests/test262/ch11/11.7/11.7.3/S11.7.3_A3_T1.2.js
new file mode 100644
index 000000000..48d41b63a
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.7/11.7.3/S11.7.3_A3_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.
+
+/**
+ * Operator x >>> y returns ToNumber(x) >>> ToNumber(y)
+ *
+ * @path ch11/11.7/11.7.3/S11.7.3_A3_T1.2.js
+ * @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/js/src/tests/test262/ch11/11.7/11.7.3/S11.7.3_A3_T1.3.js b/js/src/tests/test262/ch11/11.7/11.7.3/S11.7.3_A3_T1.3.js
new file mode 100644
index 000000000..60bf9d310
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.7/11.7.3/S11.7.3_A3_T1.3.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.
+
+/**
+ * Operator x >>> y returns ToNumber(x) >>> ToNumber(y)
+ *
+ * @path ch11/11.7/11.7.3/S11.7.3_A3_T1.3.js
+ * @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/js/src/tests/test262/ch11/11.7/11.7.3/S11.7.3_A3_T1.4.js b/js/src/tests/test262/ch11/11.7/11.7.3/S11.7.3_A3_T1.4.js
new file mode 100644
index 000000000..8da5b55c1
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.7/11.7.3/S11.7.3_A3_T1.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.
+
+/**
+ * Operator x >>> y returns ToNumber(x) >>> ToNumber(y)
+ *
+ * @path ch11/11.7/11.7.3/S11.7.3_A3_T1.4.js
+ * @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/js/src/tests/test262/ch11/11.7/11.7.3/S11.7.3_A3_T1.5.js b/js/src/tests/test262/ch11/11.7/11.7.3/S11.7.3_A3_T1.5.js
new file mode 100644
index 000000000..aa023e286
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.7/11.7.3/S11.7.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.
+
+/**
+ * Operator x >>> y returns ToNumber(x) >>> ToNumber(y)
+ *
+ * @path ch11/11.7/11.7.3/S11.7.3_A3_T1.5.js
+ * @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/js/src/tests/test262/ch11/11.7/11.7.3/S11.7.3_A3_T2.1.js b/js/src/tests/test262/ch11/11.7/11.7.3/S11.7.3_A3_T2.1.js
new file mode 100644
index 000000000..ef7427e70
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.7/11.7.3/S11.7.3_A3_T2.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.
+
+/**
+ * Operator x >>> y returns ToNumber(x) >>> ToNumber(y)
+ *
+ * @path ch11/11.7/11.7.3/S11.7.3_A3_T2.1.js
+ * @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/js/src/tests/test262/ch11/11.7/11.7.3/S11.7.3_A3_T2.2.js b/js/src/tests/test262/ch11/11.7/11.7.3/S11.7.3_A3_T2.2.js
new file mode 100644
index 000000000..04cf0bd1b
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.7/11.7.3/S11.7.3_A3_T2.2.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.
+
+/**
+ * Operator x >>> y returns ToNumber(x) >>> ToNumber(y)
+ *
+ * @path ch11/11.7/11.7.3/S11.7.3_A3_T2.2.js
+ * @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/js/src/tests/test262/ch11/11.7/11.7.3/S11.7.3_A3_T2.3.js b/js/src/tests/test262/ch11/11.7/11.7.3/S11.7.3_A3_T2.3.js
new file mode 100644
index 000000000..658d6029c
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.7/11.7.3/S11.7.3_A3_T2.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.
+
+/**
+ * Operator x >>> y returns ToNumber(x) >>> ToNumber(y)
+ *
+ * @path ch11/11.7/11.7.3/S11.7.3_A3_T2.3.js
+ * @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/js/src/tests/test262/ch11/11.7/11.7.3/S11.7.3_A3_T2.4.js b/js/src/tests/test262/ch11/11.7/11.7.3/S11.7.3_A3_T2.4.js
new file mode 100644
index 000000000..a398f8a09
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.7/11.7.3/S11.7.3_A3_T2.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.
+
+/**
+ * Operator x >>> y returns ToNumber(x) >>> ToNumber(y)
+ *
+ * @path ch11/11.7/11.7.3/S11.7.3_A3_T2.4.js
+ * @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/js/src/tests/test262/ch11/11.7/11.7.3/S11.7.3_A3_T2.5.js b/js/src/tests/test262/ch11/11.7/11.7.3/S11.7.3_A3_T2.5.js
new file mode 100644
index 000000000..83fc64bb2
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.7/11.7.3/S11.7.3_A3_T2.5.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.
+
+/**
+ * Operator x >>> y returns ToNumber(x) >>> ToNumber(y)
+ *
+ * @path ch11/11.7/11.7.3/S11.7.3_A3_T2.5.js
+ * @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/js/src/tests/test262/ch11/11.7/11.7.3/S11.7.3_A3_T2.6.js b/js/src/tests/test262/ch11/11.7/11.7.3/S11.7.3_A3_T2.6.js
new file mode 100644
index 000000000..63d3e4263
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.7/11.7.3/S11.7.3_A3_T2.6.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.
+
+/**
+ * Operator x >>> y returns ToNumber(x) >>> ToNumber(y)
+ *
+ * @path ch11/11.7/11.7.3/S11.7.3_A3_T2.6.js
+ * @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/js/src/tests/test262/ch11/11.7/11.7.3/S11.7.3_A3_T2.7.js b/js/src/tests/test262/ch11/11.7/11.7.3/S11.7.3_A3_T2.7.js
new file mode 100644
index 000000000..c19be4a7d
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.7/11.7.3/S11.7.3_A3_T2.7.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.
+
+/**
+ * Operator x >>> y returns ToNumber(x) >>> ToNumber(y)
+ *
+ * @path ch11/11.7/11.7.3/S11.7.3_A3_T2.7.js
+ * @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/js/src/tests/test262/ch11/11.7/11.7.3/S11.7.3_A3_T2.8.js b/js/src/tests/test262/ch11/11.7/11.7.3/S11.7.3_A3_T2.8.js
new file mode 100644
index 000000000..98636ab0f
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.7/11.7.3/S11.7.3_A3_T2.8.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.
+
+/**
+ * Operator x >>> y returns ToNumber(x) >>> ToNumber(y)
+ *
+ * @path ch11/11.7/11.7.3/S11.7.3_A3_T2.8.js
+ * @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/js/src/tests/test262/ch11/11.7/11.7.3/S11.7.3_A3_T2.9.js b/js/src/tests/test262/ch11/11.7/11.7.3/S11.7.3_A3_T2.9.js
new file mode 100644
index 000000000..aacc034f5
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.7/11.7.3/S11.7.3_A3_T2.9.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.
+
+/**
+ * Operator x >>> y returns ToNumber(x) >>> ToNumber(y)
+ *
+ * @path ch11/11.7/11.7.3/S11.7.3_A3_T2.9.js
+ * @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/js/src/tests/test262/ch11/11.7/11.7.3/S11.7.3_A4_T1.js b/js/src/tests/test262/ch11/11.7/11.7.3/S11.7.3_A4_T1.js
new file mode 100644
index 000000000..c05ddc4e5
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.7/11.7.3/S11.7.3_A4_T1.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.
+
+/**
+ * Check operator x >>> y in distinct points
+ *
+ * @path ch11/11.7/11.7.3/S11.7.3_A4_T1.js
+ * @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/js/src/tests/test262/ch11/11.7/11.7.3/S11.7.3_A4_T2.js b/js/src/tests/test262/ch11/11.7/11.7.3/S11.7.3_A4_T2.js
new file mode 100644
index 000000000..641360776
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.7/11.7.3/S11.7.3_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.
+
+/**
+ * Check operator x >>> y in distinct points
+ *
+ * @path ch11/11.7/11.7.3/S11.7.3_A4_T2.js
+ * @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/js/src/tests/test262/ch11/11.7/11.7.3/S11.7.3_A4_T3.js b/js/src/tests/test262/ch11/11.7/11.7.3/S11.7.3_A4_T3.js
new file mode 100644
index 000000000..05cf9e7a2
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.7/11.7.3/S11.7.3_A4_T3.js
@@ -0,0 +1,2651 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * Check operator x >>> y in distinct points
+ *
+ * @path ch11/11.7/11.7.3/S11.7.3_A4_T3.js
+ * @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/js/src/tests/test262/ch11/11.7/11.7.3/S11.7.3_A4_T4.js b/js/src/tests/test262/ch11/11.7/11.7.3/S11.7.3_A4_T4.js
new file mode 100644
index 000000000..b8af33ec2
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.7/11.7.3/S11.7.3_A4_T4.js
@@ -0,0 +1,2651 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * Check operator x >>> y in distinct points
+ *
+ * @path ch11/11.7/11.7.3/S11.7.3_A4_T4.js
+ * @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/js/src/tests/test262/ch11/11.7/11.7.3/S11.7.3_A5.1_T1.js b/js/src/tests/test262/ch11/11.7/11.7.3/S11.7.3_A5.1_T1.js
new file mode 100644
index 000000000..a12bccd07
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.7/11.7.3/S11.7.3_A5.1_T1.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.
+
+/**
+ * Operator x >>> y uses ToUint32(ShiftExpression)
+ *
+ * @path ch11/11.7/11.7.3/S11.7.3_A5.1_T1.js
+ * @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/js/src/tests/test262/ch11/11.7/11.7.3/S11.7.3_A5.2_T1.js b/js/src/tests/test262/ch11/11.7/11.7.3/S11.7.3_A5.2_T1.js
new file mode 100644
index 000000000..84abb3616
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.7/11.7.3/S11.7.3_A5.2_T1.js
@@ -0,0 +1,331 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * Operator x >>> y uses ToUint32(AdditiveExpression) & 31
+ *
+ * @path ch11/11.7/11.7.3/S11.7.3_A5.2_T1.js
+ * @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/js/src/tests/test262/ch11/11.7/11.7.3/browser.js b/js/src/tests/test262/ch11/11.7/11.7.3/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.7/11.7.3/browser.js
diff --git a/js/src/tests/test262/ch11/11.7/11.7.3/shell.js b/js/src/tests/test262/ch11/11.7/11.7.3/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.7/11.7.3/shell.js
diff --git a/js/src/tests/test262/ch11/11.7/browser.js b/js/src/tests/test262/ch11/11.7/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.7/browser.js
diff --git a/js/src/tests/test262/ch11/11.7/shell.js b/js/src/tests/test262/ch11/11.7/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.7/shell.js
diff --git a/js/src/tests/test262/ch11/11.8/11.8.1/S11.8.1_A1.js b/js/src/tests/test262/ch11/11.8/11.8.1/S11.8.1_A1.js
new file mode 100644
index 000000000..5203b7341
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.8/11.8.1/S11.8.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.
+
+/**
+ * White Space and Line Terminator between RelationalExpression and "<" or between "<" and ShiftExpression are allowed
+ *
+ * @path ch11/11.8/11.8.1/S11.8.1_A1.js
+ * @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/js/src/tests/test262/ch11/11.8/11.8.1/S11.8.1_A2.1_T1.js b/js/src/tests/test262/ch11/11.8/11.8.1/S11.8.1_A2.1_T1.js
new file mode 100644
index 000000000..4bcd448cb
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.8/11.8.1/S11.8.1_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.
+
+/**
+ * Operator x < y uses GetValue
+ *
+ * @path ch11/11.8/11.8.1/S11.8.1_A2.1_T1.js
+ * @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/js/src/tests/test262/ch11/11.8/11.8.1/S11.8.1_A2.1_T2.js b/js/src/tests/test262/ch11/11.8/11.8.1/S11.8.1_A2.1_T2.js
new file mode 100644
index 000000000..591c7a7a5
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.8/11.8.1/S11.8.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.
+
+/**
+ * Operator x < y uses GetValue
+ *
+ * @path ch11/11.8/11.8.1/S11.8.1_A2.1_T2.js
+ * @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/js/src/tests/test262/ch11/11.8/11.8.1/S11.8.1_A2.1_T3.js b/js/src/tests/test262/ch11/11.8/11.8.1/S11.8.1_A2.1_T3.js
new file mode 100644
index 000000000..b71cac528
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.8/11.8.1/S11.8.1_A2.1_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.
+
+/**
+ * Operator x < y uses GetValue
+ *
+ * @path ch11/11.8/11.8.1/S11.8.1_A2.1_T3.js
+ * @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/js/src/tests/test262/ch11/11.8/11.8.1/S11.8.1_A2.2_T1.js b/js/src/tests/test262/ch11/11.8/11.8.1/S11.8.1_A2.2_T1.js
new file mode 100644
index 000000000..8641cf4f2
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.8/11.8.1/S11.8.1_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.
+
+/**
+ * Operator x < y uses [[Default Value]]
+ *
+ * @path ch11/11.8/11.8.1/S11.8.1_A2.2_T1.js
+ * @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/js/src/tests/test262/ch11/11.8/11.8.1/S11.8.1_A2.3_T1.js b/js/src/tests/test262/ch11/11.8/11.8.1/S11.8.1_A2.3_T1.js
new file mode 100644
index 000000000..9f7c478ca
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.8/11.8.1/S11.8.1_A2.3_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.
+
+/**
+ * ToNumber(first expression) is called first, and then ToNumber(second expression)
+ *
+ * @path ch11/11.8/11.8.1/S11.8.1_A2.3_T1.js
+ * @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/js/src/tests/test262/ch11/11.8/11.8.1/S11.8.1_A2.4_T1.js b/js/src/tests/test262/ch11/11.8/11.8.1/S11.8.1_A2.4_T1.js
new file mode 100644
index 000000000..739640488
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.8/11.8.1/S11.8.1_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.
+
+/**
+ * First expression is evaluated first, and then second expression
+ *
+ * @path ch11/11.8/11.8.1/S11.8.1_A2.4_T1.js
+ * @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/js/src/tests/test262/ch11/11.8/11.8.1/S11.8.1_A2.4_T2.js b/js/src/tests/test262/ch11/11.8/11.8.1/S11.8.1_A2.4_T2.js
new file mode 100644
index 000000000..acd8c1274
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.8/11.8.1/S11.8.1_A2.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.
+
+/**
+ * First expression is evaluated first, and then second expression
+ *
+ * @path ch11/11.8/11.8.1/S11.8.1_A2.4_T2.js
+ * @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/js/src/tests/test262/ch11/11.8/11.8.1/S11.8.1_A2.4_T3.js b/js/src/tests/test262/ch11/11.8/11.8.1/S11.8.1_A2.4_T3.js
new file mode 100644
index 000000000..657ef95f2
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.8/11.8.1/S11.8.1_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.
+
+/**
+ * First expression is evaluated first, and then second expression
+ *
+ * @path ch11/11.8/11.8.1/S11.8.1_A2.4_T3.js
+ * @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/js/src/tests/test262/ch11/11.8/11.8.1/S11.8.1_A3.1_T1.1.js b/js/src/tests/test262/ch11/11.8/11.8.1/S11.8.1_A3.1_T1.1.js
new file mode 100644
index 000000000..0d01c8f9f
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.8/11.8.1/S11.8.1_A3.1_T1.1.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.
+
+/**
+ * If Type(Primitive(x)) is not String or Type(Primitive(y)) is not String, then operator x < y returns ToNumber(x) < ToNumber(y)
+ *
+ * @path ch11/11.8/11.8.1/S11.8.1_A3.1_T1.1.js
+ * @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/js/src/tests/test262/ch11/11.8/11.8.1/S11.8.1_A3.1_T1.2.js b/js/src/tests/test262/ch11/11.8/11.8.1/S11.8.1_A3.1_T1.2.js
new file mode 100644
index 000000000..afec980fd
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.8/11.8.1/S11.8.1_A3.1_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.
+
+/**
+ * If Type(Primitive(x)) is not String or Type(Primitive(y)) is not String, then operator x < y returns ToNumber(x) < ToNumber(y)
+ *
+ * @path ch11/11.8/11.8.1/S11.8.1_A3.1_T1.2.js
+ * @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/js/src/tests/test262/ch11/11.8/11.8.1/S11.8.1_A3.1_T1.3.js b/js/src/tests/test262/ch11/11.8/11.8.1/S11.8.1_A3.1_T1.3.js
new file mode 100644
index 000000000..7964cd27d
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.8/11.8.1/S11.8.1_A3.1_T1.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.
+
+/**
+ * If Type(Primitive(x)) is not String or Type(Primitive(y)) is not String, then operator x < y returns ToNumber(x) < ToNumber(y)
+ *
+ * @path ch11/11.8/11.8.1/S11.8.1_A3.1_T1.3.js
+ * @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/js/src/tests/test262/ch11/11.8/11.8.1/S11.8.1_A3.1_T2.1.js b/js/src/tests/test262/ch11/11.8/11.8.1/S11.8.1_A3.1_T2.1.js
new file mode 100644
index 000000000..acbeb65db
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.8/11.8.1/S11.8.1_A3.1_T2.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.
+
+/**
+ * If Type(Primitive(x)) is not String or Type(Primitive(y)) is not String, then operator x < y returns ToNumber(x) < ToNumber(y)
+ *
+ * @path ch11/11.8/11.8.1/S11.8.1_A3.1_T2.1.js
+ * @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/js/src/tests/test262/ch11/11.8/11.8.1/S11.8.1_A3.1_T2.2.js b/js/src/tests/test262/ch11/11.8/11.8.1/S11.8.1_A3.1_T2.2.js
new file mode 100644
index 000000000..e67f1c50a
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.8/11.8.1/S11.8.1_A3.1_T2.2.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.
+
+/**
+ * If Type(Primitive(x)) is not String or Type(Primitive(y)) is not String, then operator x < y returns ToNumber(x) < ToNumber(y)
+ *
+ * @path ch11/11.8/11.8.1/S11.8.1_A3.1_T2.2.js
+ * @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/js/src/tests/test262/ch11/11.8/11.8.1/S11.8.1_A3.1_T2.3.js b/js/src/tests/test262/ch11/11.8/11.8.1/S11.8.1_A3.1_T2.3.js
new file mode 100644
index 000000000..32d4fa5fa
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.8/11.8.1/S11.8.1_A3.1_T2.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.
+
+/**
+ * If Type(Primitive(x)) is not String or Type(Primitive(y)) is not String, then operator x < y returns ToNumber(x) < ToNumber(y)
+ *
+ * @path ch11/11.8/11.8.1/S11.8.1_A3.1_T2.3.js
+ * @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/js/src/tests/test262/ch11/11.8/11.8.1/S11.8.1_A3.1_T2.4.js b/js/src/tests/test262/ch11/11.8/11.8.1/S11.8.1_A3.1_T2.4.js
new file mode 100644
index 000000000..19ce587cb
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.8/11.8.1/S11.8.1_A3.1_T2.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.
+
+/**
+ * If Type(Primitive(x)) is not String or Type(Primitive(y)) is not String, then operator x < y returns ToNumber(x) < ToNumber(y)
+ *
+ * @path ch11/11.8/11.8.1/S11.8.1_A3.1_T2.4.js
+ * @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/js/src/tests/test262/ch11/11.8/11.8.1/S11.8.1_A3.1_T2.5.js b/js/src/tests/test262/ch11/11.8/11.8.1/S11.8.1_A3.1_T2.5.js
new file mode 100644
index 000000000..2ec157c85
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.8/11.8.1/S11.8.1_A3.1_T2.5.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.
+
+/**
+ * If Type(Primitive(x)) is not String or Type(Primitive(y)) is not String, then operator x < y returns ToNumber(x) < ToNumber(y)
+ *
+ * @path ch11/11.8/11.8.1/S11.8.1_A3.1_T2.5.js
+ * @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/js/src/tests/test262/ch11/11.8/11.8.1/S11.8.1_A3.1_T2.6.js b/js/src/tests/test262/ch11/11.8/11.8.1/S11.8.1_A3.1_T2.6.js
new file mode 100644
index 000000000..de4ef0016
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.8/11.8.1/S11.8.1_A3.1_T2.6.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.
+
+/**
+ * If Type(Primitive(x)) is not String or Type(Primitive(y)) is not String, then operator x < y returns ToNumber(x) < ToNumber(y)
+ *
+ * @path ch11/11.8/11.8.1/S11.8.1_A3.1_T2.6.js
+ * @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/js/src/tests/test262/ch11/11.8/11.8.1/S11.8.1_A3.1_T2.7.js b/js/src/tests/test262/ch11/11.8/11.8.1/S11.8.1_A3.1_T2.7.js
new file mode 100644
index 000000000..97e9c8fdd
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.8/11.8.1/S11.8.1_A3.1_T2.7.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.
+
+/**
+ * If Type(Primitive(x)) is not String or Type(Primitive(y)) is not String, then operator x < y returns ToNumber(x) < ToNumber(y)
+ *
+ * @path ch11/11.8/11.8.1/S11.8.1_A3.1_T2.7.js
+ * @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/js/src/tests/test262/ch11/11.8/11.8.1/S11.8.1_A3.1_T2.8.js b/js/src/tests/test262/ch11/11.8/11.8.1/S11.8.1_A3.1_T2.8.js
new file mode 100644
index 000000000..dcd5dfef8
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.8/11.8.1/S11.8.1_A3.1_T2.8.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.
+
+/**
+ * If Type(Primitive(x)) is not String or Type(Primitive(y)) is not String, then operator x < y returns ToNumber(x) < ToNumber(y)
+ *
+ * @path ch11/11.8/11.8.1/S11.8.1_A3.1_T2.8.js
+ * @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/js/src/tests/test262/ch11/11.8/11.8.1/S11.8.1_A3.1_T2.9.js b/js/src/tests/test262/ch11/11.8/11.8.1/S11.8.1_A3.1_T2.9.js
new file mode 100644
index 000000000..3e47b7d07
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.8/11.8.1/S11.8.1_A3.1_T2.9.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.
+
+/**
+ * If Type(Primitive(x)) is not String or Type(Primitive(y)) is not String, then operator x < y returns ToNumber(x) < ToNumber(y)
+ *
+ * @path ch11/11.8/11.8.1/S11.8.1_A3.1_T2.9.js
+ * @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/js/src/tests/test262/ch11/11.8/11.8.1/S11.8.1_A3.2_T1.1.js b/js/src/tests/test262/ch11/11.8/11.8.1/S11.8.1_A3.2_T1.1.js
new file mode 100644
index 000000000..9e1cb7811
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.8/11.8.1/S11.8.1_A3.2_T1.1.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.
+
+/**
+ * Operator x < y returns ToString(x) < ToString(y), if Type(Primitive(x)) is String and Type(Primitive(y)) is String
+ *
+ * @path ch11/11.8/11.8.1/S11.8.1_A3.2_T1.1.js
+ * @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/js/src/tests/test262/ch11/11.8/11.8.1/S11.8.1_A3.2_T1.2.js b/js/src/tests/test262/ch11/11.8/11.8.1/S11.8.1_A3.2_T1.2.js
new file mode 100644
index 000000000..47068903b
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.8/11.8.1/S11.8.1_A3.2_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.
+
+/**
+ * Operator x < y returns ToString(x) < ToString(y), if Type(Primitive(x)) is String and Type(Primitive(y)) is String
+ *
+ * @path ch11/11.8/11.8.1/S11.8.1_A3.2_T1.2.js
+ * @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/js/src/tests/test262/ch11/11.8/11.8.1/S11.8.1_A4.1.js b/js/src/tests/test262/ch11/11.8/11.8.1/S11.8.1_A4.1.js
new file mode 100644
index 000000000..5dee6e657
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.8/11.8.1/S11.8.1_A4.1.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.
+
+/**
+ * If x is NaN, return false (if result in 11.8.5 is undefined, return false)
+ *
+ * @path ch11/11.8/11.8.1/S11.8.1_A4.1.js
+ * @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/js/src/tests/test262/ch11/11.8/11.8.1/S11.8.1_A4.10.js b/js/src/tests/test262/ch11/11.8/11.8.1/S11.8.1_A4.10.js
new file mode 100644
index 000000000..2caacdc42
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.8/11.8.1/S11.8.1_A4.10.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.
+
+/**
+ * If y is a prefix of x, return false
+ *
+ * @path ch11/11.8/11.8.1/S11.8.1_A4.10.js
+ * @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/js/src/tests/test262/ch11/11.8/11.8.1/S11.8.1_A4.11.js b/js/src/tests/test262/ch11/11.8/11.8.1/S11.8.1_A4.11.js
new file mode 100644
index 000000000..2c87da030
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.8/11.8.1/S11.8.1_A4.11.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.
+
+/**
+ * If x is a prefix of y and x !== y, return true
+ *
+ * @path ch11/11.8/11.8.1/S11.8.1_A4.11.js
+ * @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/js/src/tests/test262/ch11/11.8/11.8.1/S11.8.1_A4.12_T1.js b/js/src/tests/test262/ch11/11.8/11.8.1/S11.8.1_A4.12_T1.js
new file mode 100644
index 000000000..b8f0eb78d
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.8/11.8.1/S11.8.1_A4.12_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.
+
+/**
+ * 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
+ *
+ * @path ch11/11.8/11.8.1/S11.8.1_A4.12_T1.js
+ * @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/js/src/tests/test262/ch11/11.8/11.8.1/S11.8.1_A4.12_T2.js b/js/src/tests/test262/ch11/11.8/11.8.1/S11.8.1_A4.12_T2.js
new file mode 100644
index 000000000..0b0e2d5fb
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.8/11.8.1/S11.8.1_A4.12_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.
+
+/**
+ * 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
+ *
+ * @path ch11/11.8/11.8.1/S11.8.1_A4.12_T2.js
+ * @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/js/src/tests/test262/ch11/11.8/11.8.1/S11.8.1_A4.2.js b/js/src/tests/test262/ch11/11.8/11.8.1/S11.8.1_A4.2.js
new file mode 100644
index 000000000..2ab4adeb4
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.8/11.8.1/S11.8.1_A4.2.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.
+
+/**
+ * If y is NaN, return false (if result in 11.8.5 is undefined, return false)
+ *
+ * @path ch11/11.8/11.8.1/S11.8.1_A4.2.js
+ * @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/js/src/tests/test262/ch11/11.8/11.8.1/S11.8.1_A4.3.js b/js/src/tests/test262/ch11/11.8/11.8.1/S11.8.1_A4.3.js
new file mode 100644
index 000000000..1fa8a4988
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.8/11.8.1/S11.8.1_A4.3.js
@@ -0,0 +1,47 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * If x and y are the same number value, return false
+ *
+ * @path ch11/11.8/11.8.1/S11.8.1_A4.3.js
+ * @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/js/src/tests/test262/ch11/11.8/11.8.1/S11.8.1_A4.4.js b/js/src/tests/test262/ch11/11.8/11.8.1/S11.8.1_A4.4.js
new file mode 100644
index 000000000..d04541e42
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.8/11.8.1/S11.8.1_A4.4.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.
+
+/**
+ * If x and y are +0 and -0, return false
+ *
+ * @path ch11/11.8/11.8.1/S11.8.1_A4.4.js
+ * @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/js/src/tests/test262/ch11/11.8/11.8.1/S11.8.1_A4.5.js b/js/src/tests/test262/ch11/11.8/11.8.1/S11.8.1_A4.5.js
new file mode 100644
index 000000000..d874e0fde
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.8/11.8.1/S11.8.1_A4.5.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.
+
+/**
+ * If x is +Infinity, return false
+ *
+ * @path ch11/11.8/11.8.1/S11.8.1_A4.5.js
+ * @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/js/src/tests/test262/ch11/11.8/11.8.1/S11.8.1_A4.6.js b/js/src/tests/test262/ch11/11.8/11.8.1/S11.8.1_A4.6.js
new file mode 100644
index 000000000..2dce0a45a
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.8/11.8.1/S11.8.1_A4.6.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.
+
+/**
+ * If y is +Infinity and x !== y, return true
+ *
+ * @path ch11/11.8/11.8.1/S11.8.1_A4.6.js
+ * @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/js/src/tests/test262/ch11/11.8/11.8.1/S11.8.1_A4.7.js b/js/src/tests/test262/ch11/11.8/11.8.1/S11.8.1_A4.7.js
new file mode 100644
index 000000000..a54ec57be
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.8/11.8.1/S11.8.1_A4.7.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.
+
+/**
+ * If x is -Infinity and x !== y, return true
+ *
+ * @path ch11/11.8/11.8.1/S11.8.1_A4.7.js
+ * @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/js/src/tests/test262/ch11/11.8/11.8.1/S11.8.1_A4.8.js b/js/src/tests/test262/ch11/11.8/11.8.1/S11.8.1_A4.8.js
new file mode 100644
index 000000000..ac5202d5a
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.8/11.8.1/S11.8.1_A4.8.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.
+
+/**
+ * If y is -Infinity, return false
+ *
+ * @path ch11/11.8/11.8.1/S11.8.1_A4.8.js
+ * @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/js/src/tests/test262/ch11/11.8/11.8.1/S11.8.1_A4.9.js b/js/src/tests/test262/ch11/11.8/11.8.1/S11.8.1_A4.9.js
new file mode 100644
index 000000000..32839492c
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.8/11.8.1/S11.8.1_A4.9.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.
+
+/**
+ * If x is less than y and these values are both finite non-zero, return true; otherwise, return false
+ *
+ * @path ch11/11.8/11.8.1/S11.8.1_A4.9.js
+ * @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/js/src/tests/test262/ch11/11.8/11.8.1/browser.js b/js/src/tests/test262/ch11/11.8/11.8.1/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.8/11.8.1/browser.js
diff --git a/js/src/tests/test262/ch11/11.8/11.8.1/shell.js b/js/src/tests/test262/ch11/11.8/11.8.1/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.8/11.8.1/shell.js
diff --git a/js/src/tests/test262/ch11/11.8/11.8.2/11.8.2-1.js b/js/src/tests/test262/ch11/11.8/11.8.2/11.8.2-1.js
new file mode 100644
index 000000000..97270dca2
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.8/11.8.2/11.8.2-1.js
@@ -0,0 +1,31 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch11/11.8/11.8.2/11.8.2-1.js
+ * @description 11.8.2 Greater-than Operator - Partial left to right order enforced when using Greater-than operator: valueOf > valueOf
+ */
+
+
+function testcase() {
+ var accessed = false;
+ var obj1 = {
+ valueOf: function () {
+ accessed = true;
+ return 3;
+ }
+ };
+ var obj2 = {
+ valueOf: function () {
+ if (accessed === true) {
+ return 4;
+ } else {
+ return 2;
+ }
+ }
+ };
+ return !(obj1 > obj2);
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch11/11.8/11.8.2/11.8.2-2.js b/js/src/tests/test262/ch11/11.8/11.8.2/11.8.2-2.js
new file mode 100644
index 000000000..248452e99
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.8/11.8.2/11.8.2-2.js
@@ -0,0 +1,31 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch11/11.8/11.8.2/11.8.2-2.js
+ * @description 11.8.2 Greater-than Operator - Partial left to right order enforced when using Greater-than operator: valueOf > toString
+ */
+
+
+function testcase() {
+ var accessed = false;
+ var obj1 = {
+ valueOf: function () {
+ accessed = true;
+ return 3;
+ }
+ };
+ var obj2 = {
+ toString: function () {
+ if (accessed === true) {
+ return 4;
+ } else {
+ return 2;
+ }
+ }
+ };
+ return !(obj1 > obj2);
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch11/11.8/11.8.2/11.8.2-3.js b/js/src/tests/test262/ch11/11.8/11.8.2/11.8.2-3.js
new file mode 100644
index 000000000..b0db66533
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.8/11.8.2/11.8.2-3.js
@@ -0,0 +1,31 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch11/11.8/11.8.2/11.8.2-3.js
+ * @description 11.8.2 Greater-than Operator - Partial left to right order enforced when using Greater-than operator: toString > valueOf
+ */
+
+
+function testcase() {
+ var accessed = false;
+ var obj1 = {
+ toString: function () {
+ accessed = true;
+ return 3;
+ }
+ };
+ var obj2 = {
+ valueOf: function () {
+ if (accessed === true) {
+ return 4;
+ } else {
+ return 2;
+ }
+ }
+ };
+ return !(obj1 > obj2);
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch11/11.8/11.8.2/11.8.2-4.js b/js/src/tests/test262/ch11/11.8/11.8.2/11.8.2-4.js
new file mode 100644
index 000000000..50817010b
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.8/11.8.2/11.8.2-4.js
@@ -0,0 +1,31 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch11/11.8/11.8.2/11.8.2-4.js
+ * @description 11.8.2 Greater-than Operator - Partial left to right order enforced when using Greater-than operator: toString > toString
+ */
+
+
+function testcase() {
+ var accessed = false;
+ var obj1 = {
+ toString: function () {
+ accessed = true;
+ return 3;
+ }
+ };
+ var obj2 = {
+ toString: function () {
+ if (accessed === true) {
+ return 4;
+ } else {
+ return 2;
+ }
+ }
+ };
+ return !(obj1 > obj2);
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch11/11.8/11.8.2/S11.8.2_A1.js b/js/src/tests/test262/ch11/11.8/11.8.2/S11.8.2_A1.js
new file mode 100644
index 000000000..e2d072282
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.8/11.8.2/S11.8.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.
+
+/**
+ * White Space and Line Terminator between RelationalExpression and ">" or ">" and ShiftExpression are allowed
+ *
+ * @path ch11/11.8/11.8.2/S11.8.2_A1.js
+ * @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/js/src/tests/test262/ch11/11.8/11.8.2/S11.8.2_A2.1_T1.js b/js/src/tests/test262/ch11/11.8/11.8.2/S11.8.2_A2.1_T1.js
new file mode 100644
index 000000000..9ae91af51
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.8/11.8.2/S11.8.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.
+
+/**
+ * Operator x > y uses GetValue
+ *
+ * @path ch11/11.8/11.8.2/S11.8.2_A2.1_T1.js
+ * @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/js/src/tests/test262/ch11/11.8/11.8.2/S11.8.2_A2.1_T2.js b/js/src/tests/test262/ch11/11.8/11.8.2/S11.8.2_A2.1_T2.js
new file mode 100644
index 000000000..c6c0a2c71
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.8/11.8.2/S11.8.2_A2.1_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.
+
+/**
+ * Operator x > y uses GetValue
+ *
+ * @path ch11/11.8/11.8.2/S11.8.2_A2.1_T2.js
+ * @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/js/src/tests/test262/ch11/11.8/11.8.2/S11.8.2_A2.1_T3.js b/js/src/tests/test262/ch11/11.8/11.8.2/S11.8.2_A2.1_T3.js
new file mode 100644
index 000000000..bf7dfc5e7
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.8/11.8.2/S11.8.2_A2.1_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.
+
+/**
+ * Operator x > y uses GetValue
+ *
+ * @path ch11/11.8/11.8.2/S11.8.2_A2.1_T3.js
+ * @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/js/src/tests/test262/ch11/11.8/11.8.2/S11.8.2_A2.2_T1.js b/js/src/tests/test262/ch11/11.8/11.8.2/S11.8.2_A2.2_T1.js
new file mode 100644
index 000000000..e8d7595ba
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.8/11.8.2/S11.8.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.
+
+/**
+ * Operator x > y uses [[Default Value]]
+ *
+ * @path ch11/11.8/11.8.2/S11.8.2_A2.2_T1.js
+ * @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/js/src/tests/test262/ch11/11.8/11.8.2/S11.8.2_A2.3_T1.js b/js/src/tests/test262/ch11/11.8/11.8.2/S11.8.2_A2.3_T1.js
new file mode 100644
index 000000000..ab2e5a0e5
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.8/11.8.2/S11.8.2_A2.3_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.
+
+/**
+ * In ES5, First expression should be evaluated first.
+ *
+ * @path ch11/11.8/11.8.2/S11.8.2_A2.3_T1.js
+ * @description Checking that operands of a "<" evaluate left-to-right
+ */
+
+//CHECK#1
+var x = { valueOf: function () { throw "x"; } };
+var y = { valueOf: function () { throw "y"; } };
+try {
+ x > y;
+ $ERROR('#1.1: Should have thrown');
+} catch (e) {
+ if (e === "y") {
+ $ERROR('#1.2: First expression should be evaluated first');
+ } else {
+ if (e !== "x") {
+ $ERROR('#1.3: Failed with: ' + e);
+ }
+ }
+}
+
diff --git a/js/src/tests/test262/ch11/11.8/11.8.2/S11.8.2_A2.4_T1.js b/js/src/tests/test262/ch11/11.8/11.8.2/S11.8.2_A2.4_T1.js
new file mode 100644
index 000000000..ac5f1b540
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.8/11.8.2/S11.8.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.
+
+/**
+ * First expression is evaluated first, and then second expression
+ *
+ * @path ch11/11.8/11.8.2/S11.8.2_A2.4_T1.js
+ * @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/js/src/tests/test262/ch11/11.8/11.8.2/S11.8.2_A2.4_T2.js b/js/src/tests/test262/ch11/11.8/11.8.2/S11.8.2_A2.4_T2.js
new file mode 100644
index 000000000..274f117cb
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.8/11.8.2/S11.8.2_A2.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.
+
+/**
+ * First expression is evaluated first, and then second expression
+ *
+ * @path ch11/11.8/11.8.2/S11.8.2_A2.4_T2.js
+ * @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/js/src/tests/test262/ch11/11.8/11.8.2/S11.8.2_A2.4_T3.js b/js/src/tests/test262/ch11/11.8/11.8.2/S11.8.2_A2.4_T3.js
new file mode 100644
index 000000000..d3228fdce
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.8/11.8.2/S11.8.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.
+
+/**
+ * First expression is evaluated first, and then second expression
+ *
+ * @path ch11/11.8/11.8.2/S11.8.2_A2.4_T3.js
+ * @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/js/src/tests/test262/ch11/11.8/11.8.2/S11.8.2_A3.1_T1.1.js b/js/src/tests/test262/ch11/11.8/11.8.2/S11.8.2_A3.1_T1.1.js
new file mode 100644
index 000000000..4f69c859e
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.8/11.8.2/S11.8.2_A3.1_T1.1.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.
+
+/**
+ * If Type(Primitive(x)) is not String or Type(Primitive(y)) is not String, then operator x > y returns ToNumber(x) > ToNumber(y)
+ *
+ * @path ch11/11.8/11.8.2/S11.8.2_A3.1_T1.1.js
+ * @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/js/src/tests/test262/ch11/11.8/11.8.2/S11.8.2_A3.1_T1.2.js b/js/src/tests/test262/ch11/11.8/11.8.2/S11.8.2_A3.1_T1.2.js
new file mode 100644
index 000000000..2a076c6c6
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.8/11.8.2/S11.8.2_A3.1_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.
+
+/**
+ * If Type(Primitive(x)) is not String or Type(Primitive(y)) is not String, then operator x > y returns ToNumber(x) > ToNumber(y)
+ *
+ * @path ch11/11.8/11.8.2/S11.8.2_A3.1_T1.2.js
+ * @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/js/src/tests/test262/ch11/11.8/11.8.2/S11.8.2_A3.1_T1.3.js b/js/src/tests/test262/ch11/11.8/11.8.2/S11.8.2_A3.1_T1.3.js
new file mode 100644
index 000000000..597266349
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.8/11.8.2/S11.8.2_A3.1_T1.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.
+
+/**
+ * If Type(Primitive(x)) is not String or Type(Primitive(y)) is not String, then operator x > y returns ToNumber(x) > ToNumber(y)
+ *
+ * @path ch11/11.8/11.8.2/S11.8.2_A3.1_T1.3.js
+ * @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/js/src/tests/test262/ch11/11.8/11.8.2/S11.8.2_A3.1_T2.1.js b/js/src/tests/test262/ch11/11.8/11.8.2/S11.8.2_A3.1_T2.1.js
new file mode 100644
index 000000000..81ba83400
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.8/11.8.2/S11.8.2_A3.1_T2.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.
+
+/**
+ * If Type(Primitive(x)) is not String or Type(Primitive(y)) is not String, then operator x > y returns ToNumber(x) > ToNumber(y)
+ *
+ * @path ch11/11.8/11.8.2/S11.8.2_A3.1_T2.1.js
+ * @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/js/src/tests/test262/ch11/11.8/11.8.2/S11.8.2_A3.1_T2.2.js b/js/src/tests/test262/ch11/11.8/11.8.2/S11.8.2_A3.1_T2.2.js
new file mode 100644
index 000000000..4d6f8fc81
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.8/11.8.2/S11.8.2_A3.1_T2.2.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.
+
+/**
+ * If Type(Primitive(x)) is not String or Type(Primitive(y)) is not String, then operator x > y returns ToNumber(x) > ToNumber(y)
+ *
+ * @path ch11/11.8/11.8.2/S11.8.2_A3.1_T2.2.js
+ * @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/js/src/tests/test262/ch11/11.8/11.8.2/S11.8.2_A3.1_T2.3.js b/js/src/tests/test262/ch11/11.8/11.8.2/S11.8.2_A3.1_T2.3.js
new file mode 100644
index 000000000..63ec06aac
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.8/11.8.2/S11.8.2_A3.1_T2.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.
+
+/**
+ * If Type(Primitive(x)) is not String or Type(Primitive(y)) is not String, then operator x > y returns ToNumber(x) > ToNumber(y)
+ *
+ * @path ch11/11.8/11.8.2/S11.8.2_A3.1_T2.3.js
+ * @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/js/src/tests/test262/ch11/11.8/11.8.2/S11.8.2_A3.1_T2.4.js b/js/src/tests/test262/ch11/11.8/11.8.2/S11.8.2_A3.1_T2.4.js
new file mode 100644
index 000000000..d98572cc5
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.8/11.8.2/S11.8.2_A3.1_T2.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.
+
+/**
+ * If Type(Primitive(x)) is not String or Type(Primitive(y)) is not String, then operator x > y returns ToNumber(x) > ToNumber(y)
+ *
+ * @path ch11/11.8/11.8.2/S11.8.2_A3.1_T2.4.js
+ * @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/js/src/tests/test262/ch11/11.8/11.8.2/S11.8.2_A3.1_T2.5.js b/js/src/tests/test262/ch11/11.8/11.8.2/S11.8.2_A3.1_T2.5.js
new file mode 100644
index 000000000..b739bd4dc
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.8/11.8.2/S11.8.2_A3.1_T2.5.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.
+
+/**
+ * If Type(Primitive(x)) is not String or Type(Primitive(y)) is not String, then operator x > y returns ToNumber(x) > ToNumber(y)
+ *
+ * @path ch11/11.8/11.8.2/S11.8.2_A3.1_T2.5.js
+ * @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/js/src/tests/test262/ch11/11.8/11.8.2/S11.8.2_A3.1_T2.6.js b/js/src/tests/test262/ch11/11.8/11.8.2/S11.8.2_A3.1_T2.6.js
new file mode 100644
index 000000000..839884f83
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.8/11.8.2/S11.8.2_A3.1_T2.6.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.
+
+/**
+ * If Type(Primitive(x)) is not String or Type(Primitive(y)) is not String, then operator x > y returns ToNumber(x) > ToNumber(y)
+ *
+ * @path ch11/11.8/11.8.2/S11.8.2_A3.1_T2.6.js
+ * @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/js/src/tests/test262/ch11/11.8/11.8.2/S11.8.2_A3.1_T2.7.js b/js/src/tests/test262/ch11/11.8/11.8.2/S11.8.2_A3.1_T2.7.js
new file mode 100644
index 000000000..5b44d0a70
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.8/11.8.2/S11.8.2_A3.1_T2.7.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.
+
+/**
+ * If Type(Primitive(x)) is not String or Type(Primitive(y)) is not String, then operator x > y returns ToNumber(x) > ToNumber(y)
+ *
+ * @path ch11/11.8/11.8.2/S11.8.2_A3.1_T2.7.js
+ * @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/js/src/tests/test262/ch11/11.8/11.8.2/S11.8.2_A3.1_T2.8.js b/js/src/tests/test262/ch11/11.8/11.8.2/S11.8.2_A3.1_T2.8.js
new file mode 100644
index 000000000..3a3c48e7a
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.8/11.8.2/S11.8.2_A3.1_T2.8.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.
+
+/**
+ * If Type(Primitive(x)) is not String or Type(Primitive(y)) is not String, then operator x > y returns ToNumber(x) > ToNumber(y)
+ *
+ * @path ch11/11.8/11.8.2/S11.8.2_A3.1_T2.8.js
+ * @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/js/src/tests/test262/ch11/11.8/11.8.2/S11.8.2_A3.1_T2.9.js b/js/src/tests/test262/ch11/11.8/11.8.2/S11.8.2_A3.1_T2.9.js
new file mode 100644
index 000000000..32c04b23a
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.8/11.8.2/S11.8.2_A3.1_T2.9.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.
+
+/**
+ * If Type(Primitive(x)) is not String or Type(Primitive(y)) is not String, then operator x > y returns ToNumber(x) > ToNumber(y)
+ *
+ * @path ch11/11.8/11.8.2/S11.8.2_A3.1_T2.9.js
+ * @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/js/src/tests/test262/ch11/11.8/11.8.2/S11.8.2_A3.2_T1.1.js b/js/src/tests/test262/ch11/11.8/11.8.2/S11.8.2_A3.2_T1.1.js
new file mode 100644
index 000000000..fb0bcb016
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.8/11.8.2/S11.8.2_A3.2_T1.1.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.
+
+/**
+ * If Type(Primitive(x)) is String and Type(Primitive(y)) is String, then operator x > y returns ToString(x) > ToString(y)
+ *
+ * @path ch11/11.8/11.8.2/S11.8.2_A3.2_T1.1.js
+ * @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/js/src/tests/test262/ch11/11.8/11.8.2/S11.8.2_A3.2_T1.2.js b/js/src/tests/test262/ch11/11.8/11.8.2/S11.8.2_A3.2_T1.2.js
new file mode 100644
index 000000000..cf6e2889b
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.8/11.8.2/S11.8.2_A3.2_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.
+
+/**
+ * If Type(Primitive(x)) is String and Type(Primitive(y)) is String, then operator x > y returns ToString(x) > ToString(y)
+ *
+ * @path ch11/11.8/11.8.2/S11.8.2_A3.2_T1.2.js
+ * @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/js/src/tests/test262/ch11/11.8/11.8.2/S11.8.2_A4.1.js b/js/src/tests/test262/ch11/11.8/11.8.2/S11.8.2_A4.1.js
new file mode 100644
index 000000000..a36cb0b92
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.8/11.8.2/S11.8.2_A4.1.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.
+
+/**
+ * If x is NaN, return false (if result in 11.8.5 is undefined, return false)
+ *
+ * @path ch11/11.8/11.8.2/S11.8.2_A4.1.js
+ * @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/js/src/tests/test262/ch11/11.8/11.8.2/S11.8.2_A4.10.js b/js/src/tests/test262/ch11/11.8/11.8.2/S11.8.2_A4.10.js
new file mode 100644
index 000000000..eef094d97
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.8/11.8.2/S11.8.2_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.
+
+/**
+ * If x is a prefix of y, return false
+ *
+ * @path ch11/11.8/11.8.2/S11.8.2_A4.10.js
+ * @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/js/src/tests/test262/ch11/11.8/11.8.2/S11.8.2_A4.11.js b/js/src/tests/test262/ch11/11.8/11.8.2/S11.8.2_A4.11.js
new file mode 100644
index 000000000..76da4cc14
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.8/11.8.2/S11.8.2_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.
+
+/**
+ * If y is a prefix of x and x !== y, return true
+ *
+ * @path ch11/11.8/11.8.2/S11.8.2_A4.11.js
+ * @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/js/src/tests/test262/ch11/11.8/11.8.2/S11.8.2_A4.12_T1.js b/js/src/tests/test262/ch11/11.8/11.8.2/S11.8.2_A4.12_T1.js
new file mode 100644
index 000000000..4bd4fb2ab
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.8/11.8.2/S11.8.2_A4.12_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.
+
+/**
+ * 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
+ *
+ * @path ch11/11.8/11.8.2/S11.8.2_A4.12_T1.js
+ * @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/js/src/tests/test262/ch11/11.8/11.8.2/S11.8.2_A4.12_T2.js b/js/src/tests/test262/ch11/11.8/11.8.2/S11.8.2_A4.12_T2.js
new file mode 100644
index 000000000..ab16d98cb
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.8/11.8.2/S11.8.2_A4.12_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.
+
+/**
+ * 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
+ *
+ * @path ch11/11.8/11.8.2/S11.8.2_A4.12_T2.js
+ * @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/js/src/tests/test262/ch11/11.8/11.8.2/S11.8.2_A4.2.js b/js/src/tests/test262/ch11/11.8/11.8.2/S11.8.2_A4.2.js
new file mode 100644
index 000000000..1e81c52fe
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.8/11.8.2/S11.8.2_A4.2.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.
+
+/**
+ * If y is NaN, return false (if result in 11.8.5 is undefined, return false)
+ *
+ * @path ch11/11.8/11.8.2/S11.8.2_A4.2.js
+ * @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/js/src/tests/test262/ch11/11.8/11.8.2/S11.8.2_A4.3.js b/js/src/tests/test262/ch11/11.8/11.8.2/S11.8.2_A4.3.js
new file mode 100644
index 000000000..8890a00e1
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.8/11.8.2/S11.8.2_A4.3.js
@@ -0,0 +1,47 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * If x and y are the same number value, return false
+ *
+ * @path ch11/11.8/11.8.2/S11.8.2_A4.3.js
+ * @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/js/src/tests/test262/ch11/11.8/11.8.2/S11.8.2_A4.4.js b/js/src/tests/test262/ch11/11.8/11.8.2/S11.8.2_A4.4.js
new file mode 100644
index 000000000..70a5440ca
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.8/11.8.2/S11.8.2_A4.4.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.
+
+/**
+ * If either variable x or y is +0 and the other is -0, return false
+ *
+ * @path ch11/11.8/11.8.2/S11.8.2_A4.4.js
+ * @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/js/src/tests/test262/ch11/11.8/11.8.2/S11.8.2_A4.5.js b/js/src/tests/test262/ch11/11.8/11.8.2/S11.8.2_A4.5.js
new file mode 100644
index 000000000..79d3bde31
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.8/11.8.2/S11.8.2_A4.5.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.
+
+/**
+ * If x is +Infinity and x !== y, return true
+ *
+ * @path ch11/11.8/11.8.2/S11.8.2_A4.5.js
+ * @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/js/src/tests/test262/ch11/11.8/11.8.2/S11.8.2_A4.6.js b/js/src/tests/test262/ch11/11.8/11.8.2/S11.8.2_A4.6.js
new file mode 100644
index 000000000..aa96e699d
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.8/11.8.2/S11.8.2_A4.6.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.
+
+/**
+ * If y is +Infinity, return false
+ *
+ * @path ch11/11.8/11.8.2/S11.8.2_A4.6.js
+ * @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/js/src/tests/test262/ch11/11.8/11.8.2/S11.8.2_A4.7.js b/js/src/tests/test262/ch11/11.8/11.8.2/S11.8.2_A4.7.js
new file mode 100644
index 000000000..bc06818cc
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.8/11.8.2/S11.8.2_A4.7.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.
+
+/**
+ * If x is -Infinity, return false
+ *
+ * @path ch11/11.8/11.8.2/S11.8.2_A4.7.js
+ * @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/js/src/tests/test262/ch11/11.8/11.8.2/S11.8.2_A4.8.js b/js/src/tests/test262/ch11/11.8/11.8.2/S11.8.2_A4.8.js
new file mode 100644
index 000000000..3a3156114
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.8/11.8.2/S11.8.2_A4.8.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.
+
+/**
+ * If y is -Infinity and x !== y, return true
+ *
+ * @path ch11/11.8/11.8.2/S11.8.2_A4.8.js
+ * @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/js/src/tests/test262/ch11/11.8/11.8.2/S11.8.2_A4.9.js b/js/src/tests/test262/ch11/11.8/11.8.2/S11.8.2_A4.9.js
new file mode 100644
index 000000000..a31255368
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.8/11.8.2/S11.8.2_A4.9.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.
+
+/**
+ * If is x greater than y and these values are both finite non-zero, return true; otherwise, return false
+ *
+ * @path ch11/11.8/11.8.2/S11.8.2_A4.9.js
+ * @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/js/src/tests/test262/ch11/11.8/11.8.2/browser.js b/js/src/tests/test262/ch11/11.8/11.8.2/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.8/11.8.2/browser.js
diff --git a/js/src/tests/test262/ch11/11.8/11.8.2/shell.js b/js/src/tests/test262/ch11/11.8/11.8.2/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.8/11.8.2/shell.js
diff --git a/js/src/tests/test262/ch11/11.8/11.8.3/11.8.3-1.js b/js/src/tests/test262/ch11/11.8/11.8.3/11.8.3-1.js
new file mode 100644
index 000000000..4dc765ee2
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.8/11.8.3/11.8.3-1.js
@@ -0,0 +1,31 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch11/11.8/11.8.3/11.8.3-1.js
+ * @description 11.8.3 Less-than-or-equal Operator - Partial left to right order enforced when using Less-than-or-equal operator: valueOf <= valueOf
+ */
+
+
+function testcase() {
+ var accessed = false;
+ var obj1 = {
+ valueOf: function () {
+ accessed = true;
+ return 3;
+ }
+ };
+ var obj2 = {
+ valueOf: function () {
+ if (accessed === true) {
+ return 4;
+ } else {
+ return 2;
+ }
+ }
+ };
+ return (obj1 <= obj2);
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch11/11.8/11.8.3/11.8.3-2.js b/js/src/tests/test262/ch11/11.8/11.8.3/11.8.3-2.js
new file mode 100644
index 000000000..0ff108b51
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.8/11.8.3/11.8.3-2.js
@@ -0,0 +1,31 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch11/11.8/11.8.3/11.8.3-2.js
+ * @description 11.8.3 Less-than-or-equal Operator - Partial left to right order enforced when using Less-than-or-equal operator: valueOf <= toString
+ */
+
+
+function testcase() {
+ var accessed = false;
+ var obj1 = {
+ valueOf: function () {
+ accessed = true;
+ return 3;
+ }
+ };
+ var obj2 = {
+ toString: function () {
+ if (accessed === true) {
+ return 4;
+ } else {
+ return 2;
+ }
+ }
+ };
+ return (obj1 <= obj2);
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch11/11.8/11.8.3/11.8.3-3.js b/js/src/tests/test262/ch11/11.8/11.8.3/11.8.3-3.js
new file mode 100644
index 000000000..2f5deae83
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.8/11.8.3/11.8.3-3.js
@@ -0,0 +1,31 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch11/11.8/11.8.3/11.8.3-3.js
+ * @description 11.8.3 Less-than-or-equal Operator - Partial left to right order enforced when using Less-than-or-equal operator: toString <= valueOf
+ */
+
+
+function testcase() {
+ var accessed = false;
+ var obj1 = {
+ toString: function () {
+ accessed = true;
+ return 3;
+ }
+ };
+ var obj2 = {
+ valueOf: function () {
+ if (accessed === true) {
+ return 4;
+ } else {
+ return 2;
+ }
+ }
+ };
+ return (obj1 <= obj2);
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch11/11.8/11.8.3/11.8.3-4.js b/js/src/tests/test262/ch11/11.8/11.8.3/11.8.3-4.js
new file mode 100644
index 000000000..9105f9e6f
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.8/11.8.3/11.8.3-4.js
@@ -0,0 +1,31 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch11/11.8/11.8.3/11.8.3-4.js
+ * @description 11.8.3 Less-than-or-equal Operator - Partial left to right order enforced when using Less-than-or-equal operator: toString <= toString
+ */
+
+
+function testcase() {
+ var accessed = false;
+ var obj1 = {
+ toString: function () {
+ accessed = true;
+ return 3;
+ }
+ };
+ var obj2 = {
+ toString: function () {
+ if (accessed === true) {
+ return 4;
+ } else {
+ return 2;
+ }
+ }
+ };
+ return (obj1 <= obj2);
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch11/11.8/11.8.3/11.8.3-5.js b/js/src/tests/test262/ch11/11.8/11.8.3/11.8.3-5.js
new file mode 100644
index 000000000..9356ff34e
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.8/11.8.3/11.8.3-5.js
@@ -0,0 +1,31 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch11/11.8/11.8.3/11.8.3-5.js
+ * @description 11.8.3 Less-than-or-equal Operator - Partial left to right order enforced when using Less-than-or-equal operator: valueOf <= valueOf
+ */
+
+
+function testcase() {
+ var accessed = false;
+ var obj1 = {
+ valueOf: function () {
+ accessed = true;
+ return 3;
+ }
+ };
+ var obj2 = {
+ valueOf: function () {
+ if (accessed === true) {
+ return 3;
+ } else {
+ return 2;
+ }
+ }
+ };
+ return (obj1 <= obj2);
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch11/11.8/11.8.3/S11.8.3_A1.js b/js/src/tests/test262/ch11/11.8/11.8.3/S11.8.3_A1.js
new file mode 100644
index 000000000..905571139
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.8/11.8.3/S11.8.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.
+
+/**
+ * White Space and Line Terminator between RelationalExpression and "<=" or between "<=" and ShiftExpression are allowed
+ *
+ * @path ch11/11.8/11.8.3/S11.8.3_A1.js
+ * @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/js/src/tests/test262/ch11/11.8/11.8.3/S11.8.3_A2.1_T1.js b/js/src/tests/test262/ch11/11.8/11.8.3/S11.8.3_A2.1_T1.js
new file mode 100644
index 000000000..ddf5cde6d
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.8/11.8.3/S11.8.3_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.
+
+/**
+ * Operator x <= y uses GetValue
+ *
+ * @path ch11/11.8/11.8.3/S11.8.3_A2.1_T1.js
+ * @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/js/src/tests/test262/ch11/11.8/11.8.3/S11.8.3_A2.1_T2.js b/js/src/tests/test262/ch11/11.8/11.8.3/S11.8.3_A2.1_T2.js
new file mode 100644
index 000000000..b767e2d95
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.8/11.8.3/S11.8.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.
+
+/**
+ * Operator x <= y uses GetValue
+ *
+ * @path ch11/11.8/11.8.3/S11.8.3_A2.1_T2.js
+ * @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/js/src/tests/test262/ch11/11.8/11.8.3/S11.8.3_A2.1_T3.js b/js/src/tests/test262/ch11/11.8/11.8.3/S11.8.3_A2.1_T3.js
new file mode 100644
index 000000000..d2a4df17b
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.8/11.8.3/S11.8.3_A2.1_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.
+
+/**
+ * Operator x <= y uses GetValue
+ *
+ * @path ch11/11.8/11.8.3/S11.8.3_A2.1_T3.js
+ * @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/js/src/tests/test262/ch11/11.8/11.8.3/S11.8.3_A2.2_T1.js b/js/src/tests/test262/ch11/11.8/11.8.3/S11.8.3_A2.2_T1.js
new file mode 100644
index 000000000..fbc706a2f
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.8/11.8.3/S11.8.3_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.
+
+/**
+ * Operator x <= y uses [[Default Value]]
+ *
+ * @path ch11/11.8/11.8.3/S11.8.3_A2.2_T1.js
+ * @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/js/src/tests/test262/ch11/11.8/11.8.3/S11.8.3_A2.3_T1.js b/js/src/tests/test262/ch11/11.8/11.8.3/S11.8.3_A2.3_T1.js
new file mode 100644
index 000000000..14ea37cc6
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.8/11.8.3/S11.8.3_A2.3_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.
+
+/**
+ * In ES5, First expression should be evaluated first.
+ *
+ * @path ch11/11.8/11.8.3/S11.8.3_A2.3_T1.js
+ * @description Checking that operands of a "<=" evaluate left-to-right
+ */
+
+//CHECK#1
+var x = { valueOf: function () { throw "x"; } };
+var y = { valueOf: function () { throw "y"; } };
+try {
+ x <= y;
+ $ERROR('#1.1: Should have thrown');
+} catch (e) {
+ if (e === "y") {
+ $ERROR('#1.2: First expression should be evaluated first');
+ } else {
+ if (e !== "x") {
+ $ERROR('#1.3: Failed with: ' + e);
+ }
+ }
+}
+
diff --git a/js/src/tests/test262/ch11/11.8/11.8.3/S11.8.3_A2.4_T1.js b/js/src/tests/test262/ch11/11.8/11.8.3/S11.8.3_A2.4_T1.js
new file mode 100644
index 000000000..81e29c531
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.8/11.8.3/S11.8.3_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.
+
+/**
+ * First expression is evaluated first, and then second expression
+ *
+ * @path ch11/11.8/11.8.3/S11.8.3_A2.4_T1.js
+ * @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/js/src/tests/test262/ch11/11.8/11.8.3/S11.8.3_A2.4_T2.js b/js/src/tests/test262/ch11/11.8/11.8.3/S11.8.3_A2.4_T2.js
new file mode 100644
index 000000000..2cbb846ff
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.8/11.8.3/S11.8.3_A2.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.
+
+/**
+ * First expression is evaluated first, and then second expression
+ *
+ * @path ch11/11.8/11.8.3/S11.8.3_A2.4_T2.js
+ * @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/js/src/tests/test262/ch11/11.8/11.8.3/S11.8.3_A2.4_T3.js b/js/src/tests/test262/ch11/11.8/11.8.3/S11.8.3_A2.4_T3.js
new file mode 100644
index 000000000..e53f08142
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.8/11.8.3/S11.8.3_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.
+
+/**
+ * First expression is evaluated first, and then second expression
+ *
+ * @path ch11/11.8/11.8.3/S11.8.3_A2.4_T3.js
+ * @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/js/src/tests/test262/ch11/11.8/11.8.3/S11.8.3_A3.1_T1.1.js b/js/src/tests/test262/ch11/11.8/11.8.3/S11.8.3_A3.1_T1.1.js
new file mode 100644
index 000000000..a6a6f9dda
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.8/11.8.3/S11.8.3_A3.1_T1.1.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.
+
+/**
+ * Operator x <= y returns ToNumber(x) <= ToNumber(y), if Type(Primitive(x)) is not String or Type(Primitive(y)) is not String
+ *
+ * @path ch11/11.8/11.8.3/S11.8.3_A3.1_T1.1.js
+ * @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/js/src/tests/test262/ch11/11.8/11.8.3/S11.8.3_A3.1_T1.2.js b/js/src/tests/test262/ch11/11.8/11.8.3/S11.8.3_A3.1_T1.2.js
new file mode 100644
index 000000000..e4a93112a
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.8/11.8.3/S11.8.3_A3.1_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.
+
+/**
+ * Operator x <= y returns ToNumber(x) <= ToNumber(y), if Type(Primitive(x)) is not String or Type(Primitive(y)) is not String
+ *
+ * @path ch11/11.8/11.8.3/S11.8.3_A3.1_T1.2.js
+ * @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/js/src/tests/test262/ch11/11.8/11.8.3/S11.8.3_A3.1_T1.3.js b/js/src/tests/test262/ch11/11.8/11.8.3/S11.8.3_A3.1_T1.3.js
new file mode 100644
index 000000000..c55bc154c
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.8/11.8.3/S11.8.3_A3.1_T1.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.
+
+/**
+ * Operator x <= y returns ToNumber(x) <= ToNumber(y), if Type(Primitive(x)) is not String or Type(Primitive(y)) is not String
+ *
+ * @path ch11/11.8/11.8.3/S11.8.3_A3.1_T1.3.js
+ * @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/js/src/tests/test262/ch11/11.8/11.8.3/S11.8.3_A3.1_T2.1.js b/js/src/tests/test262/ch11/11.8/11.8.3/S11.8.3_A3.1_T2.1.js
new file mode 100644
index 000000000..2eb6f2282
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.8/11.8.3/S11.8.3_A3.1_T2.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.
+
+/**
+ * Operator x <= y returns ToNumber(x) <= ToNumber(y), if Type(Primitive(x)) is not String or Type(Primitive(y)) is not String
+ *
+ * @path ch11/11.8/11.8.3/S11.8.3_A3.1_T2.1.js
+ * @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/js/src/tests/test262/ch11/11.8/11.8.3/S11.8.3_A3.1_T2.2.js b/js/src/tests/test262/ch11/11.8/11.8.3/S11.8.3_A3.1_T2.2.js
new file mode 100644
index 000000000..7bbff24f5
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.8/11.8.3/S11.8.3_A3.1_T2.2.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.
+
+/**
+ * Operator x <= y returns ToNumber(x) <= ToNumber(y), if Type(Primitive(x)) is not String or Type(Primitive(y)) is not String
+ *
+ * @path ch11/11.8/11.8.3/S11.8.3_A3.1_T2.2.js
+ * @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/js/src/tests/test262/ch11/11.8/11.8.3/S11.8.3_A3.1_T2.3.js b/js/src/tests/test262/ch11/11.8/11.8.3/S11.8.3_A3.1_T2.3.js
new file mode 100644
index 000000000..a255c8b99
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.8/11.8.3/S11.8.3_A3.1_T2.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.
+
+/**
+ * Operator x <= y returns ToNumber(x) <= ToNumber(y), if Type(Primitive(x)) is not String or Type(Primitive(y)) is not String
+ *
+ * @path ch11/11.8/11.8.3/S11.8.3_A3.1_T2.3.js
+ * @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/js/src/tests/test262/ch11/11.8/11.8.3/S11.8.3_A3.1_T2.4.js b/js/src/tests/test262/ch11/11.8/11.8.3/S11.8.3_A3.1_T2.4.js
new file mode 100644
index 000000000..a124fb8d9
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.8/11.8.3/S11.8.3_A3.1_T2.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.
+
+/**
+ * Operator x <= y returns ToNumber(x) <= ToNumber(y), if Type(Primitive(x)) is not String or Type(Primitive(y)) is not String
+ *
+ * @path ch11/11.8/11.8.3/S11.8.3_A3.1_T2.4.js
+ * @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/js/src/tests/test262/ch11/11.8/11.8.3/S11.8.3_A3.1_T2.5.js b/js/src/tests/test262/ch11/11.8/11.8.3/S11.8.3_A3.1_T2.5.js
new file mode 100644
index 000000000..39fa250a5
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.8/11.8.3/S11.8.3_A3.1_T2.5.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.
+
+/**
+ * Operator x <= y returns ToNumber(x) <= ToNumber(y), if Type(Primitive(x)) is not String or Type(Primitive(y)) is not String
+ *
+ * @path ch11/11.8/11.8.3/S11.8.3_A3.1_T2.5.js
+ * @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/js/src/tests/test262/ch11/11.8/11.8.3/S11.8.3_A3.1_T2.6.js b/js/src/tests/test262/ch11/11.8/11.8.3/S11.8.3_A3.1_T2.6.js
new file mode 100644
index 000000000..321a4848e
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.8/11.8.3/S11.8.3_A3.1_T2.6.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.
+
+/**
+ * Operator x <= y returns ToNumber(x) <= ToNumber(y), if Type(Primitive(x)) is not String or Type(Primitive(y)) is not String
+ *
+ * @path ch11/11.8/11.8.3/S11.8.3_A3.1_T2.6.js
+ * @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/js/src/tests/test262/ch11/11.8/11.8.3/S11.8.3_A3.1_T2.7.js b/js/src/tests/test262/ch11/11.8/11.8.3/S11.8.3_A3.1_T2.7.js
new file mode 100644
index 000000000..02a69689e
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.8/11.8.3/S11.8.3_A3.1_T2.7.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.
+
+/**
+ * Operator x <= y returns ToNumber(x) <= ToNumber(y), if Type(Primitive(x)) is not String or Type(Primitive(y)) is not String
+ *
+ * @path ch11/11.8/11.8.3/S11.8.3_A3.1_T2.7.js
+ * @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/js/src/tests/test262/ch11/11.8/11.8.3/S11.8.3_A3.1_T2.8.js b/js/src/tests/test262/ch11/11.8/11.8.3/S11.8.3_A3.1_T2.8.js
new file mode 100644
index 000000000..580057063
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.8/11.8.3/S11.8.3_A3.1_T2.8.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.
+
+/**
+ * Operator x <= y returns ToNumber(x) <= ToNumber(y), if Type(Primitive(x)) is not String or Type(Primitive(y)) is not String
+ *
+ * @path ch11/11.8/11.8.3/S11.8.3_A3.1_T2.8.js
+ * @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/js/src/tests/test262/ch11/11.8/11.8.3/S11.8.3_A3.1_T2.9.js b/js/src/tests/test262/ch11/11.8/11.8.3/S11.8.3_A3.1_T2.9.js
new file mode 100644
index 000000000..ed70b36f2
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.8/11.8.3/S11.8.3_A3.1_T2.9.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.
+
+/**
+ * Operator x <= y returns ToNumber(x) <= ToNumber(y), if Type(Primitive(x)) is not String or Type(Primitive(y)) is not String
+ *
+ * @path ch11/11.8/11.8.3/S11.8.3_A3.1_T2.9.js
+ * @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/js/src/tests/test262/ch11/11.8/11.8.3/S11.8.3_A3.2_T1.1.js b/js/src/tests/test262/ch11/11.8/11.8.3/S11.8.3_A3.2_T1.1.js
new file mode 100644
index 000000000..354384ea8
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.8/11.8.3/S11.8.3_A3.2_T1.1.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.
+
+/**
+ * Operator x <= y returns ToString(x) <= ToString(y), if Type(Primitive(x)) is String and Type(Primitive(y)) is String
+ *
+ * @path ch11/11.8/11.8.3/S11.8.3_A3.2_T1.1.js
+ * @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/js/src/tests/test262/ch11/11.8/11.8.3/S11.8.3_A3.2_T1.2.js b/js/src/tests/test262/ch11/11.8/11.8.3/S11.8.3_A3.2_T1.2.js
new file mode 100644
index 000000000..93ff5e2e2
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.8/11.8.3/S11.8.3_A3.2_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.
+
+/**
+ * Operator x <= y returns ToString(x) <= ToString(y), if Type(Primitive(x)) is String and Type(Primitive(y)) is String
+ *
+ * @path ch11/11.8/11.8.3/S11.8.3_A3.2_T1.2.js
+ * @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/js/src/tests/test262/ch11/11.8/11.8.3/S11.8.3_A4.1.js b/js/src/tests/test262/ch11/11.8/11.8.3/S11.8.3_A4.1.js
new file mode 100644
index 000000000..c94f02041
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.8/11.8.3/S11.8.3_A4.1.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.
+
+/**
+ * If x is NaN, return false (if result in 11.8.5 is undefined, return false)
+ *
+ * @path ch11/11.8/11.8.3/S11.8.3_A4.1.js
+ * @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/js/src/tests/test262/ch11/11.8/11.8.3/S11.8.3_A4.10.js b/js/src/tests/test262/ch11/11.8/11.8.3/S11.8.3_A4.10.js
new file mode 100644
index 000000000..4e2295c6d
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.8/11.8.3/S11.8.3_A4.10.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.
+
+/**
+ * If y is a prefix of x and x !== y, return false
+ *
+ * @path ch11/11.8/11.8.3/S11.8.3_A4.10.js
+ * @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/js/src/tests/test262/ch11/11.8/11.8.3/S11.8.3_A4.11.js b/js/src/tests/test262/ch11/11.8/11.8.3/S11.8.3_A4.11.js
new file mode 100644
index 000000000..556a9eb89
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.8/11.8.3/S11.8.3_A4.11.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.
+
+/**
+ * If x is a prefix of y, return true
+ *
+ * @path ch11/11.8/11.8.3/S11.8.3_A4.11.js
+ * @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/js/src/tests/test262/ch11/11.8/11.8.3/S11.8.3_A4.12_T1.js b/js/src/tests/test262/ch11/11.8/11.8.3/S11.8.3_A4.12_T1.js
new file mode 100644
index 000000000..cb1228e57
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.8/11.8.3/S11.8.3_A4.12_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.
+
+/**
+ * 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
+ *
+ * @path ch11/11.8/11.8.3/S11.8.3_A4.12_T1.js
+ * @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/js/src/tests/test262/ch11/11.8/11.8.3/S11.8.3_A4.12_T2.js b/js/src/tests/test262/ch11/11.8/11.8.3/S11.8.3_A4.12_T2.js
new file mode 100644
index 000000000..459d73ed1
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.8/11.8.3/S11.8.3_A4.12_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.
+
+/**
+ * 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
+ *
+ * @path ch11/11.8/11.8.3/S11.8.3_A4.12_T2.js
+ * @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/js/src/tests/test262/ch11/11.8/11.8.3/S11.8.3_A4.2.js b/js/src/tests/test262/ch11/11.8/11.8.3/S11.8.3_A4.2.js
new file mode 100644
index 000000000..dd195d809
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.8/11.8.3/S11.8.3_A4.2.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.
+
+/**
+ * If y is NaN, return false (if result in 11.8.5 is undefined, return false)
+ *
+ * @path ch11/11.8/11.8.3/S11.8.3_A4.2.js
+ * @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/js/src/tests/test262/ch11/11.8/11.8.3/S11.8.3_A4.3.js b/js/src/tests/test262/ch11/11.8/11.8.3/S11.8.3_A4.3.js
new file mode 100644
index 000000000..3c462cfdd
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.8/11.8.3/S11.8.3_A4.3.js
@@ -0,0 +1,47 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * If x and y are the same number value, return true
+ *
+ * @path ch11/11.8/11.8.3/S11.8.3_A4.3.js
+ * @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/js/src/tests/test262/ch11/11.8/11.8.3/S11.8.3_A4.4.js b/js/src/tests/test262/ch11/11.8/11.8.3/S11.8.3_A4.4.js
new file mode 100644
index 000000000..4669cde36
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.8/11.8.3/S11.8.3_A4.4.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.
+
+/**
+ * If either x or y is +0 and the other is -0, return true
+ *
+ * @path ch11/11.8/11.8.3/S11.8.3_A4.4.js
+ * @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/js/src/tests/test262/ch11/11.8/11.8.3/S11.8.3_A4.5.js b/js/src/tests/test262/ch11/11.8/11.8.3/S11.8.3_A4.5.js
new file mode 100644
index 000000000..ff3ab3a85
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.8/11.8.3/S11.8.3_A4.5.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.
+
+/**
+ * If x is +Infinity and x !== y, return false
+ *
+ * @path ch11/11.8/11.8.3/S11.8.3_A4.5.js
+ * @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/js/src/tests/test262/ch11/11.8/11.8.3/S11.8.3_A4.6.js b/js/src/tests/test262/ch11/11.8/11.8.3/S11.8.3_A4.6.js
new file mode 100644
index 000000000..1aa11f973
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.8/11.8.3/S11.8.3_A4.6.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.
+
+/**
+ * If y is +Infinity and x !== y, return true
+ *
+ * @path ch11/11.8/11.8.3/S11.8.3_A4.6.js
+ * @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/js/src/tests/test262/ch11/11.8/11.8.3/S11.8.3_A4.7.js b/js/src/tests/test262/ch11/11.8/11.8.3/S11.8.3_A4.7.js
new file mode 100644
index 000000000..8abd94de4
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.8/11.8.3/S11.8.3_A4.7.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.
+
+/**
+ * If x is -Infinity, return true
+ *
+ * @path ch11/11.8/11.8.3/S11.8.3_A4.7.js
+ * @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/js/src/tests/test262/ch11/11.8/11.8.3/S11.8.3_A4.8.js b/js/src/tests/test262/ch11/11.8/11.8.3/S11.8.3_A4.8.js
new file mode 100644
index 000000000..c126d0795
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.8/11.8.3/S11.8.3_A4.8.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.
+
+/**
+ * If y is -Infinity and x !== y, return false
+ *
+ * @path ch11/11.8/11.8.3/S11.8.3_A4.8.js
+ * @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/js/src/tests/test262/ch11/11.8/11.8.3/S11.8.3_A4.9.js b/js/src/tests/test262/ch11/11.8/11.8.3/S11.8.3_A4.9.js
new file mode 100644
index 000000000..fa0d9302c
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.8/11.8.3/S11.8.3_A4.9.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.
+
+/**
+ * If x is less or equal than y and these values are both finite non-zero, return true; otherwise, return false
+ *
+ * @path ch11/11.8/11.8.3/S11.8.3_A4.9.js
+ * @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/js/src/tests/test262/ch11/11.8/11.8.3/browser.js b/js/src/tests/test262/ch11/11.8/11.8.3/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.8/11.8.3/browser.js
diff --git a/js/src/tests/test262/ch11/11.8/11.8.3/shell.js b/js/src/tests/test262/ch11/11.8/11.8.3/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.8/11.8.3/shell.js
diff --git a/js/src/tests/test262/ch11/11.8/11.8.4/S11.8.4_A1.js b/js/src/tests/test262/ch11/11.8/11.8.4/S11.8.4_A1.js
new file mode 100644
index 000000000..2a165a211
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.8/11.8.4/S11.8.4_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.
+
+/**
+ * White Space and Line Terminator between RelationalExpression and "=>" or "=>" and ShiftExpression are allowed
+ *
+ * @path ch11/11.8/11.8.4/S11.8.4_A1.js
+ * @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/js/src/tests/test262/ch11/11.8/11.8.4/S11.8.4_A2.1_T1.js b/js/src/tests/test262/ch11/11.8/11.8.4/S11.8.4_A2.1_T1.js
new file mode 100644
index 000000000..8f3adb309
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.8/11.8.4/S11.8.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.
+
+/**
+ * Operator x >= y uses GetValue
+ *
+ * @path ch11/11.8/11.8.4/S11.8.4_A2.1_T1.js
+ * @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/js/src/tests/test262/ch11/11.8/11.8.4/S11.8.4_A2.1_T2.js b/js/src/tests/test262/ch11/11.8/11.8.4/S11.8.4_A2.1_T2.js
new file mode 100644
index 000000000..8a57a24e3
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.8/11.8.4/S11.8.4_A2.1_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.
+
+/**
+ * Operator x >= y uses GetValue
+ *
+ * @path ch11/11.8/11.8.4/S11.8.4_A2.1_T2.js
+ * @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/js/src/tests/test262/ch11/11.8/11.8.4/S11.8.4_A2.1_T3.js b/js/src/tests/test262/ch11/11.8/11.8.4/S11.8.4_A2.1_T3.js
new file mode 100644
index 000000000..23c2ea604
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.8/11.8.4/S11.8.4_A2.1_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.
+
+/**
+ * Operator x >= y uses GetValue
+ *
+ * @path ch11/11.8/11.8.4/S11.8.4_A2.1_T3.js
+ * @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/js/src/tests/test262/ch11/11.8/11.8.4/S11.8.4_A2.2_T1.js b/js/src/tests/test262/ch11/11.8/11.8.4/S11.8.4_A2.2_T1.js
new file mode 100644
index 000000000..f129ea315
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.8/11.8.4/S11.8.4_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.
+
+/**
+ * Operator x >= y uses [[Default Value]]
+ *
+ * @path ch11/11.8/11.8.4/S11.8.4_A2.2_T1.js
+ * @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/js/src/tests/test262/ch11/11.8/11.8.4/S11.8.4_A2.3_T1.js b/js/src/tests/test262/ch11/11.8/11.8.4/S11.8.4_A2.3_T1.js
new file mode 100644
index 000000000..dd286dd03
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.8/11.8.4/S11.8.4_A2.3_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.
+
+/**
+ * ToNumber(first expression) is called first, and then ToNumber(second expression)
+ *
+ * @path ch11/11.8/11.8.4/S11.8.4_A2.3_T1.js
+ * @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/js/src/tests/test262/ch11/11.8/11.8.4/S11.8.4_A2.4_T1.js b/js/src/tests/test262/ch11/11.8/11.8.4/S11.8.4_A2.4_T1.js
new file mode 100644
index 000000000..8e3f2b0c7
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.8/11.8.4/S11.8.4_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.
+
+/**
+ * First expression is evaluated first, and then second expression
+ *
+ * @path ch11/11.8/11.8.4/S11.8.4_A2.4_T1.js
+ * @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/js/src/tests/test262/ch11/11.8/11.8.4/S11.8.4_A2.4_T2.js b/js/src/tests/test262/ch11/11.8/11.8.4/S11.8.4_A2.4_T2.js
new file mode 100644
index 000000000..f7c0446dd
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.8/11.8.4/S11.8.4_A2.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.
+
+/**
+ * First expression is evaluated first, and then second expression
+ *
+ * @path ch11/11.8/11.8.4/S11.8.4_A2.4_T2.js
+ * @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/js/src/tests/test262/ch11/11.8/11.8.4/S11.8.4_A2.4_T3.js b/js/src/tests/test262/ch11/11.8/11.8.4/S11.8.4_A2.4_T3.js
new file mode 100644
index 000000000..54efe21ac
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.8/11.8.4/S11.8.4_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.
+
+/**
+ * First expression is evaluated first, and then second expression
+ *
+ * @path ch11/11.8/11.8.4/S11.8.4_A2.4_T3.js
+ * @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/js/src/tests/test262/ch11/11.8/11.8.4/S11.8.4_A3.1_T1.1.js b/js/src/tests/test262/ch11/11.8/11.8.4/S11.8.4_A3.1_T1.1.js
new file mode 100644
index 000000000..d92463091
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.8/11.8.4/S11.8.4_A3.1_T1.1.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.
+
+/**
+ * If Type(Primitive(x)) is not String or Type(Primitive(y)) is not String, then operator x >= y returns ToNumber(x) >= ToNumber(y)
+ *
+ * @path ch11/11.8/11.8.4/S11.8.4_A3.1_T1.1.js
+ * @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/js/src/tests/test262/ch11/11.8/11.8.4/S11.8.4_A3.1_T1.2.js b/js/src/tests/test262/ch11/11.8/11.8.4/S11.8.4_A3.1_T1.2.js
new file mode 100644
index 000000000..255124d7d
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.8/11.8.4/S11.8.4_A3.1_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.
+
+/**
+ * If Type(Primitive(x)) is not String or Type(Primitive(y)) is not String, then operator x >= y returns ToNumber(x) >= ToNumber(y)
+ *
+ * @path ch11/11.8/11.8.4/S11.8.4_A3.1_T1.2.js
+ * @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/js/src/tests/test262/ch11/11.8/11.8.4/S11.8.4_A3.1_T1.3.js b/js/src/tests/test262/ch11/11.8/11.8.4/S11.8.4_A3.1_T1.3.js
new file mode 100644
index 000000000..ffe39372e
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.8/11.8.4/S11.8.4_A3.1_T1.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.
+
+/**
+ * If Type(Primitive(x)) is not String or Type(Primitive(y)) is not String, then operator x >= y returns ToNumber(x) >= ToNumber(y)
+ *
+ * @path ch11/11.8/11.8.4/S11.8.4_A3.1_T1.3.js
+ * @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/js/src/tests/test262/ch11/11.8/11.8.4/S11.8.4_A3.1_T2.1.js b/js/src/tests/test262/ch11/11.8/11.8.4/S11.8.4_A3.1_T2.1.js
new file mode 100644
index 000000000..c1f367aae
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.8/11.8.4/S11.8.4_A3.1_T2.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.
+
+/**
+ * If Type(Primitive(x)) is not String or Type(Primitive(y)) is not String, then operator x >= y returns ToNumber(x) >= ToNumber(y)
+ *
+ * @path ch11/11.8/11.8.4/S11.8.4_A3.1_T2.1.js
+ * @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/js/src/tests/test262/ch11/11.8/11.8.4/S11.8.4_A3.1_T2.2.js b/js/src/tests/test262/ch11/11.8/11.8.4/S11.8.4_A3.1_T2.2.js
new file mode 100644
index 000000000..3e4bca79b
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.8/11.8.4/S11.8.4_A3.1_T2.2.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.
+
+/**
+ * If Type(Primitive(x)) is not String or Type(Primitive(y)) is not String, then operator x >= y returns ToNumber(x) >= ToNumber(y)
+ *
+ * @path ch11/11.8/11.8.4/S11.8.4_A3.1_T2.2.js
+ * @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/js/src/tests/test262/ch11/11.8/11.8.4/S11.8.4_A3.1_T2.3.js b/js/src/tests/test262/ch11/11.8/11.8.4/S11.8.4_A3.1_T2.3.js
new file mode 100644
index 000000000..4d0c6b6a9
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.8/11.8.4/S11.8.4_A3.1_T2.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.
+
+/**
+ * If Type(Primitive(x)) is not String or Type(Primitive(y)) is not String, then operator x >= y returns ToNumber(x) >= ToNumber(y)
+ *
+ * @path ch11/11.8/11.8.4/S11.8.4_A3.1_T2.3.js
+ * @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/js/src/tests/test262/ch11/11.8/11.8.4/S11.8.4_A3.1_T2.4.js b/js/src/tests/test262/ch11/11.8/11.8.4/S11.8.4_A3.1_T2.4.js
new file mode 100644
index 000000000..f94a78e5a
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.8/11.8.4/S11.8.4_A3.1_T2.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.
+
+/**
+ * If Type(Primitive(x)) is not String or Type(Primitive(y)) is not String, then operator x >= y returns ToNumber(x) >= ToNumber(y)
+ *
+ * @path ch11/11.8/11.8.4/S11.8.4_A3.1_T2.4.js
+ * @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/js/src/tests/test262/ch11/11.8/11.8.4/S11.8.4_A3.1_T2.5.js b/js/src/tests/test262/ch11/11.8/11.8.4/S11.8.4_A3.1_T2.5.js
new file mode 100644
index 000000000..5f949872e
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.8/11.8.4/S11.8.4_A3.1_T2.5.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.
+
+/**
+ * If Type(Primitive(x)) is not String or Type(Primitive(y)) is not String, then operator x >= y returns ToNumber(x) >= ToNumber(y)
+ *
+ * @path ch11/11.8/11.8.4/S11.8.4_A3.1_T2.5.js
+ * @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/js/src/tests/test262/ch11/11.8/11.8.4/S11.8.4_A3.1_T2.6.js b/js/src/tests/test262/ch11/11.8/11.8.4/S11.8.4_A3.1_T2.6.js
new file mode 100644
index 000000000..ff2ab1820
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.8/11.8.4/S11.8.4_A3.1_T2.6.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.
+
+/**
+ * If Type(Primitive(x)) is not String or Type(Primitive(y)) is not String, then operator x >= y returns ToNumber(x) >= ToNumber(y)
+ *
+ * @path ch11/11.8/11.8.4/S11.8.4_A3.1_T2.6.js
+ * @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/js/src/tests/test262/ch11/11.8/11.8.4/S11.8.4_A3.1_T2.7.js b/js/src/tests/test262/ch11/11.8/11.8.4/S11.8.4_A3.1_T2.7.js
new file mode 100644
index 000000000..10745f98a
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.8/11.8.4/S11.8.4_A3.1_T2.7.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.
+
+/**
+ * If Type(Primitive(x)) is not String or Type(Primitive(y)) is not String, then operator x >= y returns ToNumber(x) >= ToNumber(y)
+ *
+ * @path ch11/11.8/11.8.4/S11.8.4_A3.1_T2.7.js
+ * @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/js/src/tests/test262/ch11/11.8/11.8.4/S11.8.4_A3.1_T2.8.js b/js/src/tests/test262/ch11/11.8/11.8.4/S11.8.4_A3.1_T2.8.js
new file mode 100644
index 000000000..c45874ca8
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.8/11.8.4/S11.8.4_A3.1_T2.8.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.
+
+/**
+ * If Type(Primitive(x)) is not String or Type(Primitive(y)) is not String, then operator x >= y returns ToNumber(x) >= ToNumber(y)
+ *
+ * @path ch11/11.8/11.8.4/S11.8.4_A3.1_T2.8.js
+ * @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/js/src/tests/test262/ch11/11.8/11.8.4/S11.8.4_A3.1_T2.9.js b/js/src/tests/test262/ch11/11.8/11.8.4/S11.8.4_A3.1_T2.9.js
new file mode 100644
index 000000000..8046d5a59
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.8/11.8.4/S11.8.4_A3.1_T2.9.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.
+
+/**
+ * If Type(Primitive(x)) is not String or Type(Primitive(y)) is not String, then operator x >= y returns ToNumber(x) >= ToNumber(y)
+ *
+ * @path ch11/11.8/11.8.4/S11.8.4_A3.1_T2.9.js
+ * @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/js/src/tests/test262/ch11/11.8/11.8.4/S11.8.4_A3.2_T1.1.js b/js/src/tests/test262/ch11/11.8/11.8.4/S11.8.4_A3.2_T1.1.js
new file mode 100644
index 000000000..d166d3f9b
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.8/11.8.4/S11.8.4_A3.2_T1.1.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.
+
+/**
+ * Operator x >= y returns ToString(x) >= ToString(y), if Type(Primitive(x)) is String and Type(Primitive(y)) is String
+ *
+ * @path ch11/11.8/11.8.4/S11.8.4_A3.2_T1.1.js
+ * @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/js/src/tests/test262/ch11/11.8/11.8.4/S11.8.4_A3.2_T1.2.js b/js/src/tests/test262/ch11/11.8/11.8.4/S11.8.4_A3.2_T1.2.js
new file mode 100644
index 000000000..7a981028c
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.8/11.8.4/S11.8.4_A3.2_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.
+
+/**
+ * Operator x >= y returns ToString(x) >= ToString(y), if Type(Primitive(x)) is String and Type(Primitive(y)) is String
+ *
+ * @path ch11/11.8/11.8.4/S11.8.4_A3.2_T1.2.js
+ * @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/js/src/tests/test262/ch11/11.8/11.8.4/S11.8.4_A4.1.js b/js/src/tests/test262/ch11/11.8/11.8.4/S11.8.4_A4.1.js
new file mode 100644
index 000000000..601f23715
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.8/11.8.4/S11.8.4_A4.1.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.
+
+/**
+ * If x is NaN, return false (if result in 11.8.5 is undefined, return false)
+ *
+ * @path ch11/11.8/11.8.4/S11.8.4_A4.1.js
+ * @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/js/src/tests/test262/ch11/11.8/11.8.4/S11.8.4_A4.10.js b/js/src/tests/test262/ch11/11.8/11.8.4/S11.8.4_A4.10.js
new file mode 100644
index 000000000..caaf1fa86
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.8/11.8.4/S11.8.4_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.
+
+/**
+ * If x is a prefix of y and x !== y, return false
+ *
+ * @path ch11/11.8/11.8.4/S11.8.4_A4.10.js
+ * @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/js/src/tests/test262/ch11/11.8/11.8.4/S11.8.4_A4.11.js b/js/src/tests/test262/ch11/11.8/11.8.4/S11.8.4_A4.11.js
new file mode 100644
index 000000000..98b792a6d
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.8/11.8.4/S11.8.4_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.
+
+/**
+ * If y is a prefix of x, return true
+ *
+ * @path ch11/11.8/11.8.4/S11.8.4_A4.11.js
+ * @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/js/src/tests/test262/ch11/11.8/11.8.4/S11.8.4_A4.12_T1.js b/js/src/tests/test262/ch11/11.8/11.8.4/S11.8.4_A4.12_T1.js
new file mode 100644
index 000000000..961dc236f
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.8/11.8.4/S11.8.4_A4.12_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.
+
+/**
+ * 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
+ *
+ * @path ch11/11.8/11.8.4/S11.8.4_A4.12_T1.js
+ * @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/js/src/tests/test262/ch11/11.8/11.8.4/S11.8.4_A4.12_T2.js b/js/src/tests/test262/ch11/11.8/11.8.4/S11.8.4_A4.12_T2.js
new file mode 100644
index 000000000..851e69d49
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.8/11.8.4/S11.8.4_A4.12_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.
+
+/**
+ * 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
+ *
+ * @path ch11/11.8/11.8.4/S11.8.4_A4.12_T2.js
+ * @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/js/src/tests/test262/ch11/11.8/11.8.4/S11.8.4_A4.2.js b/js/src/tests/test262/ch11/11.8/11.8.4/S11.8.4_A4.2.js
new file mode 100644
index 000000000..a10b2ab4e
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.8/11.8.4/S11.8.4_A4.2.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.
+
+/**
+ * If y is NaN, return false (if result in 11.8.5 is undefined, return false)
+ *
+ * @path ch11/11.8/11.8.4/S11.8.4_A4.2.js
+ * @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/js/src/tests/test262/ch11/11.8/11.8.4/S11.8.4_A4.3.js b/js/src/tests/test262/ch11/11.8/11.8.4/S11.8.4_A4.3.js
new file mode 100644
index 000000000..4169a91bb
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.8/11.8.4/S11.8.4_A4.3.js
@@ -0,0 +1,47 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * If x and y are the same number value, return true
+ *
+ * @path ch11/11.8/11.8.4/S11.8.4_A4.3.js
+ * @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/js/src/tests/test262/ch11/11.8/11.8.4/S11.8.4_A4.4.js b/js/src/tests/test262/ch11/11.8/11.8.4/S11.8.4_A4.4.js
new file mode 100644
index 000000000..3abe7fa77
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.8/11.8.4/S11.8.4_A4.4.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.
+
+/**
+ * If either x or y is +0 and the other is -0, return true
+ *
+ * @path ch11/11.8/11.8.4/S11.8.4_A4.4.js
+ * @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/js/src/tests/test262/ch11/11.8/11.8.4/S11.8.4_A4.5.js b/js/src/tests/test262/ch11/11.8/11.8.4/S11.8.4_A4.5.js
new file mode 100644
index 000000000..e0357fee2
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.8/11.8.4/S11.8.4_A4.5.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.
+
+/**
+ * If x is +Infinity, return true
+ *
+ * @path ch11/11.8/11.8.4/S11.8.4_A4.5.js
+ * @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/js/src/tests/test262/ch11/11.8/11.8.4/S11.8.4_A4.6.js b/js/src/tests/test262/ch11/11.8/11.8.4/S11.8.4_A4.6.js
new file mode 100644
index 000000000..b1f898a14
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.8/11.8.4/S11.8.4_A4.6.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.
+
+/**
+ * If y is +Infinity and x !== y, return false
+ *
+ * @path ch11/11.8/11.8.4/S11.8.4_A4.6.js
+ * @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/js/src/tests/test262/ch11/11.8/11.8.4/S11.8.4_A4.7.js b/js/src/tests/test262/ch11/11.8/11.8.4/S11.8.4_A4.7.js
new file mode 100644
index 000000000..6a423b834
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.8/11.8.4/S11.8.4_A4.7.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.
+
+/**
+ * If x is -Infinity and x !== y, return false
+ *
+ * @path ch11/11.8/11.8.4/S11.8.4_A4.7.js
+ * @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/js/src/tests/test262/ch11/11.8/11.8.4/S11.8.4_A4.8.js b/js/src/tests/test262/ch11/11.8/11.8.4/S11.8.4_A4.8.js
new file mode 100644
index 000000000..ce00360b3
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.8/11.8.4/S11.8.4_A4.8.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.
+
+/**
+ * If y is -Infinity, return true
+ *
+ * @path ch11/11.8/11.8.4/S11.8.4_A4.8.js
+ * @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/js/src/tests/test262/ch11/11.8/11.8.4/S11.8.4_A4.9.js b/js/src/tests/test262/ch11/11.8/11.8.4/S11.8.4_A4.9.js
new file mode 100644
index 000000000..116d934ef
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.8/11.8.4/S11.8.4_A4.9.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.
+
+/**
+ * If x is greater or equal than y and these values are both finite non-zero, return true; otherwise, return false
+ *
+ * @path ch11/11.8/11.8.4/S11.8.4_A4.9.js
+ * @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/js/src/tests/test262/ch11/11.8/11.8.4/browser.js b/js/src/tests/test262/ch11/11.8/11.8.4/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.8/11.8.4/browser.js
diff --git a/js/src/tests/test262/ch11/11.8/11.8.4/shell.js b/js/src/tests/test262/ch11/11.8/11.8.4/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.8/11.8.4/shell.js
diff --git a/js/src/tests/test262/ch11/11.8/11.8.6/S11.8.6_A1.js b/js/src/tests/test262/ch11/11.8/11.8.6/S11.8.6_A1.js
new file mode 100644
index 000000000..282b9fda4
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.8/11.8.6/S11.8.6_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.
+
+/**
+ * White Space and Line Terminator between RelationalExpression and "instanceof" and between "instanceof" and ShiftExpression are allowed
+ *
+ * @path ch11/11.8/11.8.6/S11.8.6_A1.js
+ * @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/js/src/tests/test262/ch11/11.8/11.8.6/S11.8.6_A2.1_T1.js b/js/src/tests/test262/ch11/11.8/11.8.6/S11.8.6_A2.1_T1.js
new file mode 100644
index 000000000..e7a31658c
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.8/11.8.6/S11.8.6_A2.1_T1.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.
+
+/**
+ * Operator "instanceof" uses GetValue
+ *
+ * @path ch11/11.8/11.8.6/S11.8.6_A2.1_T1.js
+ * @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/js/src/tests/test262/ch11/11.8/11.8.6/S11.8.6_A2.1_T2.js b/js/src/tests/test262/ch11/11.8/11.8.6/S11.8.6_A2.1_T2.js
new file mode 100644
index 000000000..9477b0b5d
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.8/11.8.6/S11.8.6_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.
+
+/**
+ * Operator "instanceof" uses GetValue
+ *
+ * @path ch11/11.8/11.8.6/S11.8.6_A2.1_T2.js
+ * @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/js/src/tests/test262/ch11/11.8/11.8.6/S11.8.6_A2.1_T3.js b/js/src/tests/test262/ch11/11.8/11.8.6/S11.8.6_A2.1_T3.js
new file mode 100644
index 000000000..bb0a094ce
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.8/11.8.6/S11.8.6_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.
+
+/**
+ * Operator "instanceof" uses GetValue
+ *
+ * @path ch11/11.8/11.8.6/S11.8.6_A2.1_T3.js
+ * @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/js/src/tests/test262/ch11/11.8/11.8.6/S11.8.6_A2.4_T1.js b/js/src/tests/test262/ch11/11.8/11.8.6/S11.8.6_A2.4_T1.js
new file mode 100644
index 000000000..957c99b3b
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.8/11.8.6/S11.8.6_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.
+
+/**
+ * First expression is evaluated first, and then second expression
+ *
+ * @path ch11/11.8/11.8.6/S11.8.6_A2.4_T1.js
+ * @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/js/src/tests/test262/ch11/11.8/11.8.6/S11.8.6_A2.4_T2.js b/js/src/tests/test262/ch11/11.8/11.8.6/S11.8.6_A2.4_T2.js
new file mode 100644
index 000000000..5f87c4342
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.8/11.8.6/S11.8.6_A2.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.
+
+/**
+ * First expression is evaluated first, and then second expression
+ *
+ * @path ch11/11.8/11.8.6/S11.8.6_A2.4_T2.js
+ * @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/js/src/tests/test262/ch11/11.8/11.8.6/S11.8.6_A2.4_T3.js b/js/src/tests/test262/ch11/11.8/11.8.6/S11.8.6_A2.4_T3.js
new file mode 100644
index 000000000..06ef16073
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.8/11.8.6/S11.8.6_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.
+
+/**
+ * First expression is evaluated first, and then second expression
+ *
+ * @path ch11/11.8/11.8.6/S11.8.6_A2.4_T3.js
+ * @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/js/src/tests/test262/ch11/11.8/11.8.6/S11.8.6_A3.js b/js/src/tests/test262/ch11/11.8/11.8.6/S11.8.6_A3.js
new file mode 100644
index 000000000..da3d7e5dc
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.8/11.8.6/S11.8.6_A3.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.
+
+/**
+ * If ShiftExpression is not an object, throw TypeError
+ *
+ * @path ch11/11.8/11.8.6/S11.8.6_A3.js
+ * @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/js/src/tests/test262/ch11/11.8/11.8.6/S11.8.6_A4_T1.js b/js/src/tests/test262/ch11/11.8/11.8.6/S11.8.6_A4_T1.js
new file mode 100644
index 000000000..0f9d2319d
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.8/11.8.6/S11.8.6_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.
+
+/**
+ * Only constructor call (with "new" keyword) makes instance
+ *
+ * @path ch11/11.8/11.8.6/S11.8.6_A4_T1.js
+ * @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/js/src/tests/test262/ch11/11.8/11.8.6/S11.8.6_A4_T2.js b/js/src/tests/test262/ch11/11.8/11.8.6/S11.8.6_A4_T2.js
new file mode 100644
index 000000000..a4f1f3c02
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.8/11.8.6/S11.8.6_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.
+
+/**
+ * Only constructor call (with "new" keyword) makes instance
+ *
+ * @path ch11/11.8/11.8.6/S11.8.6_A4_T2.js
+ * @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/js/src/tests/test262/ch11/11.8/11.8.6/S11.8.6_A4_T3.js b/js/src/tests/test262/ch11/11.8/11.8.6/S11.8.6_A4_T3.js
new file mode 100644
index 000000000..c8220049c
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.8/11.8.6/S11.8.6_A4_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.
+
+/**
+ * Only constructor call (with "new" keyword) makes instance
+ *
+ * @path ch11/11.8/11.8.6/S11.8.6_A4_T3.js
+ * @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/js/src/tests/test262/ch11/11.8/11.8.6/S11.8.6_A5_T1.js b/js/src/tests/test262/ch11/11.8/11.8.6/S11.8.6_A5_T1.js
new file mode 100644
index 000000000..66d61034c
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.8/11.8.6/S11.8.6_A5_T1.js
@@ -0,0 +1,47 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * TypeError is subclass of Error from instanceof operator point of view
+ *
+ * @path ch11/11.8/11.8.6/S11.8.6_A5_T1.js
+ * @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/js/src/tests/test262/ch11/11.8/11.8.6/S11.8.6_A5_T2.js b/js/src/tests/test262/ch11/11.8/11.8.6/S11.8.6_A5_T2.js
new file mode 100644
index 000000000..340f09ff4
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.8/11.8.6/S11.8.6_A5_T2.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.
+
+/**
+ * TypeError is subclass of Error from instanceof operator point of view
+ *
+ * @path ch11/11.8/11.8.6/S11.8.6_A5_T2.js
+ * @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/js/src/tests/test262/ch11/11.8/11.8.6/S11.8.6_A6_T1.js b/js/src/tests/test262/ch11/11.8/11.8.6/S11.8.6_A6_T1.js
new file mode 100644
index 000000000..16e0d82b3
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.8/11.8.6/S11.8.6_A6_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.
+
+/**
+ * Only Function objects implement [[HasInstance]] and can be proper ShiftExpression for the "instanceof" operator consequently
+ *
+ * @path ch11/11.8/11.8.6/S11.8.6_A6_T1.js
+ * @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/js/src/tests/test262/ch11/11.8/11.8.6/S11.8.6_A6_T2.js b/js/src/tests/test262/ch11/11.8/11.8.6/S11.8.6_A6_T2.js
new file mode 100644
index 000000000..f25dbed82
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.8/11.8.6/S11.8.6_A6_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.
+
+/**
+ * Only Function objects implement [[HasInstance]] and can be proper ShiftExpression for the "instanceof" operator consequently
+ *
+ * @path ch11/11.8/11.8.6/S11.8.6_A6_T2.js
+ * @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/js/src/tests/test262/ch11/11.8/11.8.6/S11.8.6_A6_T3.js b/js/src/tests/test262/ch11/11.8/11.8.6/S11.8.6_A6_T3.js
new file mode 100644
index 000000000..24773ad97
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.8/11.8.6/S11.8.6_A6_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.
+
+/**
+ * Only Function objects implement [[HasInstance]] and can be proper ShiftExpression for the "instanceof" operator consequently
+ *
+ * @path ch11/11.8/11.8.6/S11.8.6_A6_T3.js
+ * @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/js/src/tests/test262/ch11/11.8/11.8.6/S11.8.6_A6_T4.js b/js/src/tests/test262/ch11/11.8/11.8.6/S11.8.6_A6_T4.js
new file mode 100644
index 000000000..68aa843e8
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.8/11.8.6/S11.8.6_A6_T4.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.
+
+/**
+ * Only Function objects implement [[HasInstance]] and can be proper ShiftExpression for the "instanceof" operator consequently
+ *
+ * @path ch11/11.8/11.8.6/S11.8.6_A6_T4.js
+ * @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/js/src/tests/test262/ch11/11.8/11.8.6/S11.8.6_A7_T1.js b/js/src/tests/test262/ch11/11.8/11.8.6/S11.8.6_A7_T1.js
new file mode 100644
index 000000000..97944a5fd
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.8/11.8.6/S11.8.6_A7_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.
+
+/**
+ * When "instanceof" returns true it means that GetValue(RelationalExpression) is constructed with ShiftExpression
+ *
+ * @path ch11/11.8/11.8.6/S11.8.6_A7_T1.js
+ * @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/js/src/tests/test262/ch11/11.8/11.8.6/S11.8.6_A7_T2.js b/js/src/tests/test262/ch11/11.8/11.8.6/S11.8.6_A7_T2.js
new file mode 100644
index 000000000..c77c93c18
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.8/11.8.6/S11.8.6_A7_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.
+
+/**
+ * When "instanceof" returns true it means that GetValue(RelationalExpression) is constructed with ShiftExpression
+ *
+ * @path ch11/11.8/11.8.6/S11.8.6_A7_T2.js
+ * @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/js/src/tests/test262/ch11/11.8/11.8.6/S11.8.6_A7_T3.js b/js/src/tests/test262/ch11/11.8/11.8.6/S11.8.6_A7_T3.js
new file mode 100644
index 000000000..8d476a8ad
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.8/11.8.6/S11.8.6_A7_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.
+
+/**
+ * When "instanceof" returns true it means that GetValue(RelationalExpression) is constructed with ShiftExpression
+ *
+ * @path ch11/11.8/11.8.6/S11.8.6_A7_T3.js
+ * @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/js/src/tests/test262/ch11/11.8/11.8.6/browser.js b/js/src/tests/test262/ch11/11.8/11.8.6/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.8/11.8.6/browser.js
diff --git a/js/src/tests/test262/ch11/11.8/11.8.6/shell.js b/js/src/tests/test262/ch11/11.8/11.8.6/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.8/11.8.6/shell.js
diff --git a/js/src/tests/test262/ch11/11.8/11.8.7/S11.8.7_A1.js b/js/src/tests/test262/ch11/11.8/11.8.7/S11.8.7_A1.js
new file mode 100644
index 000000000..93c67bfcc
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.8/11.8.7/S11.8.7_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.
+
+/**
+ * White Space and Line Terminator between RelationalExpression and "in" and between "in" and ShiftExpression are allowed
+ *
+ * @path ch11/11.8/11.8.7/S11.8.7_A1.js
+ * @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/js/src/tests/test262/ch11/11.8/11.8.7/S11.8.7_A2.1_T1.js b/js/src/tests/test262/ch11/11.8/11.8.7/S11.8.7_A2.1_T1.js
new file mode 100644
index 000000000..0e33a3d02
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.8/11.8.7/S11.8.7_A2.1_T1.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.
+
+/**
+ * Operator "in" uses GetValue
+ *
+ * @path ch11/11.8/11.8.7/S11.8.7_A2.1_T1.js
+ * @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/js/src/tests/test262/ch11/11.8/11.8.7/S11.8.7_A2.1_T2.js b/js/src/tests/test262/ch11/11.8/11.8.7/S11.8.7_A2.1_T2.js
new file mode 100644
index 000000000..307b23b83
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.8/11.8.7/S11.8.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.
+
+/**
+ * Operator "in" uses GetValue
+ *
+ * @path ch11/11.8/11.8.7/S11.8.7_A2.1_T2.js
+ * @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/js/src/tests/test262/ch11/11.8/11.8.7/S11.8.7_A2.1_T3.js b/js/src/tests/test262/ch11/11.8/11.8.7/S11.8.7_A2.1_T3.js
new file mode 100644
index 000000000..89f69661a
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.8/11.8.7/S11.8.7_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.
+
+/**
+ * Operator "in" uses GetValue
+ *
+ * @path ch11/11.8/11.8.7/S11.8.7_A2.1_T3.js
+ * @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/js/src/tests/test262/ch11/11.8/11.8.7/S11.8.7_A2.4_T1.js b/js/src/tests/test262/ch11/11.8/11.8.7/S11.8.7_A2.4_T1.js
new file mode 100644
index 000000000..5403131ae
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.8/11.8.7/S11.8.7_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.
+
+/**
+ * First expression is evaluated first, and then second expression
+ *
+ * @path ch11/11.8/11.8.7/S11.8.7_A2.4_T1.js
+ * @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/js/src/tests/test262/ch11/11.8/11.8.7/S11.8.7_A2.4_T2.js b/js/src/tests/test262/ch11/11.8/11.8.7/S11.8.7_A2.4_T2.js
new file mode 100644
index 000000000..3016c2278
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.8/11.8.7/S11.8.7_A2.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.
+
+/**
+ * First expression is evaluated first, and then second expression
+ *
+ * @path ch11/11.8/11.8.7/S11.8.7_A2.4_T2.js
+ * @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/js/src/tests/test262/ch11/11.8/11.8.7/S11.8.7_A2.4_T3.js b/js/src/tests/test262/ch11/11.8/11.8.7/S11.8.7_A2.4_T3.js
new file mode 100644
index 000000000..22744621a
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.8/11.8.7/S11.8.7_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.
+
+/**
+ * First expression is evaluated first, and then second expression
+ *
+ * @path ch11/11.8/11.8.7/S11.8.7_A2.4_T3.js
+ * @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/js/src/tests/test262/ch11/11.8/11.8.7/S11.8.7_A3.js b/js/src/tests/test262/ch11/11.8/11.8.7/S11.8.7_A3.js
new file mode 100644
index 000000000..56dc73198
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.8/11.8.7/S11.8.7_A3.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.
+
+/**
+ * If ShiftExpression is not an object, throw TypeError
+ *
+ * @path ch11/11.8/11.8.7/S11.8.7_A3.js
+ * @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/js/src/tests/test262/ch11/11.8/11.8.7/S11.8.7_A4.js b/js/src/tests/test262/ch11/11.8/11.8.7/S11.8.7_A4.js
new file mode 100644
index 000000000..fcb4a6b86
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.8/11.8.7/S11.8.7_A4.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.
+
+/**
+ * Operator "in" calls ToString(ShiftExpression)
+ *
+ * @path ch11/11.8/11.8.7/S11.8.7_A4.js
+ * @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/js/src/tests/test262/ch11/11.8/11.8.7/browser.js b/js/src/tests/test262/ch11/11.8/11.8.7/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.8/11.8.7/browser.js
diff --git a/js/src/tests/test262/ch11/11.8/11.8.7/shell.js b/js/src/tests/test262/ch11/11.8/11.8.7/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.8/11.8.7/shell.js
diff --git a/js/src/tests/test262/ch11/11.8/browser.js b/js/src/tests/test262/ch11/11.8/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.8/browser.js
diff --git a/js/src/tests/test262/ch11/11.8/shell.js b/js/src/tests/test262/ch11/11.8/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.8/shell.js
diff --git a/js/src/tests/test262/ch11/11.9/11.9.1/S11.9.1_A1.js b/js/src/tests/test262/ch11/11.9/11.9.1/S11.9.1_A1.js
new file mode 100644
index 000000000..3f9904f46
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.9/11.9.1/S11.9.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.
+
+/**
+ * White Space and Line Terminator between EqualityExpression and "==" or between "==" and RelationalExpression are allowed
+ *
+ * @path ch11/11.9/11.9.1/S11.9.1_A1.js
+ * @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/js/src/tests/test262/ch11/11.9/11.9.1/S11.9.1_A2.1_T1.js b/js/src/tests/test262/ch11/11.9/11.9.1/S11.9.1_A2.1_T1.js
new file mode 100644
index 000000000..2d59985ae
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.9/11.9.1/S11.9.1_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.
+
+/**
+ * Operator x == y uses GetValue
+ *
+ * @path ch11/11.9/11.9.1/S11.9.1_A2.1_T1.js
+ * @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/js/src/tests/test262/ch11/11.9/11.9.1/S11.9.1_A2.1_T2.js b/js/src/tests/test262/ch11/11.9/11.9.1/S11.9.1_A2.1_T2.js
new file mode 100644
index 000000000..21994ea8b
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.9/11.9.1/S11.9.1_A2.1_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.
+
+/**
+ * Operator x == y uses GetValue
+ *
+ * @path ch11/11.9/11.9.1/S11.9.1_A2.1_T2.js
+ * @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/js/src/tests/test262/ch11/11.9/11.9.1/S11.9.1_A2.1_T3.js b/js/src/tests/test262/ch11/11.9/11.9.1/S11.9.1_A2.1_T3.js
new file mode 100644
index 000000000..0f8b2c378
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.9/11.9.1/S11.9.1_A2.1_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.
+
+/**
+ * Operator x == y uses GetValue
+ *
+ * @path ch11/11.9/11.9.1/S11.9.1_A2.1_T3.js
+ * @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/js/src/tests/test262/ch11/11.9/11.9.1/S11.9.1_A2.4_T1.js b/js/src/tests/test262/ch11/11.9/11.9.1/S11.9.1_A2.4_T1.js
new file mode 100644
index 000000000..04d461dcb
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.9/11.9.1/S11.9.1_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.
+
+/**
+ * First expression is evaluated first, and then second expression
+ *
+ * @path ch11/11.9/11.9.1/S11.9.1_A2.4_T1.js
+ * @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/js/src/tests/test262/ch11/11.9/11.9.1/S11.9.1_A2.4_T2.js b/js/src/tests/test262/ch11/11.9/11.9.1/S11.9.1_A2.4_T2.js
new file mode 100644
index 000000000..fdfc3fc92
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.9/11.9.1/S11.9.1_A2.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.
+
+/**
+ * First expression is evaluated first, and then second expression
+ *
+ * @path ch11/11.9/11.9.1/S11.9.1_A2.4_T2.js
+ * @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/js/src/tests/test262/ch11/11.9/11.9.1/S11.9.1_A2.4_T3.js b/js/src/tests/test262/ch11/11.9/11.9.1/S11.9.1_A2.4_T3.js
new file mode 100644
index 000000000..eecdc35aa
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.9/11.9.1/S11.9.1_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.
+
+/**
+ * First expression is evaluated first, and then second expression
+ *
+ * @path ch11/11.9/11.9.1/S11.9.1_A2.4_T3.js
+ * @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/js/src/tests/test262/ch11/11.9/11.9.1/S11.9.1_A3.1.js b/js/src/tests/test262/ch11/11.9/11.9.1/S11.9.1_A3.1.js
new file mode 100644
index 000000000..f54158976
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.9/11.9.1/S11.9.1_A3.1.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.
+
+/**
+ * Return true, if x and y are both true or both false; otherwise, return false
+ *
+ * @path ch11/11.9/11.9.1/S11.9.1_A3.1.js
+ * @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/js/src/tests/test262/ch11/11.9/11.9.1/S11.9.1_A3.2.js b/js/src/tests/test262/ch11/11.9/11.9.1/S11.9.1_A3.2.js
new file mode 100644
index 000000000..d64e86948
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.9/11.9.1/S11.9.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.
+
+/**
+ * If Type(x) is Boolean and Type(y) is Number,
+ * return the result of comparison ToNumber(x) == y
+ *
+ * @path ch11/11.9/11.9.1/S11.9.1_A3.2.js
+ * @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/js/src/tests/test262/ch11/11.9/11.9.1/S11.9.1_A3.3.js b/js/src/tests/test262/ch11/11.9/11.9.1/S11.9.1_A3.3.js
new file mode 100644
index 000000000..342c6f961
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.9/11.9.1/S11.9.1_A3.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.
+
+/**
+ * If Type(y) is Number and Type(y) is Boolean,
+ * return the result of comparison x == ToNumber(y)
+ *
+ * @path ch11/11.9/11.9.1/S11.9.1_A3.3.js
+ * @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/js/src/tests/test262/ch11/11.9/11.9.1/S11.9.1_A4.1_T1.js b/js/src/tests/test262/ch11/11.9/11.9.1/S11.9.1_A4.1_T1.js
new file mode 100644
index 000000000..2e5b4738a
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.9/11.9.1/S11.9.1_A4.1_T1.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.
+
+/**
+ * If x or y is NaN, return false
+ *
+ * @path ch11/11.9/11.9.1/S11.9.1_A4.1_T1.js
+ * @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/js/src/tests/test262/ch11/11.9/11.9.1/S11.9.1_A4.1_T2.js b/js/src/tests/test262/ch11/11.9/11.9.1/S11.9.1_A4.1_T2.js
new file mode 100644
index 000000000..8d3be41d2
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.9/11.9.1/S11.9.1_A4.1_T2.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.
+
+/**
+ * If x or y is NaN, return false
+ *
+ * @path ch11/11.9/11.9.1/S11.9.1_A4.1_T2.js
+ * @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/js/src/tests/test262/ch11/11.9/11.9.1/S11.9.1_A4.2.js b/js/src/tests/test262/ch11/11.9/11.9.1/S11.9.1_A4.2.js
new file mode 100644
index 000000000..b7e26344d
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.9/11.9.1/S11.9.1_A4.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.
+
+/**
+ * If x is +0(-0) and y is -0(+0), return true
+ *
+ * @path ch11/11.9/11.9.1/S11.9.1_A4.2.js
+ * @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/js/src/tests/test262/ch11/11.9/11.9.1/S11.9.1_A4.3.js b/js/src/tests/test262/ch11/11.9/11.9.1/S11.9.1_A4.3.js
new file mode 100644
index 000000000..b888b280c
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.9/11.9.1/S11.9.1_A4.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.
+
+/**
+ * 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
+ *
+ * @path ch11/11.9/11.9.1/S11.9.1_A4.3.js
+ * @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/js/src/tests/test262/ch11/11.9/11.9.1/S11.9.1_A5.1.js b/js/src/tests/test262/ch11/11.9/11.9.1/S11.9.1_A5.1.js
new file mode 100644
index 000000000..26ba2d50d
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.9/11.9.1/S11.9.1_A5.1.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.
+
+/**
+ * Type(x) and Type(y) are String-s.
+ * Return true, if x and y are exactly the same sequence of characters; otherwise, return false
+ *
+ * @path ch11/11.9/11.9.1/S11.9.1_A5.1.js
+ * @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/js/src/tests/test262/ch11/11.9/11.9.1/S11.9.1_A5.2.js b/js/src/tests/test262/ch11/11.9/11.9.1/S11.9.1_A5.2.js
new file mode 100644
index 000000000..a6464a519
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.9/11.9.1/S11.9.1_A5.2.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.
+
+/**
+ * If Type(x) is Number and Type(y) is String,
+ * return the result of comparison x == ToNumber(y)
+ *
+ * @path ch11/11.9/11.9.1/S11.9.1_A5.2.js
+ * @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/js/src/tests/test262/ch11/11.9/11.9.1/S11.9.1_A5.3.js b/js/src/tests/test262/ch11/11.9/11.9.1/S11.9.1_A5.3.js
new file mode 100644
index 000000000..7fb95cf74
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.9/11.9.1/S11.9.1_A5.3.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.
+
+/**
+ * If Type(x) is String and Type(y) is Number,
+ * return the result of comparison ToNumber(x) == y
+ *
+ * @path ch11/11.9/11.9.1/S11.9.1_A5.3.js
+ * @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/js/src/tests/test262/ch11/11.9/11.9.1/S11.9.1_A6.1.js b/js/src/tests/test262/ch11/11.9/11.9.1/S11.9.1_A6.1.js
new file mode 100644
index 000000000..95e8b80d7
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.9/11.9.1/S11.9.1_A6.1.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.
+
+/**
+ * If Type(x) as well as Type(y) is undefined or null, return true
+ *
+ * @path ch11/11.9/11.9.1/S11.9.1_A6.1.js
+ * @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/js/src/tests/test262/ch11/11.9/11.9.1/S11.9.1_A6.2_T1.js b/js/src/tests/test262/ch11/11.9/11.9.1/S11.9.1_A6.2_T1.js
new file mode 100644
index 000000000..4dcf84051
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.9/11.9.1/S11.9.1_A6.2_T1.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.
+
+/**
+ * If one expression is undefined or null and another is not, return false
+ *
+ * @path ch11/11.9/11.9.1/S11.9.1_A6.2_T1.js
+ * @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/js/src/tests/test262/ch11/11.9/11.9.1/S11.9.1_A6.2_T2.js b/js/src/tests/test262/ch11/11.9/11.9.1/S11.9.1_A6.2_T2.js
new file mode 100644
index 000000000..6f5f2ac70
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.9/11.9.1/S11.9.1_A6.2_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.
+
+/**
+ * If one expression is undefined or null and another is not, return false
+ *
+ * @path ch11/11.9/11.9.1/S11.9.1_A6.2_T2.js
+ * @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/js/src/tests/test262/ch11/11.9/11.9.1/S11.9.1_A7.1.js b/js/src/tests/test262/ch11/11.9/11.9.1/S11.9.1_A7.1.js
new file mode 100644
index 000000000..b2f0d23a7
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.9/11.9.1/S11.9.1_A7.1.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.
+
+/**
+ * Type(x) and Type(y) are Object-s.
+ * Return true, if x and y are references to the same Object; otherwise, return false
+ *
+ * @path ch11/11.9/11.9.1/S11.9.1_A7.1.js
+ * @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/js/src/tests/test262/ch11/11.9/11.9.1/S11.9.1_A7.2.js b/js/src/tests/test262/ch11/11.9/11.9.1/S11.9.1_A7.2.js
new file mode 100644
index 000000000..5704688ae
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.9/11.9.1/S11.9.1_A7.2.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.
+
+/**
+ * If Type(x) is Object and Type(y) is Boolean,
+ * return ToPrimitive(x) == y
+ *
+ * @path ch11/11.9/11.9.1/S11.9.1_A7.2.js
+ * @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/js/src/tests/test262/ch11/11.9/11.9.1/S11.9.1_A7.3.js b/js/src/tests/test262/ch11/11.9/11.9.1/S11.9.1_A7.3.js
new file mode 100644
index 000000000..c0c89cea0
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.9/11.9.1/S11.9.1_A7.3.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.
+
+/**
+ * If Type(x) is Boolean and Type(y) is Object,
+ * return x == ToPrimitive(y)
+ *
+ * @path ch11/11.9/11.9.1/S11.9.1_A7.3.js
+ * @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/js/src/tests/test262/ch11/11.9/11.9.1/S11.9.1_A7.4.js b/js/src/tests/test262/ch11/11.9/11.9.1/S11.9.1_A7.4.js
new file mode 100644
index 000000000..65ce2df60
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.9/11.9.1/S11.9.1_A7.4.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.
+
+/**
+ * If Type(x) is Object and Type(y) is Number,
+ * return ToPrimitive(x) == y
+ *
+ * @path ch11/11.9/11.9.1/S11.9.1_A7.4.js
+ * @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/js/src/tests/test262/ch11/11.9/11.9.1/S11.9.1_A7.5.js b/js/src/tests/test262/ch11/11.9/11.9.1/S11.9.1_A7.5.js
new file mode 100644
index 000000000..87cbe6eed
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.9/11.9.1/S11.9.1_A7.5.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.
+
+/**
+ * If Type(x) is Number and Type(y) is Object,
+ * return x == ToPrimitive(y)
+ *
+ * @path ch11/11.9/11.9.1/S11.9.1_A7.5.js
+ * @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/js/src/tests/test262/ch11/11.9/11.9.1/S11.9.1_A7.6.js b/js/src/tests/test262/ch11/11.9/11.9.1/S11.9.1_A7.6.js
new file mode 100644
index 000000000..986f66b90
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.9/11.9.1/S11.9.1_A7.6.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.
+
+/**
+ * If Type(x) is Object and Type(y) is String,
+ * return ToPrimitive(x) == y
+ *
+ * @path ch11/11.9/11.9.1/S11.9.1_A7.6.js
+ * @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/js/src/tests/test262/ch11/11.9/11.9.1/S11.9.1_A7.7.js b/js/src/tests/test262/ch11/11.9/11.9.1/S11.9.1_A7.7.js
new file mode 100644
index 000000000..4d8412d30
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.9/11.9.1/S11.9.1_A7.7.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.
+
+/**
+ * If Type(x) is String and Type(y) is Object,
+ * return x == ToPrimitive(y)
+ *
+ * @path ch11/11.9/11.9.1/S11.9.1_A7.7.js
+ * @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/js/src/tests/test262/ch11/11.9/11.9.1/S11.9.1_A7.8.js b/js/src/tests/test262/ch11/11.9/11.9.1/S11.9.1_A7.8.js
new file mode 100644
index 000000000..9aa54434e
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.9/11.9.1/S11.9.1_A7.8.js
@@ -0,0 +1,76 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * If Type(x) is Object and Type(y) is primitive type,
+ * return ToPrimitive(x) == y
+ *
+ * @path ch11/11.9/11.9.1/S11.9.1_A7.8.js
+ * @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/js/src/tests/test262/ch11/11.9/11.9.1/S11.9.1_A7.9.js b/js/src/tests/test262/ch11/11.9/11.9.1/S11.9.1_A7.9.js
new file mode 100644
index 000000000..ba4d0f38d
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.9/11.9.1/S11.9.1_A7.9.js
@@ -0,0 +1,76 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * If Type(x) is primitive type and Type(y) is Object,
+ * return x == ToPrimitive(y)
+ *
+ * @path ch11/11.9/11.9.1/S11.9.1_A7.9.js
+ * @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/js/src/tests/test262/ch11/11.9/11.9.1/browser.js b/js/src/tests/test262/ch11/11.9/11.9.1/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.9/11.9.1/browser.js
diff --git a/js/src/tests/test262/ch11/11.9/11.9.1/shell.js b/js/src/tests/test262/ch11/11.9/11.9.1/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.9/11.9.1/shell.js
diff --git a/js/src/tests/test262/ch11/11.9/11.9.2/S11.9.2_A1.js b/js/src/tests/test262/ch11/11.9/11.9.2/S11.9.2_A1.js
new file mode 100644
index 000000000..5478e2d8c
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.9/11.9.2/S11.9.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.
+
+/**
+ * White Space and Line Terminator between EqualityExpression and "!=" or between "!=" and RelationalExpression are allowed
+ *
+ * @path ch11/11.9/11.9.2/S11.9.2_A1.js
+ * @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/js/src/tests/test262/ch11/11.9/11.9.2/S11.9.2_A2.1_T1.js b/js/src/tests/test262/ch11/11.9/11.9.2/S11.9.2_A2.1_T1.js
new file mode 100644
index 000000000..12b5bbe42
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.9/11.9.2/S11.9.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.
+
+/**
+ * Operator x != y uses GetValue
+ *
+ * @path ch11/11.9/11.9.2/S11.9.2_A2.1_T1.js
+ * @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/js/src/tests/test262/ch11/11.9/11.9.2/S11.9.2_A2.1_T2.js b/js/src/tests/test262/ch11/11.9/11.9.2/S11.9.2_A2.1_T2.js
new file mode 100644
index 000000000..aaf6f6a8c
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.9/11.9.2/S11.9.2_A2.1_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.
+
+/**
+ * Operator x != y uses GetValue
+ *
+ * @path ch11/11.9/11.9.2/S11.9.2_A2.1_T2.js
+ * @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/js/src/tests/test262/ch11/11.9/11.9.2/S11.9.2_A2.1_T3.js b/js/src/tests/test262/ch11/11.9/11.9.2/S11.9.2_A2.1_T3.js
new file mode 100644
index 000000000..f8e65a173
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.9/11.9.2/S11.9.2_A2.1_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.
+
+/**
+ * Operator x != y uses GetValue
+ *
+ * @path ch11/11.9/11.9.2/S11.9.2_A2.1_T3.js
+ * @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/js/src/tests/test262/ch11/11.9/11.9.2/S11.9.2_A2.4_T1.js b/js/src/tests/test262/ch11/11.9/11.9.2/S11.9.2_A2.4_T1.js
new file mode 100644
index 000000000..5cb029e4f
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.9/11.9.2/S11.9.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.
+
+/**
+ * First expression is evaluated first, and then second expression
+ *
+ * @path ch11/11.9/11.9.2/S11.9.2_A2.4_T1.js
+ * @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/js/src/tests/test262/ch11/11.9/11.9.2/S11.9.2_A2.4_T2.js b/js/src/tests/test262/ch11/11.9/11.9.2/S11.9.2_A2.4_T2.js
new file mode 100644
index 000000000..6570ee33b
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.9/11.9.2/S11.9.2_A2.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.
+
+/**
+ * First expression is evaluated first, and then second expression
+ *
+ * @path ch11/11.9/11.9.2/S11.9.2_A2.4_T2.js
+ * @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/js/src/tests/test262/ch11/11.9/11.9.2/S11.9.2_A2.4_T3.js b/js/src/tests/test262/ch11/11.9/11.9.2/S11.9.2_A2.4_T3.js
new file mode 100644
index 000000000..93cde317e
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.9/11.9.2/S11.9.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.
+
+/**
+ * First expression is evaluated first, and then second expression
+ *
+ * @path ch11/11.9/11.9.2/S11.9.2_A2.4_T3.js
+ * @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/js/src/tests/test262/ch11/11.9/11.9.2/S11.9.2_A3.1.js b/js/src/tests/test262/ch11/11.9/11.9.2/S11.9.2_A3.1.js
new file mode 100644
index 000000000..79921a295
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.9/11.9.2/S11.9.2_A3.1.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.
+
+/**
+ * Return false, if x and y are both true or both false; otherwise, return true
+ *
+ * @path ch11/11.9/11.9.2/S11.9.2_A3.1.js
+ * @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/js/src/tests/test262/ch11/11.9/11.9.2/S11.9.2_A3.2.js b/js/src/tests/test262/ch11/11.9/11.9.2/S11.9.2_A3.2.js
new file mode 100644
index 000000000..ff0f9c832
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.9/11.9.2/S11.9.2_A3.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.
+
+/**
+ * If Type(x) is Boolean and Type(y) is Number,
+ * return the result of comparison ToNumber(x) != y
+ *
+ * @path ch11/11.9/11.9.2/S11.9.2_A3.2.js
+ * @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/js/src/tests/test262/ch11/11.9/11.9.2/S11.9.2_A3.3.js b/js/src/tests/test262/ch11/11.9/11.9.2/S11.9.2_A3.3.js
new file mode 100644
index 000000000..b32bf7fbd
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.9/11.9.2/S11.9.2_A3.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.
+
+/**
+ * If Type(y) is Number and Type(y) is Boolean,
+ * return the result of comparison x != ToNumber(y)
+ *
+ * @path ch11/11.9/11.9.2/S11.9.2_A3.3.js
+ * @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/js/src/tests/test262/ch11/11.9/11.9.2/S11.9.2_A4.1_T1.js b/js/src/tests/test262/ch11/11.9/11.9.2/S11.9.2_A4.1_T1.js
new file mode 100644
index 000000000..98b9d074b
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.9/11.9.2/S11.9.2_A4.1_T1.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.
+
+/**
+ * If x or y is NaN, return true
+ *
+ * @path ch11/11.9/11.9.2/S11.9.2_A4.1_T1.js
+ * @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/js/src/tests/test262/ch11/11.9/11.9.2/S11.9.2_A4.1_T2.js b/js/src/tests/test262/ch11/11.9/11.9.2/S11.9.2_A4.1_T2.js
new file mode 100644
index 000000000..471bcb6f6
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.9/11.9.2/S11.9.2_A4.1_T2.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.
+
+/**
+ * If x or y is NaN, return true
+ *
+ * @path ch11/11.9/11.9.2/S11.9.2_A4.1_T2.js
+ * @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/js/src/tests/test262/ch11/11.9/11.9.2/S11.9.2_A4.2.js b/js/src/tests/test262/ch11/11.9/11.9.2/S11.9.2_A4.2.js
new file mode 100644
index 000000000..b8045a6a0
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.9/11.9.2/S11.9.2_A4.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.
+
+/**
+ * If x is +0(-0) and y is -0(+0), return false
+ *
+ * @path ch11/11.9/11.9.2/S11.9.2_A4.2.js
+ * @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/js/src/tests/test262/ch11/11.9/11.9.2/S11.9.2_A4.3.js b/js/src/tests/test262/ch11/11.9/11.9.2/S11.9.2_A4.3.js
new file mode 100644
index 000000000..21cc16ee1
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.9/11.9.2/S11.9.2_A4.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.
+
+/**
+ * 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
+ *
+ * @path ch11/11.9/11.9.2/S11.9.2_A4.3.js
+ * @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/js/src/tests/test262/ch11/11.9/11.9.2/S11.9.2_A5.1.js b/js/src/tests/test262/ch11/11.9/11.9.2/S11.9.2_A5.1.js
new file mode 100644
index 000000000..9476d907a
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.9/11.9.2/S11.9.2_A5.1.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.
+
+/**
+ * Type(x) and Type(y) are String-s.
+ * Return true, if x and y are exactly the same sequence of characters; otherwise, return false
+ *
+ * @path ch11/11.9/11.9.2/S11.9.2_A5.1.js
+ * @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/js/src/tests/test262/ch11/11.9/11.9.2/S11.9.2_A5.2.js b/js/src/tests/test262/ch11/11.9/11.9.2/S11.9.2_A5.2.js
new file mode 100644
index 000000000..f63ffc17d
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.9/11.9.2/S11.9.2_A5.2.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.
+
+/**
+ * If Type(x) is Number and Type(y) is String,
+ * return the result of comparison x != ToNumber(y)
+ *
+ * @path ch11/11.9/11.9.2/S11.9.2_A5.2.js
+ * @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/js/src/tests/test262/ch11/11.9/11.9.2/S11.9.2_A5.3.js b/js/src/tests/test262/ch11/11.9/11.9.2/S11.9.2_A5.3.js
new file mode 100644
index 000000000..dedd18ce0
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.9/11.9.2/S11.9.2_A5.3.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.
+
+/**
+ * If Type(x) is String and Type(y) is Number,
+ * return the result of comparison ToNumber(x) != y
+ *
+ * @path ch11/11.9/11.9.2/S11.9.2_A5.3.js
+ * @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/js/src/tests/test262/ch11/11.9/11.9.2/S11.9.2_A6.1.js b/js/src/tests/test262/ch11/11.9/11.9.2/S11.9.2_A6.1.js
new file mode 100644
index 000000000..8d0cfcd35
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.9/11.9.2/S11.9.2_A6.1.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.
+
+/**
+ * If Type(x) as well as Type(y) is Undefined or Null, return true
+ *
+ * @path ch11/11.9/11.9.2/S11.9.2_A6.1.js
+ * @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/js/src/tests/test262/ch11/11.9/11.9.2/S11.9.2_A6.2_T1.js b/js/src/tests/test262/ch11/11.9/11.9.2/S11.9.2_A6.2_T1.js
new file mode 100644
index 000000000..e9a60e124
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.9/11.9.2/S11.9.2_A6.2_T1.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.
+
+/**
+ * If one expression is undefined or null and another is not, return false
+ *
+ * @path ch11/11.9/11.9.2/S11.9.2_A6.2_T1.js
+ * @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/js/src/tests/test262/ch11/11.9/11.9.2/S11.9.2_A6.2_T2.js b/js/src/tests/test262/ch11/11.9/11.9.2/S11.9.2_A6.2_T2.js
new file mode 100644
index 000000000..05b592b48
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.9/11.9.2/S11.9.2_A6.2_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.
+
+/**
+ * If one expression is undefined or null and another is not, return false
+ *
+ * @path ch11/11.9/11.9.2/S11.9.2_A6.2_T2.js
+ * @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/js/src/tests/test262/ch11/11.9/11.9.2/S11.9.2_A7.1.js b/js/src/tests/test262/ch11/11.9/11.9.2/S11.9.2_A7.1.js
new file mode 100644
index 000000000..66b468892
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.9/11.9.2/S11.9.2_A7.1.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.
+
+/**
+ * Type(x) and Type(y) are Object-s.
+ * Return true, if x and y are references to the same Object; otherwise, return false
+ *
+ * @path ch11/11.9/11.9.2/S11.9.2_A7.1.js
+ * @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/js/src/tests/test262/ch11/11.9/11.9.2/S11.9.2_A7.2.js b/js/src/tests/test262/ch11/11.9/11.9.2/S11.9.2_A7.2.js
new file mode 100644
index 000000000..44252a045
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.9/11.9.2/S11.9.2_A7.2.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.
+
+/**
+ * If Type(x) is Object and Type(y) is Boolean,
+ * return ToPrimitive(x) != y
+ *
+ * @path ch11/11.9/11.9.2/S11.9.2_A7.2.js
+ * @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/js/src/tests/test262/ch11/11.9/11.9.2/S11.9.2_A7.3.js b/js/src/tests/test262/ch11/11.9/11.9.2/S11.9.2_A7.3.js
new file mode 100644
index 000000000..7bd33386e
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.9/11.9.2/S11.9.2_A7.3.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.
+
+/**
+ * If Type(x) is Boolean and Type(y) is Object,
+ * return x != ToPrimitive(y)
+ *
+ * @path ch11/11.9/11.9.2/S11.9.2_A7.3.js
+ * @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/js/src/tests/test262/ch11/11.9/11.9.2/S11.9.2_A7.4.js b/js/src/tests/test262/ch11/11.9/11.9.2/S11.9.2_A7.4.js
new file mode 100644
index 000000000..c13672d52
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.9/11.9.2/S11.9.2_A7.4.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.
+
+/**
+ * If Type(x) is Object and Type(y) is Number,
+ * return ToPrimitive(x) != y
+ *
+ * @path ch11/11.9/11.9.2/S11.9.2_A7.4.js
+ * @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/js/src/tests/test262/ch11/11.9/11.9.2/S11.9.2_A7.5.js b/js/src/tests/test262/ch11/11.9/11.9.2/S11.9.2_A7.5.js
new file mode 100644
index 000000000..c6cfc4976
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.9/11.9.2/S11.9.2_A7.5.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.
+
+/**
+ * If Type(x) is Number and Type(y) is Object,
+ * return x != ToPrimitive(y)
+ *
+ * @path ch11/11.9/11.9.2/S11.9.2_A7.5.js
+ * @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/js/src/tests/test262/ch11/11.9/11.9.2/S11.9.2_A7.6.js b/js/src/tests/test262/ch11/11.9/11.9.2/S11.9.2_A7.6.js
new file mode 100644
index 000000000..286b9d4d0
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.9/11.9.2/S11.9.2_A7.6.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.
+
+/**
+ * If Type(x) is Object and Type(y) is String,
+ * return ToPrimitive(x) != y
+ *
+ * @path ch11/11.9/11.9.2/S11.9.2_A7.6.js
+ * @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/js/src/tests/test262/ch11/11.9/11.9.2/S11.9.2_A7.7.js b/js/src/tests/test262/ch11/11.9/11.9.2/S11.9.2_A7.7.js
new file mode 100644
index 000000000..cdc8161e0
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.9/11.9.2/S11.9.2_A7.7.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.
+
+/**
+ * If Type(x) is String and Type(y) is Object,
+ * return x != ToPrimitive(y)
+ *
+ * @path ch11/11.9/11.9.2/S11.9.2_A7.7.js
+ * @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/js/src/tests/test262/ch11/11.9/11.9.2/S11.9.2_A7.8.js b/js/src/tests/test262/ch11/11.9/11.9.2/S11.9.2_A7.8.js
new file mode 100644
index 000000000..cf9766d79
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.9/11.9.2/S11.9.2_A7.8.js
@@ -0,0 +1,76 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * If Type(x) is Object and Type(y) is primitive type,
+ * return ToPrimitive(x) != y
+ *
+ * @path ch11/11.9/11.9.2/S11.9.2_A7.8.js
+ * @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/js/src/tests/test262/ch11/11.9/11.9.2/S11.9.2_A7.9.js b/js/src/tests/test262/ch11/11.9/11.9.2/S11.9.2_A7.9.js
new file mode 100644
index 000000000..c1ccc5f32
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.9/11.9.2/S11.9.2_A7.9.js
@@ -0,0 +1,76 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * If Type(x) is primitive type and Type(y) is Object,
+ * return x != ToPrimitive(y)
+ *
+ * @path ch11/11.9/11.9.2/S11.9.2_A7.9.js
+ * @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/js/src/tests/test262/ch11/11.9/11.9.2/browser.js b/js/src/tests/test262/ch11/11.9/11.9.2/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.9/11.9.2/browser.js
diff --git a/js/src/tests/test262/ch11/11.9/11.9.2/shell.js b/js/src/tests/test262/ch11/11.9/11.9.2/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.9/11.9.2/shell.js
diff --git a/js/src/tests/test262/ch11/11.9/11.9.4/S11.9.4_A1.js b/js/src/tests/test262/ch11/11.9/11.9.4/S11.9.4_A1.js
new file mode 100644
index 000000000..410fe3962
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.9/11.9.4/S11.9.4_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.
+
+/**
+ * White Space and Line Terminator between EqualityExpression and "===" or between "===" and RelationalExpression are allowed
+ *
+ * @path ch11/11.9/11.9.4/S11.9.4_A1.js
+ * @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/js/src/tests/test262/ch11/11.9/11.9.4/S11.9.4_A2.1_T1.js b/js/src/tests/test262/ch11/11.9/11.9.4/S11.9.4_A2.1_T1.js
new file mode 100644
index 000000000..b9a1958cb
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.9/11.9.4/S11.9.4_A2.1_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.
+
+/**
+ * Operator x === y uses GetValue
+ *
+ * @path ch11/11.9/11.9.4/S11.9.4_A2.1_T1.js
+ * @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/js/src/tests/test262/ch11/11.9/11.9.4/S11.9.4_A2.1_T2.js b/js/src/tests/test262/ch11/11.9/11.9.4/S11.9.4_A2.1_T2.js
new file mode 100644
index 000000000..c0741ccd1
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.9/11.9.4/S11.9.4_A2.1_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.
+
+/**
+ * Operator x === y uses GetValue
+ *
+ * @path ch11/11.9/11.9.4/S11.9.4_A2.1_T2.js
+ * @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/js/src/tests/test262/ch11/11.9/11.9.4/S11.9.4_A2.1_T3.js b/js/src/tests/test262/ch11/11.9/11.9.4/S11.9.4_A2.1_T3.js
new file mode 100644
index 000000000..dc50a2505
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.9/11.9.4/S11.9.4_A2.1_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.
+
+/**
+ * Operator x === y uses GetValue
+ *
+ * @path ch11/11.9/11.9.4/S11.9.4_A2.1_T3.js
+ * @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/js/src/tests/test262/ch11/11.9/11.9.4/S11.9.4_A2.4_T1.js b/js/src/tests/test262/ch11/11.9/11.9.4/S11.9.4_A2.4_T1.js
new file mode 100644
index 000000000..f24d933b0
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.9/11.9.4/S11.9.4_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.
+
+/**
+ * First expression is evaluated first, and then second expression
+ *
+ * @path ch11/11.9/11.9.4/S11.9.4_A2.4_T1.js
+ * @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/js/src/tests/test262/ch11/11.9/11.9.4/S11.9.4_A2.4_T2.js b/js/src/tests/test262/ch11/11.9/11.9.4/S11.9.4_A2.4_T2.js
new file mode 100644
index 000000000..02fe1ba7c
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.9/11.9.4/S11.9.4_A2.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.
+
+/**
+ * First expression is evaluated first, and then second expression
+ *
+ * @path ch11/11.9/11.9.4/S11.9.4_A2.4_T2.js
+ * @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/js/src/tests/test262/ch11/11.9/11.9.4/S11.9.4_A2.4_T3.js b/js/src/tests/test262/ch11/11.9/11.9.4/S11.9.4_A2.4_T3.js
new file mode 100644
index 000000000..5b9fa7a03
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.9/11.9.4/S11.9.4_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.
+
+/**
+ * First expression is evaluated first, and then second expression
+ *
+ * @path ch11/11.9/11.9.4/S11.9.4_A2.4_T3.js
+ * @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/js/src/tests/test262/ch11/11.9/11.9.4/S11.9.4_A3.js b/js/src/tests/test262/ch11/11.9/11.9.4/S11.9.4_A3.js
new file mode 100644
index 000000000..5fc2545d4
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.9/11.9.4/S11.9.4_A3.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.
+
+/**
+ * Type(x) and Type(y) are Boolean-s.
+ * Return true, if x and y are both true and both false; otherwise, return false
+ *
+ * @path ch11/11.9/11.9.4/S11.9.4_A3.js
+ * @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/js/src/tests/test262/ch11/11.9/11.9.4/S11.9.4_A4.1_T1.js b/js/src/tests/test262/ch11/11.9/11.9.4/S11.9.4_A4.1_T1.js
new file mode 100644
index 000000000..b742929df
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.9/11.9.4/S11.9.4_A4.1_T1.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.
+
+/**
+ * If x or y is NaN, return false
+ *
+ * @path ch11/11.9/11.9.4/S11.9.4_A4.1_T1.js
+ * @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/js/src/tests/test262/ch11/11.9/11.9.4/S11.9.4_A4.1_T2.js b/js/src/tests/test262/ch11/11.9/11.9.4/S11.9.4_A4.1_T2.js
new file mode 100644
index 000000000..3cd02a9fd
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.9/11.9.4/S11.9.4_A4.1_T2.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.
+
+/**
+ * If x or y is NaN, return false
+ *
+ * @path ch11/11.9/11.9.4/S11.9.4_A4.1_T2.js
+ * @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/js/src/tests/test262/ch11/11.9/11.9.4/S11.9.4_A4.2.js b/js/src/tests/test262/ch11/11.9/11.9.4/S11.9.4_A4.2.js
new file mode 100644
index 000000000..7de56ed7d
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.9/11.9.4/S11.9.4_A4.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.
+
+/**
+ * If x is +0(-0) and y is -0(+0), return true
+ *
+ * @path ch11/11.9/11.9.4/S11.9.4_A4.2.js
+ * @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/js/src/tests/test262/ch11/11.9/11.9.4/S11.9.4_A4.3.js b/js/src/tests/test262/ch11/11.9/11.9.4/S11.9.4_A4.3.js
new file mode 100644
index 000000000..e13bea441
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.9/11.9.4/S11.9.4_A4.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.
+
+/**
+ * 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
+ *
+ * @path ch11/11.9/11.9.4/S11.9.4_A4.3.js
+ * @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/js/src/tests/test262/ch11/11.9/11.9.4/S11.9.4_A5.js b/js/src/tests/test262/ch11/11.9/11.9.4/S11.9.4_A5.js
new file mode 100644
index 000000000..f32d7c5ae
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.9/11.9.4/S11.9.4_A5.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.
+
+/**
+ * Type(x) and Type(y) are String-s.
+ * Return true, if x and y are exactly the same sequence of characters; otherwise, return false
+ *
+ * @path ch11/11.9/11.9.4/S11.9.4_A5.js
+ * @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/js/src/tests/test262/ch11/11.9/11.9.4/S11.9.4_A6.1.js b/js/src/tests/test262/ch11/11.9/11.9.4/S11.9.4_A6.1.js
new file mode 100644
index 000000000..b392d432a
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.9/11.9.4/S11.9.4_A6.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.
+
+/**
+ * If Type(x) and Type(y) are Undefined-s, return true
+ *
+ * @path ch11/11.9/11.9.4/S11.9.4_A6.1.js
+ * @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/js/src/tests/test262/ch11/11.9/11.9.4/S11.9.4_A6.2.js b/js/src/tests/test262/ch11/11.9/11.9.4/S11.9.4_A6.2.js
new file mode 100644
index 000000000..82bdbea6f
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.9/11.9.4/S11.9.4_A6.2.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.
+
+/**
+ * If Type(x) and Type(y) are Null-s, return true
+ *
+ * @path ch11/11.9/11.9.4/S11.9.4_A6.2.js
+ * @description null === null
+ */
+
+//CHECK#1
+if (!(null === null)) {
+ $ERROR('#1: null === null');
+}
+
diff --git a/js/src/tests/test262/ch11/11.9/11.9.4/S11.9.4_A7.js b/js/src/tests/test262/ch11/11.9/11.9.4/S11.9.4_A7.js
new file mode 100644
index 000000000..0c27f3df5
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.9/11.9.4/S11.9.4_A7.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.
+
+/**
+ * Type(x) and Type(y) are Object-s.
+ * Return true, if x and y are references to the same Object; otherwise, return false
+ *
+ * @path ch11/11.9/11.9.4/S11.9.4_A7.js
+ * @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/js/src/tests/test262/ch11/11.9/11.9.4/S11.9.4_A8_T1.js b/js/src/tests/test262/ch11/11.9/11.9.4/S11.9.4_A8_T1.js
new file mode 100644
index 000000000..ce51dddef
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.9/11.9.4/S11.9.4_A8_T1.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.
+
+/**
+ * If Type(x) is different from Type(y), return false
+ *
+ * @path ch11/11.9/11.9.4/S11.9.4_A8_T1.js
+ * @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/js/src/tests/test262/ch11/11.9/11.9.4/S11.9.4_A8_T2.js b/js/src/tests/test262/ch11/11.9/11.9.4/S11.9.4_A8_T2.js
new file mode 100644
index 000000000..c7bfa4d5b
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.9/11.9.4/S11.9.4_A8_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.
+
+/**
+ * If Type(x) is different from Type(y), return false
+ *
+ * @path ch11/11.9/11.9.4/S11.9.4_A8_T2.js
+ * @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/js/src/tests/test262/ch11/11.9/11.9.4/S11.9.4_A8_T3.js b/js/src/tests/test262/ch11/11.9/11.9.4/S11.9.4_A8_T3.js
new file mode 100644
index 000000000..a448bbd70
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.9/11.9.4/S11.9.4_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.
+
+/**
+ * If Type(x) is different from Type(y), return false
+ *
+ * @path ch11/11.9/11.9.4/S11.9.4_A8_T3.js
+ * @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/js/src/tests/test262/ch11/11.9/11.9.4/S11.9.4_A8_T4.js b/js/src/tests/test262/ch11/11.9/11.9.4/S11.9.4_A8_T4.js
new file mode 100644
index 000000000..92aa846ca
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.9/11.9.4/S11.9.4_A8_T4.js
@@ -0,0 +1,80 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * If Type(x) is different from Type(y), return false
+ *
+ * @path ch11/11.9/11.9.4/S11.9.4_A8_T4.js
+ * @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/js/src/tests/test262/ch11/11.9/11.9.4/S11.9.4_A8_T5.js b/js/src/tests/test262/ch11/11.9/11.9.4/S11.9.4_A8_T5.js
new file mode 100644
index 000000000..5e6bdb2fd
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.9/11.9.4/S11.9.4_A8_T5.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.
+
+/**
+ * If Type(x) is different from Type(y), return false
+ *
+ * @path ch11/11.9/11.9.4/S11.9.4_A8_T5.js
+ * @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/js/src/tests/test262/ch11/11.9/11.9.4/browser.js b/js/src/tests/test262/ch11/11.9/11.9.4/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.9/11.9.4/browser.js
diff --git a/js/src/tests/test262/ch11/11.9/11.9.4/shell.js b/js/src/tests/test262/ch11/11.9/11.9.4/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.9/11.9.4/shell.js
diff --git a/js/src/tests/test262/ch11/11.9/11.9.5/S11.9.5_A1.js b/js/src/tests/test262/ch11/11.9/11.9.5/S11.9.5_A1.js
new file mode 100644
index 000000000..c9e88dc0c
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.9/11.9.5/S11.9.5_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.
+
+/**
+ * White Space and Line Terminator between EqualityExpression and "!==" or between "!==" and RelationalExpression are allowed
+ *
+ * @path ch11/11.9/11.9.5/S11.9.5_A1.js
+ * @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/js/src/tests/test262/ch11/11.9/11.9.5/S11.9.5_A2.1_T1.js b/js/src/tests/test262/ch11/11.9/11.9.5/S11.9.5_A2.1_T1.js
new file mode 100644
index 000000000..4e9c43c3b
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.9/11.9.5/S11.9.5_A2.1_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.
+
+/**
+ * Operator x !== y uses GetValue
+ *
+ * @path ch11/11.9/11.9.5/S11.9.5_A2.1_T1.js
+ * @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/js/src/tests/test262/ch11/11.9/11.9.5/S11.9.5_A2.1_T2.js b/js/src/tests/test262/ch11/11.9/11.9.5/S11.9.5_A2.1_T2.js
new file mode 100644
index 000000000..52637ce50
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.9/11.9.5/S11.9.5_A2.1_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.
+
+/**
+ * Operator x !== y uses GetValue
+ *
+ * @path ch11/11.9/11.9.5/S11.9.5_A2.1_T2.js
+ * @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/js/src/tests/test262/ch11/11.9/11.9.5/S11.9.5_A2.1_T3.js b/js/src/tests/test262/ch11/11.9/11.9.5/S11.9.5_A2.1_T3.js
new file mode 100644
index 000000000..e568cbe31
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.9/11.9.5/S11.9.5_A2.1_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.
+
+/**
+ * Operator x !== y uses GetValue
+ *
+ * @path ch11/11.9/11.9.5/S11.9.5_A2.1_T3.js
+ * @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/js/src/tests/test262/ch11/11.9/11.9.5/S11.9.5_A2.4_T1.js b/js/src/tests/test262/ch11/11.9/11.9.5/S11.9.5_A2.4_T1.js
new file mode 100644
index 000000000..7ed77b440
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.9/11.9.5/S11.9.5_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.
+
+/**
+ * First expression is evaluated first, and then second expression
+ *
+ * @path ch11/11.9/11.9.5/S11.9.5_A2.4_T1.js
+ * @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/js/src/tests/test262/ch11/11.9/11.9.5/S11.9.5_A2.4_T2.js b/js/src/tests/test262/ch11/11.9/11.9.5/S11.9.5_A2.4_T2.js
new file mode 100644
index 000000000..b2872fcde
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.9/11.9.5/S11.9.5_A2.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.
+
+/**
+ * First expression is evaluated first, and then second expression
+ *
+ * @path ch11/11.9/11.9.5/S11.9.5_A2.4_T2.js
+ * @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/js/src/tests/test262/ch11/11.9/11.9.5/S11.9.5_A2.4_T3.js b/js/src/tests/test262/ch11/11.9/11.9.5/S11.9.5_A2.4_T3.js
new file mode 100644
index 000000000..d25f15e4d
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.9/11.9.5/S11.9.5_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.
+
+/**
+ * First expression is evaluated first, and then second expression
+ *
+ * @path ch11/11.9/11.9.5/S11.9.5_A2.4_T3.js
+ * @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/js/src/tests/test262/ch11/11.9/11.9.5/S11.9.5_A3.js b/js/src/tests/test262/ch11/11.9/11.9.5/S11.9.5_A3.js
new file mode 100644
index 000000000..f13b4574d
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.9/11.9.5/S11.9.5_A3.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.
+
+/**
+ * Type(x) and Type(y) are Boolean-s.
+ * Return false, if x and y are both true or both false; otherwise, return true
+ *
+ * @path ch11/11.9/11.9.5/S11.9.5_A3.js
+ * @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/js/src/tests/test262/ch11/11.9/11.9.5/S11.9.5_A4.1_T1.js b/js/src/tests/test262/ch11/11.9/11.9.5/S11.9.5_A4.1_T1.js
new file mode 100644
index 000000000..44548006b
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.9/11.9.5/S11.9.5_A4.1_T1.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.
+
+/**
+ * If x or y is NaN, return true
+ *
+ * @path ch11/11.9/11.9.5/S11.9.5_A4.1_T1.js
+ * @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/js/src/tests/test262/ch11/11.9/11.9.5/S11.9.5_A4.1_T2.js b/js/src/tests/test262/ch11/11.9/11.9.5/S11.9.5_A4.1_T2.js
new file mode 100644
index 000000000..8503f0a41
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.9/11.9.5/S11.9.5_A4.1_T2.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.
+
+/**
+ * If x or y is NaN, return true
+ *
+ * @path ch11/11.9/11.9.5/S11.9.5_A4.1_T2.js
+ * @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/js/src/tests/test262/ch11/11.9/11.9.5/S11.9.5_A4.2.js b/js/src/tests/test262/ch11/11.9/11.9.5/S11.9.5_A4.2.js
new file mode 100644
index 000000000..1844bb10f
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.9/11.9.5/S11.9.5_A4.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.
+
+/**
+ * If x is +0(-0) and y is -0(+0), return false
+ *
+ * @path ch11/11.9/11.9.5/S11.9.5_A4.2.js
+ * @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/js/src/tests/test262/ch11/11.9/11.9.5/S11.9.5_A4.3.js b/js/src/tests/test262/ch11/11.9/11.9.5/S11.9.5_A4.3.js
new file mode 100644
index 000000000..b5469c3b3
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.9/11.9.5/S11.9.5_A4.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.
+
+/**
+ * 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
+ *
+ * @path ch11/11.9/11.9.5/S11.9.5_A4.3.js
+ * @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/js/src/tests/test262/ch11/11.9/11.9.5/S11.9.5_A5.js b/js/src/tests/test262/ch11/11.9/11.9.5/S11.9.5_A5.js
new file mode 100644
index 000000000..dabb86dbc
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.9/11.9.5/S11.9.5_A5.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.
+
+/**
+ * Type(x) and Type(y) are String-s.
+ * Return false, if x and y are exactly the same sequence of characters; otherwise, return true
+ *
+ * @path ch11/11.9/11.9.5/S11.9.5_A5.js
+ * @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/js/src/tests/test262/ch11/11.9/11.9.5/S11.9.5_A6.1.js b/js/src/tests/test262/ch11/11.9/11.9.5/S11.9.5_A6.1.js
new file mode 100644
index 000000000..7e89a7b6d
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.9/11.9.5/S11.9.5_A6.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.
+
+/**
+ * If Type(x) and Type(y) are Undefined-s, return false
+ *
+ * @path ch11/11.9/11.9.5/S11.9.5_A6.1.js
+ * @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/js/src/tests/test262/ch11/11.9/11.9.5/S11.9.5_A6.2.js b/js/src/tests/test262/ch11/11.9/11.9.5/S11.9.5_A6.2.js
new file mode 100644
index 000000000..9657e153f
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.9/11.9.5/S11.9.5_A6.2.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.
+
+/**
+ * If Type(x) and Type(y) are Null-s, return false
+ *
+ * @path ch11/11.9/11.9.5/S11.9.5_A6.2.js
+ * @description null === null
+ */
+
+//CHECK#1
+if (null !== null) {
+ $ERROR('#1: null === null');
+}
+
diff --git a/js/src/tests/test262/ch11/11.9/11.9.5/S11.9.5_A7.js b/js/src/tests/test262/ch11/11.9/11.9.5/S11.9.5_A7.js
new file mode 100644
index 000000000..1102b7a12
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.9/11.9.5/S11.9.5_A7.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.
+
+/**
+ * Type(x) and Type(y) are Object-s.
+ * Return false, if x and y are references to the same Object; otherwise, return true
+ *
+ * @path ch11/11.9/11.9.5/S11.9.5_A7.js
+ * @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/js/src/tests/test262/ch11/11.9/11.9.5/S11.9.5_A8_T1.js b/js/src/tests/test262/ch11/11.9/11.9.5/S11.9.5_A8_T1.js
new file mode 100644
index 000000000..8e342212e
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.9/11.9.5/S11.9.5_A8_T1.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.
+
+/**
+ * If Type(x) is different from Type(y), return true
+ *
+ * @path ch11/11.9/11.9.5/S11.9.5_A8_T1.js
+ * @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/js/src/tests/test262/ch11/11.9/11.9.5/S11.9.5_A8_T2.js b/js/src/tests/test262/ch11/11.9/11.9.5/S11.9.5_A8_T2.js
new file mode 100644
index 000000000..780807c97
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.9/11.9.5/S11.9.5_A8_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.
+
+/**
+ * If Type(x) is different from Type(y), return true
+ *
+ * @path ch11/11.9/11.9.5/S11.9.5_A8_T2.js
+ * @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/js/src/tests/test262/ch11/11.9/11.9.5/S11.9.5_A8_T3.js b/js/src/tests/test262/ch11/11.9/11.9.5/S11.9.5_A8_T3.js
new file mode 100644
index 000000000..3206868db
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.9/11.9.5/S11.9.5_A8_T3.js
@@ -0,0 +1,66 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * If Type(x) is different from Type(y), return true
+ *
+ * @path ch11/11.9/11.9.5/S11.9.5_A8_T3.js
+ * @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/js/src/tests/test262/ch11/11.9/11.9.5/S11.9.5_A8_T4.js b/js/src/tests/test262/ch11/11.9/11.9.5/S11.9.5_A8_T4.js
new file mode 100644
index 000000000..004549142
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.9/11.9.5/S11.9.5_A8_T4.js
@@ -0,0 +1,80 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * If Type(x) is different from Type(y), return true
+ *
+ * @path ch11/11.9/11.9.5/S11.9.5_A8_T4.js
+ * @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/js/src/tests/test262/ch11/11.9/11.9.5/S11.9.5_A8_T5.js b/js/src/tests/test262/ch11/11.9/11.9.5/S11.9.5_A8_T5.js
new file mode 100644
index 000000000..3f2c4a627
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.9/11.9.5/S11.9.5_A8_T5.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.
+
+/**
+ * If Type(x) is different from Type(y), return true
+ *
+ * @path ch11/11.9/11.9.5/S11.9.5_A8_T5.js
+ * @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"');
+ }
+}
+
diff --git a/js/src/tests/test262/ch11/11.9/11.9.5/browser.js b/js/src/tests/test262/ch11/11.9/11.9.5/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.9/11.9.5/browser.js
diff --git a/js/src/tests/test262/ch11/11.9/11.9.5/shell.js b/js/src/tests/test262/ch11/11.9/11.9.5/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.9/11.9.5/shell.js
diff --git a/js/src/tests/test262/ch11/11.9/browser.js b/js/src/tests/test262/ch11/11.9/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.9/browser.js
diff --git a/js/src/tests/test262/ch11/11.9/shell.js b/js/src/tests/test262/ch11/11.9/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch11/11.9/shell.js
diff --git a/js/src/tests/test262/ch11/browser.js b/js/src/tests/test262/ch11/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch11/browser.js
diff --git a/js/src/tests/test262/ch11/shell.js b/js/src/tests/test262/ch11/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch11/shell.js
diff --git a/js/src/tests/test262/ch12/12.1/12.1-1.js b/js/src/tests/test262/ch12/12.1/12.1-1.js
new file mode 100644
index 000000000..e5311368f
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.1/12.1-1.js
@@ -0,0 +1,20 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch12/12.1/12.1-1.js
+ * @description 12.1 - block '{ StatementListopt };' is not allowed: try-catch
+ */
+
+
+function testcase() {
+ try {
+ eval("try{};catch(){}");
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch12/12.1/12.1-2.js b/js/src/tests/test262/ch12/12.1/12.1-2.js
new file mode 100644
index 000000000..ab1d4668e
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.1/12.1-2.js
@@ -0,0 +1,20 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch12/12.1/12.1-2.js
+ * @description 12.1 - block '{ StatementListopt };' is not allowed: try-catch-finally
+ */
+
+
+function testcase() {
+ try {
+ eval("try{};catch{};finally{}");
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch12/12.1/12.1-3.js b/js/src/tests/test262/ch12/12.1/12.1-3.js
new file mode 100644
index 000000000..e0ccd4f58
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.1/12.1-3.js
@@ -0,0 +1,20 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch12/12.1/12.1-3.js
+ * @description 12.1 - block '{ StatementListopt };' is not allowed: try-finally
+ */
+
+
+function testcase() {
+ try {
+ eval("try{};finally{}");
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch12/12.1/12.1-4.js b/js/src/tests/test262/ch12/12.1/12.1-4.js
new file mode 100644
index 000000000..4df0c5604
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.1/12.1-4.js
@@ -0,0 +1,20 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch12/12.1/12.1-4.js
+ * @description 12.1 - block '{ StatementListopt };' is not allowed: if-else
+ */
+
+
+function testcase() {
+ try {
+ eval("if{};else{}");
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch12/12.1/12.1-5.js b/js/src/tests/test262/ch12/12.1/12.1-5.js
new file mode 100644
index 000000000..4d2238962
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.1/12.1-5.js
@@ -0,0 +1,20 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch12/12.1/12.1-5.js
+ * @description 12.1 - block '{ StatementListopt };' is not allowed: if-else-if
+ */
+
+
+function testcase() {
+ try {
+ eval("if{};else if{}");
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch12/12.1/12.1-6.js b/js/src/tests/test262/ch12/12.1/12.1-6.js
new file mode 100644
index 000000000..d6907d9c6
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.1/12.1-6.js
@@ -0,0 +1,20 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch12/12.1/12.1-6.js
+ * @description 12.1 - block '{ StatementListopt };' is not allowed: if-else-if-else
+ */
+
+
+function testcase() {
+ try {
+ eval("if{};else if{};else{}");
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch12/12.1/12.1-7.js b/js/src/tests/test262/ch12/12.1/12.1-7.js
new file mode 100644
index 000000000..ab89adc8b
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.1/12.1-7.js
@@ -0,0 +1,20 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch12/12.1/12.1-7.js
+ * @description 12.1 - block '{ StatementListopt };' is not allowed: do-while
+ */
+
+
+function testcase() {
+ try {
+ eval("do{};while()");
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch12/12.1/S12.1_A2.js b/js/src/tests/test262/ch12/12.1/S12.1_A2.js
new file mode 100644
index 000000000..eed2e89d4
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.1/S12.1_A2.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.
+
+/**
+ * The production StatementList Statement is evaluated as follows
+ * 1. Evaluate Statement.
+ * 2. If an exception was thrown, return (throw, V, empty) where V is the exception
+ *
+ * @path ch12/12.1/S12.1_A2.js
+ * @description Throwing exception within a Block
+ */
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+try {
+ x();
+ $ERROR('#1: "x()" lead to throwing exception');
+} catch (e) {
+ $PRINT(e.message);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+try {
+ throw "catchme";
+ $ERROR('#2: throw "catchme" lead to throwing exception');
+} catch (e) {
+ if (e!=="catchme") {
+ $ERROR('#2.1: Exception === "catchme". Actual: Exception ==='+ e );
+ }
+}
+
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch12/12.1/S12.1_A4_T1.js b/js/src/tests/test262/ch12/12.1/S12.1_A4_T1.js
new file mode 100644
index 000000000..8acad6f1c
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.1/S12.1_A4_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.
+
+/**
+ * The production Block can't be inside of expression
+ *
+ * @path ch12/12.1/S12.1_A4_T1.js
+ * @description Checking if execution of "y={__func}()" fails
+ * @negative
+ */
+
+function __func(){};
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+y={__func}();
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch12/12.1/S12.1_A4_T2.js b/js/src/tests/test262/ch12/12.1/S12.1_A4_T2.js
new file mode 100644
index 000000000..510d6f7b0
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.1/S12.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.
+
+/**
+ * The production Block can't be inside of expression
+ *
+ * @path ch12/12.1/S12.1_A4_T2.js
+ * @description Checking if execution of "y={x}" fails
+ * @negative
+ */
+
+x=1;
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+y={x};
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch12/12.1/S12.1_A5.js b/js/src/tests/test262/ch12/12.1/S12.1_A5.js
new file mode 100644
index 000000000..00356061f
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.1/S12.1_A5.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.
+
+/**
+ * StatementList: StatementList Statement inside the Block is evaluated from left to right
+ *
+ * @path ch12/12.1/S12.1_A5.js
+ * @description Throwing exceptions within embedded/sequence Blocks
+ */
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+try {
+ throw 1;
+ throw 2;
+ throw 3;
+ $ERROR('1.1: throw 1 lead to throwing exception');
+} catch (e) {
+ if (e!==1) {
+ $ERROR('#1.2: Exception === 1. Actual: Exception ==='+ e);
+ }
+}
+////////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+try {
+ {
+ throw 1;
+ throw 2;
+ }
+ throw 3;
+ $ERROR('#2.1: throw 1 lead to throwing exception');
+} catch (e) {
+ if (e!==1) {
+ $ERROR('#2.2: Exception === 1. Actual: Exception ==='+ e);
+ }
+}
+////////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+try {
+ throw 1;
+ {
+ throw 2;
+ throw 3;
+ }
+ $ERROR('#3.1: throw 1 lead to throwing exception');
+} catch (e) {
+ if (e!==1) {
+ $ERROR('#3.2: Exception === 1. Actual: Exception ==='+ e);
+ }
+}
+////////////////////////////////////////////////////////////////////////////////
+
+
diff --git a/js/src/tests/test262/ch12/12.1/browser.js b/js/src/tests/test262/ch12/12.1/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.1/browser.js
diff --git a/js/src/tests/test262/ch12/12.1/shell.js b/js/src/tests/test262/ch12/12.1/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.1/shell.js
diff --git a/js/src/tests/test262/ch12/12.10/12.10-0-1.js b/js/src/tests/test262/ch12/12.10/12.10-0-1.js
new file mode 100644
index 000000000..b1da0a5b7
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.10/12.10-0-1.js
@@ -0,0 +1,26 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch12/12.10/12.10-0-1.js
+ * @description with does not change declaration scope - vars in with are visible outside
+ */
+
+
+function testcase() {
+ var o = {};
+ var f = function () {
+ /* capture foo binding before executing with */
+ return foo;
+ }
+
+ with (o) {
+ var foo = "12.10-0-1";
+ }
+
+ return f()==="12.10-0-1"
+
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch12/12.10/12.10-0-10.js b/js/src/tests/test262/ch12/12.10/12.10-0-10.js
new file mode 100644
index 000000000..60e67f5aa
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.10/12.10-0-10.js
@@ -0,0 +1,28 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch12/12.10/12.10-0-10.js
+ * @description with introduces scope - name lookup finds function parameter
+ */
+
+
+function testcase() {
+ function f(o) {
+
+ function innerf(o, x) {
+ with (o) {
+ return x;
+ }
+ }
+
+ return innerf(o, 42);
+ }
+
+ if (f({}) === 42) {
+ return true;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch12/12.10/12.10-0-11.js b/js/src/tests/test262/ch12/12.10/12.10-0-11.js
new file mode 100644
index 000000000..183ee45f7
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.10/12.10-0-11.js
@@ -0,0 +1,30 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch12/12.10/12.10-0-11.js
+ * @description with introduces scope - name lookup finds inner variable
+ */
+
+
+function testcase() {
+ function f(o) {
+
+ function innerf(o) {
+ var x = 42;
+
+ with (o) {
+ return x;
+ }
+ }
+
+ return innerf(o);
+ }
+
+ if (f({}) === 42) {
+ return true;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch12/12.10/12.10-0-12.js b/js/src/tests/test262/ch12/12.10/12.10-0-12.js
new file mode 100644
index 000000000..a2a22518b
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.10/12.10-0-12.js
@@ -0,0 +1,28 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch12/12.10/12.10-0-12.js
+ * @description with introduces scope - name lookup finds property
+ */
+
+
+function testcase() {
+ function f(o) {
+
+ function innerf(o) {
+ with (o) {
+ return x;
+ }
+ }
+
+ return innerf(o);
+ }
+
+ if (f({x:42}) === 42) {
+ return true;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch12/12.10/12.10-0-3.js b/js/src/tests/test262/ch12/12.10/12.10-0-3.js
new file mode 100644
index 000000000..22d67781e
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.10/12.10-0-3.js
@@ -0,0 +1,22 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch12/12.10/12.10-0-3.js
+ * @description with introduces scope - that is captured by function expression
+ */
+
+
+function testcase() {
+ var o = {prop: "12.10-0-3 before"};
+ var f;
+
+ with (o) {
+ f = function () { return prop; }
+ }
+ o.prop = "12.10-0-3 after";
+ return f()==="12.10-0-3 after"
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch12/12.10/12.10-0-7.js b/js/src/tests/test262/ch12/12.10/12.10-0-7.js
new file mode 100644
index 000000000..0f780d59e
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.10/12.10-0-7.js
@@ -0,0 +1,26 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch12/12.10/12.10-0-7.js
+ * @description with introduces scope - scope removed when exiting with statement
+ */
+
+
+function testcase() {
+ var o = {foo: 1};
+
+ with (o) {
+ foo = 42;
+ }
+
+ try {
+ foo;
+ }
+ catch (e) {
+ return true;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch12/12.10/12.10-0-8.js b/js/src/tests/test262/ch12/12.10/12.10-0-8.js
new file mode 100644
index 000000000..613734890
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.10/12.10-0-8.js
@@ -0,0 +1,21 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch12/12.10/12.10-0-8.js
+ * @description with introduces scope - var initializer sets like named property
+ */
+
+
+function testcase() {
+ var o = {foo: 42};
+
+ with (o) {
+ var foo = "set in with";
+ }
+
+ return o.foo === "set in with";
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch12/12.10/12.10-0-9.js b/js/src/tests/test262/ch12/12.10/12.10-0-9.js
new file mode 100644
index 000000000..746542ffa
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.10/12.10-0-9.js
@@ -0,0 +1,29 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch12/12.10/12.10-0-9.js
+ * @description with introduces scope - name lookup finds outer variable
+ */
+
+
+function testcase() {
+ function f(o) {
+ var x = 42;
+
+ function innerf(o) {
+ with (o) {
+ return x;
+ }
+ }
+
+ return innerf(o);
+ }
+
+ if (f({}) === 42) {
+ return true;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch12/12.10/12.10-2-1.js b/js/src/tests/test262/ch12/12.10/12.10-2-1.js
new file mode 100644
index 000000000..3ba1eb1eb
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.10/12.10-2-1.js
@@ -0,0 +1,27 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch12/12.10/12.10-2-1.js
+ * @description with - expression being Number
+ */
+
+
+function testcase() {
+ var o = 2;
+ var foo = 1;
+ try
+ {
+ with (o) {
+ foo = 42;
+ }
+ }
+ catch(e)
+ {
+ }
+ return true;
+
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch12/12.10/12.10-2-2.js b/js/src/tests/test262/ch12/12.10/12.10-2-2.js
new file mode 100644
index 000000000..a4de02221
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.10/12.10-2-2.js
@@ -0,0 +1,27 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch12/12.10/12.10-2-2.js
+ * @description with - expression being Boolean
+ */
+
+
+function testcase() {
+ var o = true;
+ var foo = 1;
+ try
+ {
+ with (o) {
+ foo = 42;
+ }
+ }
+ catch(e)
+ {
+ }
+ return true;
+
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch12/12.10/12.10-2-3.js b/js/src/tests/test262/ch12/12.10/12.10-2-3.js
new file mode 100644
index 000000000..07003092c
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.10/12.10-2-3.js
@@ -0,0 +1,27 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch12/12.10/12.10-2-3.js
+ * @description with - expression being string
+ */
+
+
+function testcase() {
+ var o = "str";
+ var foo = 1;
+ try
+ {
+ with (o) {
+ foo = 42;
+ }
+ }
+ catch(e)
+ {
+ }
+ return true;
+
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch12/12.10/12.10-7-1.js b/js/src/tests/test262/ch12/12.10/12.10-7-1.js
new file mode 100644
index 000000000..6292efd97
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.10/12.10-7-1.js
@@ -0,0 +1,32 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch12/12.10/12.10-7-1.js
+ * @description with introduces scope - restores the earlier environment on exit
+ */
+
+
+function testcase() {
+ var a = 1;
+
+ var o = {a : 2};
+ try
+ {
+ with (o) {
+ a = 3;
+ throw 1;
+ a = 4;
+ }
+ }
+ catch(e)
+ {}
+
+ if (a === 1 && o.a === 3) {
+ return true;
+ }
+
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch12/12.10/12.10.1/12.10.1-1-s.js b/js/src/tests/test262/ch12/12.10/12.10.1/12.10.1-1-s.js
new file mode 100644
index 000000000..3c042e412
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.10/12.10.1/12.10.1-1-s.js
@@ -0,0 +1,31 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch12/12.10/12.10.1/12.10.1-1-s.js
+ * @description with statement in strict mode throws SyntaxError (strict function)
+ * @onlyStrict
+ */
+
+
+function testcase() {
+
+ try {
+ // wrapping it in eval since this needs to be a syntax error. The
+ // exception thrown must be a SyntaxError exception.
+ eval("\
+ function f() {\
+ \'use strict\';\
+ var o = {}; \
+ with (o) {};\
+ }\
+ ");
+ return false;
+ }
+ catch (e) {
+ return(e instanceof SyntaxError);
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch12/12.10/12.10.1/12.10.1-10-s.js b/js/src/tests/test262/ch12/12.10/12.10.1/12.10.1-10-s.js
new file mode 100644
index 000000000..4e470b517
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.10/12.10.1/12.10.1-10-s.js
@@ -0,0 +1,30 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch12/12.10/12.10.1/12.10.1-10-s.js
+ * @description with statement in strict mode throws SyntaxError (eval, where the container function is strict)
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ 'use strict';
+
+ // wrapping it in eval since this needs to be a syntax error. The
+ // exception thrown must be a SyntaxError exception. Note that eval
+ // inherits the strictness of its calling context.
+ try {
+ eval("\
+ var o = {};\
+ with (o) {}\
+ ");
+ return false;
+ }
+ catch (e) {
+ return (e instanceof SyntaxError);
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch12/12.10/12.10.1/12.10.1-11-s.js b/js/src/tests/test262/ch12/12.10/12.10.1/12.10.1-11-s.js
new file mode 100644
index 000000000..3c4e81daa
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.10/12.10.1/12.10.1-11-s.js
@@ -0,0 +1,23 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch12/12.10/12.10.1/12.10.1-11-s.js
+ * @description Strict Mode - SyntaxError is thrown when using WithStatement in strict mode code
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+ try {
+ eval("with ({}) { throw new Error();}");
+
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch12/12.10/12.10.1/12.10.1-11gs.js b/js/src/tests/test262/ch12/12.10/12.10.1/12.10.1-11gs.js
new file mode 100644
index 000000000..b40b37236
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.10/12.10.1/12.10.1-11gs.js
@@ -0,0 +1,16 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+
+/**
+ * @path ch12/12.10/12.10.1/12.10.1-11gs.js
+ * @description Strict Mode - SyntaxError is thrown when using with statement
+ * @onlyStrict
+ * @negative ^((?!NotEarlyError).)*$
+ */
+
+"use strict";
+throw NotEarlyError;
+with ({}) { }
diff --git a/js/src/tests/test262/ch12/12.10/12.10.1/12.10.1-12-s.js b/js/src/tests/test262/ch12/12.10/12.10.1/12.10.1-12-s.js
new file mode 100644
index 000000000..0f327297d
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.10/12.10.1/12.10.1-12-s.js
@@ -0,0 +1,26 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch12/12.10/12.10.1/12.10.1-12-s.js
+ * @description with statement in strict mode throws SyntaxError (strict eval)
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ try {
+ eval("\
+ 'use strict'; \
+ var o = {}; \
+ with (o) {}\
+ ");
+ return false;
+ }
+ catch (e) {
+ return (e instanceof SyntaxError) ;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch12/12.10/12.10.1/12.10.1-13-s.js b/js/src/tests/test262/ch12/12.10/12.10.1/12.10.1-13-s.js
new file mode 100644
index 000000000..39d56659e
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.10/12.10.1/12.10.1-13-s.js
@@ -0,0 +1,19 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch12/12.10/12.10.1/12.10.1-13-s.js
+ * @description Strict Mode - SyntaxError isn't thrown when WithStatement body is in strict mode code
+ * @noStrict
+ */
+
+
+function testcase() {
+ with ({}) {
+ "use strict";
+ }
+ return true;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch12/12.10/12.10.1/12.10.1-14-s.js b/js/src/tests/test262/ch12/12.10/12.10.1/12.10.1-14-s.js
new file mode 100644
index 000000000..0e7e685b7
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.10/12.10.1/12.10.1-14-s.js
@@ -0,0 +1,24 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch12/12.10/12.10.1/12.10.1-14-s.js
+ * @description Strict Mode - SyntaxError is thrown when the getter of a literal object utilizes WithStatement
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+
+ try {
+ eval("var obj = { get: function (a) { with(a){} } }; ");
+
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch12/12.10/12.10.1/12.10.1-15-s.js b/js/src/tests/test262/ch12/12.10/12.10.1/12.10.1-15-s.js
new file mode 100644
index 000000000..8621631f6
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.10/12.10.1/12.10.1-15-s.js
@@ -0,0 +1,23 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch12/12.10/12.10.1/12.10.1-15-s.js
+ * @description Strict Mode - SyntaxError is thrown when the RHS of a dot property assignment utilizes WithStatement
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+
+ try {
+ eval("var obj = {}; obj.get = function (a) { with(a){} }; ");
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch12/12.10/12.10.1/12.10.1-16-s.js b/js/src/tests/test262/ch12/12.10/12.10.1/12.10.1-16-s.js
new file mode 100644
index 000000000..e798b5715
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.10/12.10.1/12.10.1-16-s.js
@@ -0,0 +1,23 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch12/12.10/12.10.1/12.10.1-16-s.js
+ * @description Strict Mode - SyntaxError is thrown when the RHS of an object indexer assignment utilizes WithStatement
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+
+ try {
+ eval("var obj = {}; obj['get'] = function (a) { with(a){} }; ");
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch12/12.10/12.10.1/12.10.1-2-s.js b/js/src/tests/test262/ch12/12.10/12.10.1/12.10.1-2-s.js
new file mode 100644
index 000000000..211a1386e
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.10/12.10.1/12.10.1-2-s.js
@@ -0,0 +1,32 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch12/12.10/12.10.1/12.10.1-2-s.js
+ * @description with statement in strict mode throws SyntaxError (nested function where container is strict)
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ try {
+ // wrapping it in eval since this needs to be a syntax error. The
+ // exception thrown must be a SyntaxError exception.
+ eval("\
+ function foo() {\
+ \'use strict\'; \
+ function f() {\
+ var o = {}; \
+ with (o) {};\
+ }\
+ }\
+ ");
+ return false;
+ }
+ catch (e) {
+ return (e instanceof SyntaxError);
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch12/12.10/12.10.1/12.10.1-3-s.js b/js/src/tests/test262/ch12/12.10/12.10.1/12.10.1-3-s.js
new file mode 100644
index 000000000..8b0d2961b
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.10/12.10.1/12.10.1-3-s.js
@@ -0,0 +1,32 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch12/12.10/12.10.1/12.10.1-3-s.js
+ * @description with statement in strict mode throws SyntaxError (nested strict function)
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ try {
+ // wrapping it in eval since this needs to be a syntax error. The
+ // exception thrown must be a SyntaxError exception.
+ eval("\
+ function foo() {\
+ function f() {\
+ \'use strict\'; \
+ var o = {}; \
+ with (o) {};\
+ }\
+ }\
+ ");
+ return false;
+ }
+ catch (e) {
+ return (e instanceof SyntaxError);
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch12/12.10/12.10.1/12.10.1-4-s.js b/js/src/tests/test262/ch12/12.10/12.10.1/12.10.1-4-s.js
new file mode 100644
index 000000000..adb09673b
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.10/12.10.1/12.10.1-4-s.js
@@ -0,0 +1,27 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch12/12.10/12.10.1/12.10.1-4-s.js
+ * @description with statement in strict mode throws SyntaxError (strict Function)
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ try {
+ var f = Function("\
+ \'use strict\'; \
+ var o = {}; \
+ with (o) {};\
+ ");
+ return false;
+ }
+ catch (e) {
+ return (e instanceof SyntaxError);
+
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch12/12.10/12.10.1/12.10.1-5-s.js b/js/src/tests/test262/ch12/12.10/12.10.1/12.10.1-5-s.js
new file mode 100644
index 000000000..3a1ea1ad8
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.10/12.10.1/12.10.1-5-s.js
@@ -0,0 +1,19 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch12/12.10/12.10.1/12.10.1-5-s.js
+ * @description with statement allowed in nested Function even if its container Function is strict)
+ * @onlyStrict
+ */
+
+
+function testcase() {
+
+ Function("\'use strict\'; var f1 = Function( \"var o = {}; with (o) {};\")");
+ return true;
+
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch12/12.10/12.10.1/12.10.1-7-s.js b/js/src/tests/test262/ch12/12.10/12.10.1/12.10.1-7-s.js
new file mode 100644
index 000000000..0ceb2097e
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.10/12.10.1/12.10.1-7-s.js
@@ -0,0 +1,28 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch12/12.10/12.10.1/12.10.1-7-s.js
+ * @description with statement in strict mode throws SyntaxError (function expression, where the container function is directly evaled from strict code)
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ 'use strict';
+
+ try {
+ eval("var f = function () {\
+ var o = {}; \
+ with (o) {}; \
+ }\
+ ");
+ return false;
+ }
+ catch (e) {
+ return (e instanceof SyntaxError);
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch12/12.10/12.10.1/12.10.1-8-s.js b/js/src/tests/test262/ch12/12.10/12.10.1/12.10.1-8-s.js
new file mode 100644
index 000000000..55cfa8e4e
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.10/12.10.1/12.10.1-8-s.js
@@ -0,0 +1,28 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch12/12.10/12.10.1/12.10.1-8-s.js
+ * @description with statement in strict mode throws SyntaxError (function expression, where the container Function is strict)
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ try {
+ Function("\
+ \'use strict\'; \
+ var f1 = function () {\
+ var o = {}; \
+ with (o) {}; \
+ }\
+ ");
+ return false;
+ }
+ catch (e) {
+ return (e instanceof SyntaxError);
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch12/12.10/12.10.1/12.10.1-9-s.js b/js/src/tests/test262/ch12/12.10/12.10.1/12.10.1-9-s.js
new file mode 100644
index 000000000..b0e29e256
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.10/12.10.1/12.10.1-9-s.js
@@ -0,0 +1,28 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch12/12.10/12.10.1/12.10.1-9-s.js
+ * @description with statement in strict mode throws SyntaxError (strict function expression)
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ try {
+ eval("\
+ var f = function () {\
+ \'use strict\';\
+ var o = {}; \
+ with (o) {}; \
+ }\
+ ");
+ return false;
+ }
+ catch (e) {
+ return (e instanceof SyntaxError) ;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch12/12.10/12.10.1/browser.js b/js/src/tests/test262/ch12/12.10/12.10.1/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.10/12.10.1/browser.js
diff --git a/js/src/tests/test262/ch12/12.10/12.10.1/shell.js b/js/src/tests/test262/ch12/12.10/12.10.1/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.10/12.10.1/shell.js
diff --git a/js/src/tests/test262/ch12/12.10/S12.10_A1.10_T1.js b/js/src/tests/test262/ch12/12.10/S12.10_A1.10_T1.js
new file mode 100644
index 000000000..2256e66b7
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.10/S12.10_A1.10_T1.js
@@ -0,0 +1,139 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * The with statement adds a computed object to the front of the
+ * scope chain of the current execution context
+ *
+ * @path ch12/12.10/S12.10_A1.10_T1.js
+ * @description Using interation statement within "with" statement leading to normal completion
+ * @noStrict
+ */
+
+this.p1 = 1;
+this.p2 = 2;
+this.p3 = 3;
+var result = "result";
+var myObj = {p1: 'a',
+ p2: 'b',
+ p3: 'c',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';},
+ parseInt : function(){return 'obj_parseInt';},
+ NaN : 'obj_NaN',
+ Infinity : 'obj_Infinity',
+ eval : function(){return 'obj_eval';},
+ parseFloat : function(){return 'obj_parseFloat';},
+ isNaN : function(){return 'obj_isNaN';},
+ isFinite : function(){return 'obj_isFinite';}
+}
+var del;
+var st_p1 = "p1";
+var st_p2 = "p2";
+var st_p3 = "p3";
+var st_parseInt = "parseInt";
+var st_NaN = "NaN";
+var st_Infinity = "Infinity";
+var st_eval = "eval";
+var st_parseFloat = "parseFloat";
+var st_isNaN = "isNaN";
+var st_isFinite = "isFinite";
+
+with(myObj){
+ do{
+ st_p1 = p1;
+ st_p2 = p2;
+ st_p3 = p3;
+ st_parseInt = parseInt;
+ st_NaN = NaN;
+ st_Infinity = Infinity;
+ st_eval = eval;
+ st_parseFloat = parseFloat;
+ st_isNaN = isNaN;
+ st_isFinite = isFinite;
+ p1 = 'x1';
+ this.p2 = 'x2';
+ del = delete p3;
+ var p4 = 'x4';
+ p5 = 'x5';
+ var value = 'value';
+ }
+ while(false);
+}
+
+if(!(p1 === 1)){
+ $ERROR('#1: p1 === 1. Actual: p1 ==='+ p1 );
+}
+
+if(!(p2 === "x2")){
+ $ERROR('#2: p2 === "x2". Actual: p2 ==='+ p2 );
+}
+
+if(!(p3 === 3)){
+ $ERROR('#3: p3 === 3. Actual: p3 ==='+ p3 );
+}
+
+if(!(p4 === "x4")){
+ $ERROR('#4: p4 === "x4". Actual: p4 ==='+ p4 );
+}
+
+if(!(p5 === "x5")){
+ $ERROR('#5: p5 === "x5". Actual: p5 ==='+ p5 );
+}
+
+if(!(myObj.p1 === "x1")){
+ $ERROR('#6: myObj.p1 === "x1". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+
+if(!(myObj.p2 === "b")){
+ $ERROR('#7: myObj.p2 === "b". Actual: myObj.p2 ==='+ myObj.p2 );
+}
+
+if(!(myObj.p3 === undefined)){
+ $ERROR('#8: myObj.p3 === undefined. Actual: myObj.p3 ==='+ myObj.p3 );
+}
+
+if(!(myObj.p4 === undefined)){
+ $ERROR('#9: myObj.p4 === undefined. Actual: myObj.p4 ==='+ myObj.p4 );
+}
+
+if(!(myObj.p5 === undefined)){
+ $ERROR('#10: myObj.p5 === undefined. Actual: myObj.p5 ==='+ myObj.p5 );
+}
+
+if(!(st_parseInt !== parseInt)){
+ $ERROR('#11: myObj.parseInt !== parseInt');
+}
+
+if(!(st_NaN === "obj_NaN")){
+ $ERROR('#12: myObj.NaN !== NaN');
+}
+
+if(!(st_Infinity !== Infinity)){
+ $ERROR('#13: myObj.Infinity !== Infinity');
+}
+
+if(!(st_eval !== eval)){
+ $ERROR('#14: myObj.eval !== eval');
+}
+
+if(!(st_parseFloat !== parseFloat)){
+ $ERROR('#15: myObj.parseFloat !== parseFloat');
+}
+
+if(!(st_isNaN !== isNaN)){
+ $ERROR('#16: myObj.isNaN !== isNaN');
+}
+
+if(!(st_isFinite !== isFinite)){
+ $ERROR('#17: myObj.isFinite !== isFinite');
+}
+
+if(!(value === undefined)){
+ $ERROR('#18: value === undefined. Actual: value ==='+ value );
+}
+
+if(!(myObj.value === "value")){
+ $ERROR('#19: myObj.value === "value". Actual: myObj.value ==='+ myObj.value );
+}
+
diff --git a/js/src/tests/test262/ch12/12.10/S12.10_A1.10_T2.js b/js/src/tests/test262/ch12/12.10/S12.10_A1.10_T2.js
new file mode 100644
index 000000000..35978c0d3
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.10/S12.10_A1.10_T2.js
@@ -0,0 +1,148 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * The with statement adds a computed object to the front of the
+ * scope chain of the current execution context
+ *
+ * @path ch12/12.10/S12.10_A1.10_T2.js
+ * @description Using iteration statement within "with" statement leading to completion by exception
+ * @noStrict
+ */
+
+this.p1 = 1;
+this.p2 = 2;
+this.p3 = 3;
+var result = "result";
+var myObj = {p1: 'a',
+ p2: 'b',
+ p3: 'c',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';},
+ parseInt : function(){return 'obj_parseInt';},
+ NaN : 'obj_NaN',
+ Infinity : 'obj_Infinity',
+ eval : function(){return 'obj_eval';},
+ parseFloat : function(){return 'obj_parseFloat';},
+ isNaN : function(){return 'obj_isNaN';},
+ isFinite : function(){return 'obj_isFinite';}
+}
+var del;
+var st_p1 = "p1";
+var st_p2 = "p2";
+var st_p3 = "p3";
+var st_parseInt = "parseInt";
+var st_NaN = "NaN";
+var st_Infinity = "Infinity";
+var st_eval = "eval";
+var st_parseFloat = "parseFloat";
+var st_isNaN = "isNaN";
+var st_isFinite = "isFinite";
+
+try {
+ with(myObj){
+ do{
+ st_p1 = p1;
+ st_p2 = p2;
+ st_p3 = p3;
+ st_parseInt = parseInt;
+ st_NaN = NaN;
+ st_Infinity = Infinity;
+ st_eval = eval;
+ st_parseFloat = parseFloat;
+ st_isNaN = isNaN;
+ st_isFinite = isFinite;
+ p1 = 'x1';
+ this.p2 = 'x2';
+ del = delete p3;
+ var p4 = 'x4';
+ p5 = 'x5';
+ var value = 'value';
+ throw value;
+ }
+ while(false);
+ }
+} catch(e){
+ result = e;
+}
+
+if(!(result === "value")){
+ $ERROR('#0: result === "value". Actual: result ==='+ result );
+}
+
+if(!(p1 === 1)){
+ $ERROR('#1: p1 === 1. Actual: p1 ==='+ p1 );
+}
+
+if(!(p2 === "x2")){
+ $ERROR('#2: p2 === "x2". Actual: p2 ==='+ p2 );
+}
+
+if(!(p3 === 3)){
+ $ERROR('#3: p3 === 3. Actual: p3 ==='+ p3 );
+}
+
+if(!(p4 === "x4")){
+ $ERROR('#4: p4 === "x4". Actual: p4 ==='+ p4 );
+}
+
+if(!(p5 === "x5")){
+ $ERROR('#5: p5 === "x5". Actual: p5 ==='+ p5 );
+}
+
+if(!(myObj.p1 === "x1")){
+ $ERROR('#6: myObj.p1 === "x1". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+
+if(!(myObj.p2 === "b")){
+ $ERROR('#7: myObj.p2 === "b". Actual: myObj.p2 ==='+ myObj.p2 );
+}
+
+if(!(myObj.p3 === undefined)){
+ $ERROR('#8: myObj.p3 === undefined. Actual: myObj.p3 ==='+ myObj.p3 );
+}
+
+if(!(myObj.p4 === undefined)){
+ $ERROR('#9: myObj.p4 === undefined. Actual: myObj.p4 ==='+ myObj.p4 );
+}
+
+if(!(myObj.p5 === undefined)){
+ $ERROR('#10: myObj.p5 === undefined. Actual: myObj.p5 ==='+ myObj.p5 );
+}
+
+if(!(st_parseInt !== parseInt)){
+ $ERROR('#11: myObj.parseInt !== parseInt');
+}
+
+if(!(st_NaN === "obj_NaN")){
+ $ERROR('#12: myObj.NaN !== NaN');
+}
+
+if(!(st_Infinity !== Infinity)){
+ $ERROR('#13: myObj.Infinity !== Infinity');
+}
+
+if(!(st_eval !== eval)){
+ $ERROR('#14: myObj.eval !== eval');
+}
+
+if(!(st_parseFloat !== parseFloat)){
+ $ERROR('#15: myObj.parseFloat !== parseFloat');
+}
+
+if(!(st_isNaN !== isNaN)){
+ $ERROR('#16: myObj.isNaN !== isNaN');
+}
+
+if(!(st_isFinite !== isFinite)){
+ $ERROR('#17: myObj.isFinite !== isFinite');
+}
+
+if(!(value === undefined)){
+ $ERROR('#18: value === undefined. Actual: value ==='+ value );
+}
+
+if(!(myObj.value === "value")){
+ $ERROR('#19: myObj.value === "value". Actual: myObj.value ==='+ myObj.value );
+}
+
diff --git a/js/src/tests/test262/ch12/12.10/S12.10_A1.10_T3.js b/js/src/tests/test262/ch12/12.10/S12.10_A1.10_T3.js
new file mode 100644
index 000000000..b7f67f521
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.10/S12.10_A1.10_T3.js
@@ -0,0 +1,151 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * The with statement adds a computed object to the front of the
+ * scope chain of the current execution context
+ *
+ * @path ch12/12.10/S12.10_A1.10_T3.js
+ * @description Using iteration statment withing "with" statement leading to completion by exception
+ * iteration statement inside with statement - exception completion
+ * @noStrict
+ */
+
+this.p1 = 1;
+this.p2 = 2;
+this.p3 = 3;
+var result = "result";
+var myObj = {p1: 'a',
+ p2: 'b',
+ p3: 'c',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';},
+ parseInt : function(){return 'obj_parseInt';},
+ NaN : 'obj_NaN',
+ Infinity : 'obj_Infinity',
+ eval : function(){return 'obj_eval';},
+ parseFloat : function(){return 'obj_parseFloat';},
+ isNaN : function(){return 'obj_isNaN';},
+ isFinite : function(){return 'obj_isFinite';}
+}
+var del;
+var st_p1 = "p1";
+var st_p2 = "p2";
+var st_p3 = "p3";
+var st_parseInt = "parseInt";
+var st_NaN = "NaN";
+var st_Infinity = "Infinity";
+var st_eval = "eval";
+var st_parseFloat = "parseFloat";
+var st_isNaN = "isNaN";
+var st_isFinite = "isFinite";
+
+try {
+ with(myObj){
+ do{
+ throw value;
+ st_p1 = p1;
+ st_p2 = p2;
+ st_p3 = p3;
+ st_parseInt = parseInt;
+ st_NaN = NaN;
+ st_Infinity = Infinity;
+ st_eval = eval;
+ st_parseFloat = parseFloat;
+ st_isNaN = isNaN;
+ st_isFinite = isFinite;
+ p1 = 'x1';
+ this.p2 = 'x2';
+ del = delete p3;
+ var p4 = 'x4';
+ p5 = 'x5';
+ var value = 'value';
+ }
+ while(false);
+ }
+} catch(e){
+ result = e;
+}
+
+if(!(result === "myObj_value")){
+ $ERROR('#0: result === "myObj_value". Actual: result ==='+ result );
+}
+
+if(!(p1 === 1)){
+ $ERROR('#1: p1 === 1. Actual: p1 ==='+ p1 );
+}
+
+if(!(p2 === 2)){
+ $ERROR('#2: p2 === 2. Actual: p2 ==='+ p2 );
+}
+
+if(!(p3 === 3)){
+ $ERROR('#3: p3 === 3. Actual: p3 ==='+ p3 );
+}
+
+if(!(p4 === undefined)){
+ $ERROR('#4: p4 === undefined. Actual: p4 ==='+ p4 );
+}
+
+try {
+ p5;
+ $ERROR('#5: p5 is not defined');
+} catch(e) {
+}
+
+if(!(myObj.p1 === "a")){
+ $ERROR('#6: myObj.p1 === "a". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+
+if(!(myObj.p2 === "b")){
+ $ERROR('#7: myObj.p2 === "b". Actual: myObj.p2 ==='+ myObj.p2 );
+}
+
+if(!(myObj.p3 === "c")){
+ $ERROR('#8: myObj.p3 === "c". Actual: myObj.p3 ==='+ myObj.p3 );
+}
+
+if(!(myObj.p4 === undefined)){
+ $ERROR('#9: myObj.p4 === undefined. Actual: myObj.p4 ==='+ myObj.p4 );
+}
+
+if(!(myObj.p5 === undefined)){
+ $ERROR('#10: myObj.p5 === undefined. Actual: myObj.p5 ==='+ myObj.p5 );
+}
+
+if(!(st_parseInt === "parseInt")){
+ $ERROR('#11: myObj.parseInt === "parseInt". Actual: myObj.parseInt ==='+ myObj.parseInt );
+}
+
+if(!(st_NaN === "NaN")){
+ $ERROR('#12: st_NaN === "NaN". Actual: st_NaN ==='+ st_NaN );
+}
+
+if(!(st_Infinity === "Infinity")){
+ $ERROR('#13: st_Infinity === "Infinity". Actual: st_Infinity ==='+ st_Infinity );
+}
+
+if(!(st_eval === "eval")){
+ $ERROR('#14: st_eval === "eval". Actual: st_eval ==='+ st_eval );
+}
+
+if(!(st_parseFloat === "parseFloat")){
+ $ERROR('#15: st_parseFloat === "parseFloat". Actual: st_parseFloat ==='+ st_parseFloat );
+}
+
+if(!(st_isNaN === "isNaN")){
+ $ERROR('#16: st_isNaN === "isNaN". Actual: st_isNaN ==='+ st_isNaN );
+}
+
+if(!(st_isFinite === "isFinite")){
+ $ERROR('#17: st_isFinite === "isFinite". Actual: st_isFinite ==='+ st_isFinite );
+}
+
+if(!(value === undefined)){
+ $ERROR('#18: value === undefined. Actual: value ==='+ value );
+}
+
+if(!(myObj.value === "myObj_value")){
+ $ERROR('#19: myObj.value === "myObj_value". Actual: myObj.value ==='+ myObj.value );
+}
+
diff --git a/js/src/tests/test262/ch12/12.10/S12.10_A1.10_T4.js b/js/src/tests/test262/ch12/12.10/S12.10_A1.10_T4.js
new file mode 100644
index 000000000..87ba7f654
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.10/S12.10_A1.10_T4.js
@@ -0,0 +1,141 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * The with statement adds a computed object to the front of the
+ * scope chain of the current execution context
+ *
+ * @path ch12/12.10/S12.10_A1.10_T4.js
+ * @description Using iteration statement witthin "with" staement leading to completion by break
+ * iteration statement inside with statement - break completion
+ * @noStrict
+ */
+
+this.p1 = 1;
+this.p2 = 2;
+this.p3 = 3;
+var result = "result";
+var myObj = {p1: 'a',
+ p2: 'b',
+ p3: 'c',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';},
+ parseInt : function(){return 'obj_parseInt';},
+ NaN : 'obj_NaN',
+ Infinity : 'obj_Infinity',
+ eval : function(){return 'obj_eval';},
+ parseFloat : function(){return 'obj_parseFloat';},
+ isNaN : function(){return 'obj_isNaN';},
+ isFinite : function(){return 'obj_isFinite';}
+}
+var del;
+var st_p1 = "p1";
+var st_p2 = "p2";
+var st_p3 = "p3";
+var st_parseInt = "parseInt";
+var st_NaN = "NaN";
+var st_Infinity = "Infinity";
+var st_eval = "eval";
+var st_parseFloat = "parseFloat";
+var st_isNaN = "isNaN";
+var st_isFinite = "isFinite";
+
+with(myObj){
+ do{
+ st_p1 = p1;
+ st_p2 = p2;
+ st_p3 = p3;
+ st_parseInt = parseInt;
+ st_NaN = NaN;
+ st_Infinity = Infinity;
+ st_eval = eval;
+ st_parseFloat = parseFloat;
+ st_isNaN = isNaN;
+ st_isFinite = isFinite;
+ p1 = 'x1';
+ this.p2 = 'x2';
+ del = delete p3;
+ var p4 = 'x4';
+ p5 = 'x5';
+ var value = 'value';
+ break;
+ }
+ while(false);
+}
+
+if(!(p1 === 1)){
+ $ERROR('#1: p1 === 1. Actual: p1 ==='+ p1 );
+}
+
+if(!(p2 === "x2")){
+ $ERROR('#2: p2 === "x2". Actual: p2 ==='+ p2 );
+}
+
+if(!(p3 === 3)){
+ $ERROR('#3: p3 === 3. Actual: p3 ==='+ p3 );
+}
+
+if(!(p4 === "x4")){
+ $ERROR('#4: p4 === "x4". Actual: p4 ==='+ p4 );
+}
+
+if(!(p5 === "x5")){
+ $ERROR('#5: p5 === "x5". Actual: p5 ==='+ p5 );
+}
+
+if(!(myObj.p1 === "x1")){
+ $ERROR('#6: myObj.p1 === "x1". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+
+if(!(myObj.p2 === "b")){
+ $ERROR('#7: myObj.p2 === "b". Actual: myObj.p2 ==='+ myObj.p2 );
+}
+
+if(!(myObj.p3 === undefined)){
+ $ERROR('#8: myObj.p3 === undefined. Actual: myObj.p3 ==='+ myObj.p3 );
+}
+
+if(!(myObj.p4 === undefined)){
+ $ERROR('#9: myObj.p4 === undefined. Actual: myObj.p4 ==='+ myObj.p4 );
+}
+
+if(!(myObj.p5 === undefined)){
+ $ERROR('#10: myObj.p5 === undefined. Actual: myObj.p5 ==='+ myObj.p5 );
+}
+
+if(!(st_parseInt !== parseInt)){
+ $ERROR('#11: myObj.parseInt !== parseInt');
+}
+
+if(!(st_NaN === "obj_NaN")){
+ $ERROR('#12: myObj.NaN !== NaN');
+}
+
+if(!(st_Infinity !== Infinity)){
+ $ERROR('#13: myObj.Infinity !== Infinity');
+}
+
+if(!(st_eval !== eval)){
+ $ERROR('#14: myObj.eval !== eval');
+}
+
+if(!(st_parseFloat !== parseFloat)){
+ $ERROR('#15: myObj.parseFloat !== parseFloat');
+}
+
+if(!(st_isNaN !== isNaN)){
+ $ERROR('#16: myObj.isNaN !== isNaN');
+}
+
+if(!(st_isFinite !== isFinite)){
+ $ERROR('#17: myObj.isFinite !== isFinite');
+}
+
+if(!(value === undefined)){
+ $ERROR('#18: value === undefined. Actual: value ==='+ value );
+}
+
+if(!(myObj.value === "value")){
+ $ERROR('#19: myObj.value === "value". Actual: myObj.value ==='+ myObj.value );
+}
+
diff --git a/js/src/tests/test262/ch12/12.10/S12.10_A1.10_T5.js b/js/src/tests/test262/ch12/12.10/S12.10_A1.10_T5.js
new file mode 100644
index 000000000..05d7d8d04
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.10/S12.10_A1.10_T5.js
@@ -0,0 +1,142 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * The with statement adds a computed object to the front of the
+ * scope chain of the current execution context
+ *
+ * @path ch12/12.10/S12.10_A1.10_T5.js
+ * @description Using iteration statement within "with" statement leading to completion by break
+ * @noStrict
+ */
+
+this.p1 = 1;
+this.p2 = 2;
+this.p3 = 3;
+var result = "result";
+var myObj = {p1: 'a',
+ p2: 'b',
+ p3: 'c',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';},
+ parseInt : function(){return 'obj_parseInt';},
+ NaN : 'obj_NaN',
+ Infinity : 'obj_Infinity',
+ eval : function(){return 'obj_eval';},
+ parseFloat : function(){return 'obj_parseFloat';},
+ isNaN : function(){return 'obj_isNaN';},
+ isFinite : function(){return 'obj_isFinite';}
+}
+var del;
+var st_p1 = "p1";
+var st_p2 = "p2";
+var st_p3 = "p3";
+var st_parseInt = "parseInt";
+var st_NaN = "NaN";
+var st_Infinity = "Infinity";
+var st_eval = "eval";
+var st_parseFloat = "parseFloat";
+var st_isNaN = "isNaN";
+var st_isFinite = "isFinite";
+
+with(myObj){
+ do{
+ break;
+ st_p1 = p1;
+ st_p2 = p2;
+ st_p3 = p3;
+ st_parseInt = parseInt;
+ st_NaN = NaN;
+ st_Infinity = Infinity;
+ st_eval = eval;
+ st_parseFloat = parseFloat;
+ st_isNaN = isNaN;
+ st_isFinite = isFinite;
+ p1 = 'x1';
+ this.p2 = 'x2';
+ del = delete p3;
+ var p4 = 'x4';
+ p5 = 'x5';
+ var value = 'value';
+ }
+ while(false);
+}
+
+if(!(p1 === 1)){
+ $ERROR('#1: p1 === 1. Actual: p1 ==='+ p1 );
+}
+
+if(!(p2 === 2)){
+ $ERROR('#2: p2 === 2. Actual: p2 ==='+ p2 );
+}
+
+if(!(p3 === 3)){
+ $ERROR('#3: p3 === 3. Actual: p3 ==='+ p3 );
+}
+
+if(!(p4 === undefined)){
+ $ERROR('#4: p4 === undefined. Actual: p4 ==='+ p4 );
+}
+
+try {
+ p5;
+ $ERROR('#5: p5 is not defined');
+} catch(e) {
+}
+
+if(!(myObj.p1 === "a")){
+ $ERROR('#6: myObj.p1 === "a". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+
+if(!(myObj.p2 === "b")){
+ $ERROR('#7: myObj.p2 === "b". Actual: myObj.p2 ==='+ myObj.p2 );
+}
+
+if(!(myObj.p3 === "c")){
+ $ERROR('#8: myObj.p3 === "c". Actual: myObj.p3 ==='+ myObj.p3 );
+}
+
+if(!(myObj.p4 === undefined)){
+ $ERROR('#9: myObj.p4 === undefined. Actual: myObj.p4 ==='+ myObj.p4 );
+}
+
+if(!(myObj.p5 === undefined)){
+ $ERROR('#10: myObj.p5 === undefined. Actual: myObj.p5 ==='+ myObj.p5 );
+}
+
+if(!(st_parseInt === "parseInt")){
+ $ERROR('#11: myObj.parseInt === "parseInt". Actual: myObj.parseInt ==='+ myObj.parseInt );
+}
+
+if(!(st_NaN === "NaN")){
+ $ERROR('#12: st_NaN === "NaN". Actual: st_NaN ==='+ st_NaN );
+}
+
+if(!(st_Infinity === "Infinity")){
+ $ERROR('#13: st_Infinity === "Infinity". Actual: st_Infinity ==='+ st_Infinity );
+}
+
+if(!(st_eval === "eval")){
+ $ERROR('#14: st_eval === "eval". Actual: st_eval ==='+ st_eval );
+}
+
+if(!(st_parseFloat === "parseFloat")){
+ $ERROR('#15: st_parseFloat === "parseFloat". Actual: st_parseFloat ==='+ st_parseFloat );
+}
+
+if(!(st_isNaN === "isNaN")){
+ $ERROR('#16: st_isNaN === "isNaN". Actual: st_isNaN ==='+ st_isNaN );
+}
+
+if(!(st_isFinite === "isFinite")){
+ $ERROR('#17: st_isFinite === "isFinite". Actual: st_isFinite ==='+ st_isFinite );
+}
+
+if(!(value === undefined)){
+ $ERROR('#18: value === undefined. Actual: value ==='+ value );
+}
+
+if(!(myObj.value === "myObj_value")){
+ $ERROR('#19: myObj.value === "myObj_value". Actual: myObj.value ==='+ myObj.value );
+}
+
diff --git a/js/src/tests/test262/ch12/12.10/S12.10_A1.11_T1.js b/js/src/tests/test262/ch12/12.10/S12.10_A1.11_T1.js
new file mode 100644
index 000000000..a939778d8
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.10/S12.10_A1.11_T1.js
@@ -0,0 +1,147 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * The with statement adds a computed object to the front of the
+ * scope chain of the current execution context
+ *
+ * @path ch12/12.10/S12.10_A1.11_T1.js
+ * @description Calling a function within "with" statement declared without the statement, leading to normal completion
+ * @noStrict
+ */
+
+this.p1 = 1;
+this.p2 = 2;
+this.p3 = 3;
+var result = "result";
+var myObj = {p1: 'a',
+ p2: 'b',
+ p3: 'c',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';},
+ parseInt : function(){return 'obj_parseInt';},
+ NaN : 'obj_NaN',
+ Infinity : 'obj_Infinity',
+ eval : function(){return 'obj_eval';},
+ parseFloat : function(){return 'obj_parseFloat';},
+ isNaN : function(){return 'obj_isNaN';},
+ isFinite : function(){return 'obj_isFinite';}
+}
+var del;
+var st_p1 = "p1";
+var st_p2 = "p2";
+var st_p3 = "p3";
+var st_parseInt = "parseInt";
+var st_NaN = "NaN";
+var st_Infinity = "Infinity";
+var st_eval = "eval";
+var st_parseFloat = "parseFloat";
+var st_isNaN = "isNaN";
+var st_isFinite = "isFinite";
+
+var f = function(){
+ st_p1 = p1;
+ st_p2 = p2;
+ st_p3 = p3;
+ st_parseInt = parseInt;
+ st_NaN = NaN;
+ st_Infinity = Infinity;
+ st_eval = eval;
+ st_parseFloat = parseFloat;
+ st_isNaN = isNaN;
+ st_isFinite = isFinite;
+ p1 = 'x1';
+ this.p2 = 'x2';
+ del = delete p3;
+ var p4 = 'x4';
+ p5 = 'x5';
+ var value = 'value';
+}
+
+with(myObj){
+ f();
+}
+
+if(!(p1 === "x1")){
+ $ERROR('#1: p1 === "x1". Actual: p1 ==='+ p1 );
+}
+
+if(!(p2 === "x2")){
+ $ERROR('#2: p2 === "x2". Actual: p2 ==='+ p2 );
+}
+
+try{
+ p3;
+ $ERROR('#3: p3 is nod defined');
+}
+catch(e){
+}
+
+try {
+ p4;
+ $ERROR('#4: p4 is not defined');
+} catch(e) {
+}
+
+if(!(p5 === "x5")){
+ $ERROR('#5: p5 === "x5". Actual: p5 ==='+ p5 );
+}
+
+if(!(myObj.p1 === "a")){
+ $ERROR('#6: myObj.p1 === "a". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+
+if(!(myObj.p2 === "b")){
+ $ERROR('#7: myObj.p2 === "b". Actual: myObj.p2 ==='+ myObj.p2 );
+}
+
+if(!(myObj.p3 === "c")){
+ $ERROR('#8: myObj.p3 === "c". Actual: myObj.p3 ==='+ myObj.p3 );
+}
+
+if(!(myObj.p4 === undefined)){
+ $ERROR('#9: myObj.p4 === undefined. Actual: myObj.p4 ==='+ myObj.p4 );
+}
+
+if(!(myObj.p5 === undefined)){
+ $ERROR('#10: myObj.p5 === undefined. Actual: myObj.p5 ==='+ myObj.p5 );
+}
+
+if(!(st_parseInt === parseInt)){
+ $ERROR('#11: st_parseInt === parseInt. Actual: st_parseInt ==='+ st_parseInt );
+}
+
+if(!isNaN(st_NaN)){
+ $ERROR('#12: st_NaN === NaN. Actual: st_NaN ==='+ st_NaN );
+}
+
+if(!(st_Infinity === Infinity)){
+ $ERROR('#13: st_Infinity === Infinity. Actual: st_Infinity ==='+ st_Infinity );
+}
+
+if(!(st_eval === eval)){
+ $ERROR('#14: st_eval === eval. Actual: st_eval ==='+ st_eval );
+}
+
+if(!(st_parseFloat === parseFloat)){
+ $ERROR('#15: st_parseFloat === parseFloat. Actual: st_parseFloat ==='+ st_parseFloat );
+}
+
+if(!(st_isNaN === isNaN)){
+ $ERROR('#16: st_isNaN === isNaN. Actual: st_isNaN ==='+ st_isNaN );
+}
+
+if(!(st_isFinite === isFinite)){
+ $ERROR('#17: st_isFinite === isFinite. Actual: st_isFinite ==='+ st_isFinite );
+}
+
+try {
+ value;
+ $ERROR('#18: value is not defined');
+} catch(e) {
+}
+
+if(!(myObj.value === "myObj_value")){
+ $ERROR('#19: myObj.value === "myObj_value". Actual: myObj.value ==='+ myObj.value );
+}
+
diff --git a/js/src/tests/test262/ch12/12.10/S12.10_A1.11_T2.js b/js/src/tests/test262/ch12/12.10/S12.10_A1.11_T2.js
new file mode 100644
index 000000000..cfbefef48
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.10/S12.10_A1.11_T2.js
@@ -0,0 +1,152 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * The with statement adds a computed object to the front of the
+ * scope chain of the current execution context
+ *
+ * @path ch12/12.10/S12.10_A1.11_T2.js
+ * @description Calling a function within "with" statement declared without the statement, leading to normal completion by "return"
+ * @noStrict
+ */
+
+this.p1 = 1;
+this.p2 = 2;
+this.p3 = 3;
+var result = "result";
+var myObj = {p1: 'a',
+ p2: 'b',
+ p3: 'c',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';},
+ parseInt : function(){return 'obj_parseInt';},
+ NaN : 'obj_NaN',
+ Infinity : 'obj_Infinity',
+ eval : function(){return 'obj_eval';},
+ parseFloat : function(){return 'obj_parseFloat';},
+ isNaN : function(){return 'obj_isNaN';},
+ isFinite : function(){return 'obj_isFinite';}
+}
+var del;
+var st_p1 = "p1";
+var st_p2 = "p2";
+var st_p3 = "p3";
+var st_parseInt = "parseInt";
+var st_NaN = "NaN";
+var st_Infinity = "Infinity";
+var st_eval = "eval";
+var st_parseFloat = "parseFloat";
+var st_isNaN = "isNaN";
+var st_isFinite = "isFinite";
+
+var f = function(){
+ st_p1 = p1;
+ st_p2 = p2;
+ st_p3 = p3;
+ st_parseInt = parseInt;
+ st_NaN = NaN;
+ st_Infinity = Infinity;
+ st_eval = eval;
+ st_parseFloat = parseFloat;
+ st_isNaN = isNaN;
+ st_isFinite = isFinite;
+ p1 = 'x1';
+ this.p2 = 'x2';
+ del = delete p3;
+ var p4 = 'x4';
+ p5 = 'x5';
+ var value = 'value';
+ return value;
+}
+
+with(myObj){
+ result = f();
+}
+
+if(!(result === "value")){
+ $ERROR('#0: result === "value". Actual: result ==='+ result );
+}
+
+if(!(p1 === "x1")){
+ $ERROR('#1: p1 === "x1". Actual: p1 ==='+ p1 );
+}
+
+if(!(p2 === "x2")){
+ $ERROR('#2: p2 === "x2". Actual: p2 ==='+ p2 );
+}
+
+try{
+ p3;
+ $ERROR('#3: p3 is nod defined');
+}
+catch(e){
+}
+
+try {
+ p4;
+ $ERROR('#4: p4 is not defined');
+} catch(e) {
+}
+
+if(!(p5 === "x5")){
+ $ERROR('#5: p5 === "x5". Actual: p5 ==='+ p5 );
+}
+
+if(!(myObj.p1 === "a")){
+ $ERROR('#6: myObj.p1 === "a". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+
+if(!(myObj.p2 === "b")){
+ $ERROR('#7: myObj.p2 === "b". Actual: myObj.p2 ==='+ myObj.p2 );
+}
+
+if(!(myObj.p3 === "c")){
+ $ERROR('#8: myObj.p3 === "c". Actual: myObj.p3 ==='+ myObj.p3 );
+}
+
+if(!(myObj.p4 === undefined)){
+ $ERROR('#9: myObj.p4 === undefined. Actual: myObj.p4 ==='+ myObj.p4 );
+}
+
+if(!(myObj.p5 === undefined)){
+ $ERROR('#10: myObj.p5 === undefined. Actual: myObj.p5 ==='+ myObj.p5 );
+}
+
+if(!(st_parseInt === parseInt)){
+ $ERROR('#11: st_parseInt === parseInt. Actual: st_parseInt ==='+ st_parseInt );
+}
+
+if(!isNaN(st_NaN)){
+ $ERROR('#12: st_NaN === NaN. Actual: st_NaN ==='+ st_NaN );
+}
+
+if(!(st_Infinity === Infinity)){
+ $ERROR('#13: st_Infinity === Infinity. Actual: st_Infinity ==='+ st_Infinity );
+}
+
+if(!(st_eval === eval)){
+ $ERROR('#14: st_eval === eval. Actual: st_eval ==='+ st_eval );
+}
+
+if(!(st_parseFloat === parseFloat)){
+ $ERROR('#15: st_parseFloat === parseFloat. Actual: st_parseFloat ==='+ st_parseFloat );
+}
+
+if(!(st_isNaN === isNaN)){
+ $ERROR('#16: st_isNaN === isNaN. Actual: st_isNaN ==='+ st_isNaN );
+}
+
+if(!(st_isFinite === isFinite)){
+ $ERROR('#17: st_isFinite === isFinite. Actual: st_isFinite ==='+ st_isFinite );
+}
+
+try {
+ value;
+ $ERROR('#18: value is not defined');
+} catch(e) {
+}
+
+if(!(myObj.value === "myObj_value")){
+ $ERROR('#19: myObj.value === "myObj_value". Actual: myObj.value ==='+ myObj.value );
+}
+
diff --git a/js/src/tests/test262/ch12/12.10/S12.10_A1.11_T3.js b/js/src/tests/test262/ch12/12.10/S12.10_A1.11_T3.js
new file mode 100644
index 000000000..9d68c9c9d
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.10/S12.10_A1.11_T3.js
@@ -0,0 +1,152 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * The with statement adds a computed object to the front of the
+ * scope chain of the current execution context
+ *
+ * @path ch12/12.10/S12.10_A1.11_T3.js
+ * @description Calling a function within "with" statement declared without the statement, leading to normal completion by "return"
+ * @noStrict
+ */
+
+this.p1 = 1;
+this.p2 = 2;
+this.p3 = 3;
+var result = "result";
+var myObj = {p1: 'a',
+ p2: 'b',
+ p3: 'c',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';},
+ parseInt : function(){return 'obj_parseInt';},
+ NaN : 'obj_NaN',
+ Infinity : 'obj_Infinity',
+ eval : function(){return 'obj_eval';},
+ parseFloat : function(){return 'obj_parseFloat';},
+ isNaN : function(){return 'obj_isNaN';},
+ isFinite : function(){return 'obj_isFinite';}
+}
+var del;
+var st_p1 = "p1";
+var st_p2 = "p2";
+var st_p3 = "p3";
+var st_parseInt = "parseInt";
+var st_NaN = "NaN";
+var st_Infinity = "Infinity";
+var st_eval = "eval";
+var st_parseFloat = "parseFloat";
+var st_isNaN = "isNaN";
+var st_isFinite = "isFinite";
+
+var f = function(){
+ return value;
+ st_p1 = p1;
+ st_p2 = p2;
+ st_p3 = p3;
+ st_parseInt = parseInt;
+ st_NaN = NaN;
+ st_Infinity = Infinity;
+ st_eval = eval;
+ st_parseFloat = parseFloat;
+ st_isNaN = isNaN;
+ st_isFinite = isFinite;
+ p1 = 'x1';
+ this.p2 = 'x2';
+ del = delete p3;
+ var p4 = 'x4';
+ p5 = 'x5';
+ var value = 'value';
+}
+
+with(myObj){
+ result = f();
+}
+
+if(!(result === undefined)){
+ $ERROR('#0: result === undefined. Actual: result ==='+ result );
+}
+
+if(!(p1 === 1)){
+ $ERROR('#1: p1 === 1. Actual: p1 ==='+ p1 );
+}
+
+if(!(p2 === 2)){
+ $ERROR('#2: p2 === 2. Actual: p2 ==='+ p2 );
+}
+
+if(!(p3 === 3)){
+ $ERROR('#3: p3 === 3. Actual: p3 ==='+ p3 );
+}
+
+try{
+ p4;
+ $ERROR('#4: p4 doesn\'t exists');
+}
+catch(e){
+}
+
+try {
+ p5;
+ $ERROR('#5: p5 is not defined');
+} catch(e) {
+}
+
+if(!(myObj.p1 === "a")){
+ $ERROR('#6: myObj.p1 === "a". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+
+if(!(myObj.p2 === "b")){
+ $ERROR('#7: myObj.p2 === "b". Actual: myObj.p2 ==='+ myObj.p2 );
+}
+
+if(!(myObj.p3 === "c")){
+ $ERROR('#8: myObj.p3 === "c". Actual: myObj.p3 ==='+ myObj.p3 );
+}
+
+if(!(myObj.p4 === undefined)){
+ $ERROR('#9: myObj.p4 === undefined. Actual: myObj.p4 ==='+ myObj.p4 );
+}
+
+if(!(myObj.p5 === undefined)){
+ $ERROR('#10: myObj.p5 === undefined. Actual: myObj.p5 ==='+ myObj.p5 );
+}
+
+if(!(st_parseInt === "parseInt")){
+ $ERROR('#11: myObj.parseInt === "parseInt". Actual: myObj.parseInt ==='+ myObj.parseInt );
+}
+
+if(!(st_NaN === "NaN")){
+ $ERROR('#12: st_NaN === "NaN". Actual: st_NaN ==='+ st_NaN );
+}
+
+if(!(st_Infinity === "Infinity")){
+ $ERROR('#13: st_Infinity === "Infinity". Actual: st_Infinity ==='+ st_Infinity );
+}
+
+if(!(st_eval === "eval")){
+ $ERROR('#14: st_eval === "eval". Actual: st_eval ==='+ st_eval );
+}
+
+if(!(st_parseFloat === "parseFloat")){
+ $ERROR('#15: st_parseFloat === "parseFloat". Actual: st_parseFloat ==='+ st_parseFloat );
+}
+
+if(!(st_isNaN === "isNaN")){
+ $ERROR('#16: st_isNaN === "isNaN". Actual: st_isNaN ==='+ st_isNaN );
+}
+
+if(!(st_isFinite === "isFinite")){
+ $ERROR('#17: st_isFinite === "isFinite". Actual: st_isFinite ==='+ st_isFinite );
+}
+
+try {
+ value;
+ $ERROR('#18: value is not defined');
+} catch(e) {
+}
+
+if(!(myObj.value === "myObj_value")){
+ $ERROR('#19: myObj.value === "myObj_value". Actual: myObj.value ==='+ myObj.value );
+}
+
diff --git a/js/src/tests/test262/ch12/12.10/S12.10_A1.11_T4.js b/js/src/tests/test262/ch12/12.10/S12.10_A1.11_T4.js
new file mode 100644
index 000000000..d2fc84a75
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.10/S12.10_A1.11_T4.js
@@ -0,0 +1,155 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * The with statement adds a computed object to the front of the
+ * scope chain of the current execution context
+ *
+ * @path ch12/12.10/S12.10_A1.11_T4.js
+ * @description Calling a function within "with" statement declared without the statement, leading to completion by exception
+ * @noStrict
+ */
+
+this.p1 = 1;
+this.p2 = 2;
+this.p3 = 3;
+var result = "result";
+var myObj = {p1: 'a',
+ p2: 'b',
+ p3: 'c',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';},
+ parseInt : function(){return 'obj_parseInt';},
+ NaN : 'obj_NaN',
+ Infinity : 'obj_Infinity',
+ eval : function(){return 'obj_eval';},
+ parseFloat : function(){return 'obj_parseFloat';},
+ isNaN : function(){return 'obj_isNaN';},
+ isFinite : function(){return 'obj_isFinite';}
+}
+var del;
+var st_p1 = "p1";
+var st_p2 = "p2";
+var st_p3 = "p3";
+var st_parseInt = "parseInt";
+var st_NaN = "NaN";
+var st_Infinity = "Infinity";
+var st_eval = "eval";
+var st_parseFloat = "parseFloat";
+var st_isNaN = "isNaN";
+var st_isFinite = "isFinite";
+
+try {
+ var f = function(){
+ st_p1 = p1;
+ st_p2 = p2;
+ st_p3 = p3;
+ st_parseInt = parseInt;
+ st_NaN = NaN;
+ st_Infinity = Infinity;
+ st_eval = eval;
+ st_parseFloat = parseFloat;
+ st_isNaN = isNaN;
+ st_isFinite = isFinite;
+ p1 = 'x1';
+ this.p2 = 'x2';
+ del = delete p3;
+ var p4 = 'x4';
+ p5 = 'x5';
+ var value = 'value';
+ throw value;
+ }
+ with(myObj){
+ f();
+ }
+} catch(e){
+ result = e;
+}
+
+if(!(result === "value")){
+ $ERROR('#0: result === "value". Actual: result ==='+ result );
+}
+
+if(!(p1 === "x1")){
+ $ERROR('#1: p1 === "x1". Actual: p1 ==='+ p1 );
+}
+
+if(!(p2 === "x2")){
+ $ERROR('#2: p2 === "x2". Actual: p2 ==='+ p2 );
+}
+
+try{
+ p3;
+ $ERROR('#3: p3 is nod defined');
+}
+catch(e){
+}
+
+try {
+ p4;
+ $ERROR('#4: p4 is not defined');
+} catch(e) {
+}
+
+if(!(p5 === "x5")){
+ $ERROR('#5: p5 === "x5". Actual: p5 ==='+ p5 );
+}
+
+if(!(myObj.p1 === "a")){
+ $ERROR('#6: myObj.p1 === "a". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+
+if(!(myObj.p2 === "b")){
+ $ERROR('#7: myObj.p2 === "b". Actual: myObj.p2 ==='+ myObj.p2 );
+}
+
+if(!(myObj.p3 === "c")){
+ $ERROR('#8: myObj.p3 === "c". Actual: myObj.p3 ==='+ myObj.p3 );
+}
+
+if(!(myObj.p4 === undefined)){
+ $ERROR('#9: myObj.p4 === undefined. Actual: myObj.p4 ==='+ myObj.p4 );
+}
+
+if(!(myObj.p5 === undefined)){
+ $ERROR('#10: myObj.p5 === undefined. Actual: myObj.p5 ==='+ myObj.p5 );
+}
+
+if(!(st_parseInt === parseInt)){
+ $ERROR('#11: st_parseInt === parseInt. Actual: st_parseInt ==='+ st_parseInt );
+}
+
+if(!isNaN(st_NaN)){
+ $ERROR('#12: st_NaN === NaN. Actual: st_NaN ==='+ st_NaN );
+}
+
+if(!(st_Infinity === Infinity)){
+ $ERROR('#13: st_Infinity === Infinity. Actual: st_Infinity ==='+ st_Infinity );
+}
+
+if(!(st_eval === eval)){
+ $ERROR('#14: st_eval === eval. Actual: st_eval ==='+ st_eval );
+}
+
+if(!(st_parseFloat === parseFloat)){
+ $ERROR('#15: st_parseFloat === parseFloat. Actual: st_parseFloat ==='+ st_parseFloat );
+}
+
+if(!(st_isNaN === isNaN)){
+ $ERROR('#16: st_isNaN === isNaN. Actual: st_isNaN ==='+ st_isNaN );
+}
+
+if(!(st_isFinite === isFinite)){
+ $ERROR('#17: st_isFinite === isFinite. Actual: st_isFinite ==='+ st_isFinite );
+}
+
+try {
+ value;
+ $ERROR('#18: value is not defined');
+} catch(e) {
+}
+
+if(!(myObj.value === "myObj_value")){
+ $ERROR('#19: myObj.value === "myObj_value". Actual: myObj.value ==='+ myObj.value );
+}
+
diff --git a/js/src/tests/test262/ch12/12.10/S12.10_A1.11_T5.js b/js/src/tests/test262/ch12/12.10/S12.10_A1.11_T5.js
new file mode 100644
index 000000000..9dfc0e5dc
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.10/S12.10_A1.11_T5.js
@@ -0,0 +1,155 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * The with statement adds a computed object to the front of the
+ * scope chain of the current execution context
+ *
+ * @path ch12/12.10/S12.10_A1.11_T5.js
+ * @description Calling a function within "with" statement declared without the statement, leading to completion by exception
+ * @noStrict
+ */
+
+this.p1 = 1;
+this.p2 = 2;
+this.p3 = 3;
+var result = "result";
+var myObj = {p1: 'a',
+ p2: 'b',
+ p3: 'c',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';},
+ parseInt : function(){return 'obj_parseInt';},
+ NaN : 'obj_NaN',
+ Infinity : 'obj_Infinity',
+ eval : function(){return 'obj_eval';},
+ parseFloat : function(){return 'obj_parseFloat';},
+ isNaN : function(){return 'obj_isNaN';},
+ isFinite : function(){return 'obj_isFinite';}
+}
+var del;
+var st_p1 = "p1";
+var st_p2 = "p2";
+var st_p3 = "p3";
+var st_parseInt = "parseInt";
+var st_NaN = "NaN";
+var st_Infinity = "Infinity";
+var st_eval = "eval";
+var st_parseFloat = "parseFloat";
+var st_isNaN = "isNaN";
+var st_isFinite = "isFinite";
+
+try {
+ var f = function(){
+ throw value;
+ st_p1 = p1;
+ st_p2 = p2;
+ st_p3 = p3;
+ st_parseInt = parseInt;
+ st_NaN = NaN;
+ st_Infinity = Infinity;
+ st_eval = eval;
+ st_parseFloat = parseFloat;
+ st_isNaN = isNaN;
+ st_isFinite = isFinite;
+ p1 = 'x1';
+ this.p2 = 'x2';
+ del = delete p3;
+ var p4 = 'x4';
+ p5 = 'x5';
+ var value = 'value';
+ }
+ with(myObj){
+ f();
+ }
+} catch(e){
+ result = e;
+}
+
+if(!(result === undefined)){
+ $ERROR('#0: result === undefined. Actual: result ==='+ result );
+}
+
+if(!(p1 === 1)){
+ $ERROR('#1: p1 === 1. Actual: p1 ==='+ p1 );
+}
+
+if(!(p2 === 2)){
+ $ERROR('#2: p2 === 2. Actual: p2 ==='+ p2 );
+}
+
+if(!(p3 === 3)){
+ $ERROR('#3: p3 === 3. Actual: p3 ==='+ p3 );
+}
+
+try{
+ p4;
+ $ERROR('#4: p4 doesn\'t exists');
+}
+catch(e){
+}
+
+try {
+ p5;
+ $ERROR('#5: p5 is not defined');
+} catch(e) {
+}
+
+if(!(myObj.p1 === "a")){
+ $ERROR('#6: myObj.p1 === "a". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+
+if(!(myObj.p2 === "b")){
+ $ERROR('#7: myObj.p2 === "b". Actual: myObj.p2 ==='+ myObj.p2 );
+}
+
+if(!(myObj.p3 === "c")){
+ $ERROR('#8: myObj.p3 === "c". Actual: myObj.p3 ==='+ myObj.p3 );
+}
+
+if(!(myObj.p4 === undefined)){
+ $ERROR('#9: myObj.p4 === undefined. Actual: myObj.p4 ==='+ myObj.p4 );
+}
+
+if(!(myObj.p5 === undefined)){
+ $ERROR('#10: myObj.p5 === undefined. Actual: myObj.p5 ==='+ myObj.p5 );
+}
+
+if(!(st_parseInt === "parseInt")){
+ $ERROR('#11: myObj.parseInt === "parseInt". Actual: myObj.parseInt ==='+ myObj.parseInt );
+}
+
+if(!(st_NaN === "NaN")){
+ $ERROR('#12: st_NaN === "NaN". Actual: st_NaN ==='+ st_NaN );
+}
+
+if(!(st_Infinity === "Infinity")){
+ $ERROR('#13: st_Infinity === "Infinity". Actual: st_Infinity ==='+ st_Infinity );
+}
+
+if(!(st_eval === "eval")){
+ $ERROR('#14: st_eval === "eval". Actual: st_eval ==='+ st_eval );
+}
+
+if(!(st_parseFloat === "parseFloat")){
+ $ERROR('#15: st_parseFloat === "parseFloat". Actual: st_parseFloat ==='+ st_parseFloat );
+}
+
+if(!(st_isNaN === "isNaN")){
+ $ERROR('#16: st_isNaN === "isNaN". Actual: st_isNaN ==='+ st_isNaN );
+}
+
+if(!(st_isFinite === "isFinite")){
+ $ERROR('#17: st_isFinite === "isFinite". Actual: st_isFinite ==='+ st_isFinite );
+}
+
+try {
+ value;
+ $ERROR('#18: value is not defined');
+} catch(e) {
+}
+
+if(!(myObj.value === "myObj_value")){
+ $ERROR('#19: myObj.value === "myObj_value". Actual: myObj.value ==='+ myObj.value );
+}
+
diff --git a/js/src/tests/test262/ch12/12.10/S12.10_A1.12_T1.js b/js/src/tests/test262/ch12/12.10/S12.10_A1.12_T1.js
new file mode 100644
index 000000000..6ccbf0ca7
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.10/S12.10_A1.12_T1.js
@@ -0,0 +1,144 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * The with statement adds a computed object to the front of the
+ * scope chain of the current execution context
+ *
+ * @path ch12/12.10/S12.10_A1.12_T1.js
+ * @description Calling a function without "with" statement declared within the statement, leading to normal completion
+ * @noStrict
+ */
+
+this.p1 = 1;
+this.p2 = 2;
+this.p3 = 3;
+var result = "result";
+var myObj = {p1: 'a',
+ p2: 'b',
+ p3: 'c',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';},
+ parseInt : function(){return 'obj_parseInt';},
+ NaN : 'obj_NaN',
+ Infinity : 'obj_Infinity',
+ eval : function(){return 'obj_eval';},
+ parseFloat : function(){return 'obj_parseFloat';},
+ isNaN : function(){return 'obj_isNaN';},
+ isFinite : function(){return 'obj_isFinite';}
+}
+var del;
+var st_p1 = "p1";
+var st_p2 = "p2";
+var st_p3 = "p3";
+var st_parseInt = "parseInt";
+var st_NaN = "NaN";
+var st_Infinity = "Infinity";
+var st_eval = "eval";
+var st_parseFloat = "parseFloat";
+var st_isNaN = "isNaN";
+var st_isFinite = "isFinite";
+
+with(myObj){
+ var f = function(){
+ st_p1 = p1;
+ st_p2 = p2;
+ st_p3 = p3;
+ st_parseInt = parseInt;
+ st_NaN = NaN;
+ st_Infinity = Infinity;
+ st_eval = eval;
+ st_parseFloat = parseFloat;
+ st_isNaN = isNaN;
+ st_isFinite = isFinite;
+ p1 = 'x1';
+ this.p2 = 'x2';
+ del = delete p3;
+ var p4 = 'x4';
+ p5 = 'x5';
+ var value = 'value';
+ }
+}
+f();
+
+if(!(p1 === 1)){
+ $ERROR('#1: p1 === 1. Actual: p1 ==='+ p1 );
+}
+
+if(!(p2 === "x2")){
+ $ERROR('#2: p2 === "x2". Actual: p2 ==='+ p2 );
+}
+
+if(!(p3 === 3)){
+ $ERROR('#3: p3 === 3. Actual: p3 ==='+ p3 );
+}
+
+try{
+ p4;
+ $ERROR('#4: p4 doesn\'t exists');
+}
+catch(e){
+}
+
+if(!(p5 === "x5")){
+ $ERROR('#5: p5 === "x5". Actual: p5 ==='+ p5 );
+}
+
+if(!(myObj.p1 === "x1")){
+ $ERROR('#6: myObj.p1 === "x1". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+
+if(!(myObj.p2 === "b")){
+ $ERROR('#7: myObj.p2 === "b". Actual: myObj.p2 ==='+ myObj.p2 );
+}
+
+if(!(myObj.p3 === undefined)){
+ $ERROR('#8: myObj.p3 === undefined. Actual: myObj.p3 ==='+ myObj.p3 );
+}
+
+if(!(myObj.p4 === undefined)){
+ $ERROR('#9: myObj.p4 === undefined. Actual: myObj.p4 ==='+ myObj.p4 );
+}
+
+if(!(myObj.p5 === undefined)){
+ $ERROR('#10: myObj.p5 === undefined. Actual: myObj.p5 ==='+ myObj.p5 );
+}
+
+if(!(st_parseInt !== parseInt)){
+ $ERROR('#11: myObj.parseInt !== parseInt');
+}
+
+if(!(st_NaN === "obj_NaN")){
+ $ERROR('#12: myObj.NaN !== NaN');
+}
+
+if(!(st_Infinity !== Infinity)){
+ $ERROR('#13: myObj.Infinity !== Infinity');
+}
+
+if(!(st_eval !== eval)){
+ $ERROR('#14: myObj.eval !== eval');
+}
+
+if(!(st_parseFloat !== parseFloat)){
+ $ERROR('#15: myObj.parseFloat !== parseFloat');
+}
+
+if(!(st_isNaN !== isNaN)){
+ $ERROR('#16: myObj.isNaN !== isNaN');
+}
+
+if(!(st_isFinite !== isFinite)){
+ $ERROR('#17: myObj.isFinite !== isFinite');
+}
+
+try {
+ value;
+ $ERROR('#18: value is not defined');
+} catch(e) {
+}
+
+if(!(myObj.value === "myObj_value")){
+ $ERROR('#19: myObj.value === "myObj_value". Actual: myObj.value ==='+ myObj.value );
+}
+
diff --git a/js/src/tests/test262/ch12/12.10/S12.10_A1.12_T2.js b/js/src/tests/test262/ch12/12.10/S12.10_A1.12_T2.js
new file mode 100644
index 000000000..bd0cbe0f8
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.10/S12.10_A1.12_T2.js
@@ -0,0 +1,150 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * The with statement adds a computed object to the front of the
+ * scope chain of the current execution context
+ *
+ * @path ch12/12.10/S12.10_A1.12_T2.js
+ * @description Calling a function without "with" statement declared within the statement, leading to normal completion by "return"
+ * @noStrict
+ */
+
+this.p1 = 1;
+this.p2 = 2;
+this.p3 = 3;
+var result = "result";
+var myObj = {p1: 'a',
+ p2: 'b',
+ p3: 'c',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';},
+ parseInt : function(){return 'obj_parseInt';},
+ NaN : 'obj_NaN',
+ Infinity : 'obj_Infinity',
+ eval : function(){return 'obj_eval';},
+ parseFloat : function(){return 'obj_parseFloat';},
+ isNaN : function(){return 'obj_isNaN';},
+ isFinite : function(){return 'obj_isFinite';}
+}
+var del;
+var st_p1 = "p1";
+var st_p2 = "p2";
+var st_p3 = "p3";
+var st_parseInt = "parseInt";
+var st_NaN = "NaN";
+var st_Infinity = "Infinity";
+var st_eval = "eval";
+var st_parseFloat = "parseFloat";
+var st_isNaN = "isNaN";
+var st_isFinite = "isFinite";
+
+with(myObj){
+ var f = function(){
+ st_p1 = p1;
+ st_p2 = p2;
+ st_p3 = p3;
+ st_parseInt = parseInt;
+ st_NaN = NaN;
+ st_Infinity = Infinity;
+ st_eval = eval;
+ st_parseFloat = parseFloat;
+ st_isNaN = isNaN;
+ st_isFinite = isFinite;
+ p1 = 'x1';
+ this.p2 = 'x2';
+ del = delete p3;
+ var p4 = 'x4';
+ p5 = 'x5';
+ var value = 'value';
+ return value;
+ }
+}
+result = f();
+
+if(!(result === "value")){
+ $ERROR('#0: result === "value". Actual: result ==='+ result );
+}
+
+if(!(p1 === 1)){
+ $ERROR('#1: p1 === 1. Actual: p1 ==='+ p1 );
+}
+
+if(!(p2 === "x2")){
+ $ERROR('#2: p2 === "x2". Actual: p2 ==='+ p2 );
+}
+
+if(!(p3 === 3)){
+ $ERROR('#3: p3 === 3. Actual: p3 ==='+ p3 );
+}
+
+try{
+ p4;
+ $ERROR('#4: p4 doesn\'t exists');
+}
+catch(e){
+}
+
+if(!(p5 === "x5")){
+ $ERROR('#5: p5 === "x5". Actual: p5 ==='+ p5 );
+}
+
+if(!(myObj.p1 === "x1")){
+ $ERROR('#6: myObj.p1 === "x1". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+
+if(!(myObj.p2 === "b")){
+ $ERROR('#7: myObj.p2 === "b". Actual: myObj.p2 ==='+ myObj.p2 );
+}
+
+if(!(myObj.p3 === undefined)){
+ $ERROR('#8: myObj.p3 === undefined. Actual: myObj.p3 ==='+ myObj.p3 );
+}
+
+if(!(myObj.p4 === undefined)){
+ $ERROR('#9: myObj.p4 === undefined. Actual: myObj.p4 ==='+ myObj.p4 );
+}
+
+if(!(myObj.p5 === undefined)){
+ $ERROR('#10: myObj.p5 === undefined. Actual: myObj.p5 ==='+ myObj.p5 );
+}
+
+if(!(st_parseInt !== parseInt)){
+ $ERROR('#11: myObj.parseInt !== parseInt');
+}
+
+if(!(st_NaN === "obj_NaN")){
+ $ERROR('#12: myObj.NaN !== NaN');
+}
+
+if(!(st_Infinity !== Infinity)){
+ $ERROR('#13: myObj.Infinity !== Infinity');
+}
+
+if(!(st_eval !== eval)){
+ $ERROR('#14: myObj.eval !== eval');
+}
+
+if(!(st_parseFloat !== parseFloat)){
+ $ERROR('#15: myObj.parseFloat !== parseFloat');
+}
+
+if(!(st_isNaN !== isNaN)){
+ $ERROR('#16: myObj.isNaN !== isNaN');
+}
+
+if(!(st_isFinite !== isFinite)){
+ $ERROR('#17: myObj.isFinite !== isFinite');
+}
+
+try{
+ value;
+ $ERROR('#18: value is not defined');
+}
+catch(e){
+}
+
+if(!(myObj.value === "myObj_value")){
+ $ERROR('#19: myObj.value === "myObj_value". Actual: myObj.value ==='+ myObj.value );
+}
+
diff --git a/js/src/tests/test262/ch12/12.10/S12.10_A1.12_T3.js b/js/src/tests/test262/ch12/12.10/S12.10_A1.12_T3.js
new file mode 100644
index 000000000..39ab7d395
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.10/S12.10_A1.12_T3.js
@@ -0,0 +1,152 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * The with statement adds a computed object to the front of the
+ * scope chain of the current execution context
+ *
+ * @path ch12/12.10/S12.10_A1.12_T3.js
+ * @description Calling a function without "with" statement declared within the statement, leading to normal completion by "return"
+ * @noStrict
+ */
+
+this.p1 = 1;
+this.p2 = 2;
+this.p3 = 3;
+var result = "result";
+var myObj = {p1: 'a',
+ p2: 'b',
+ p3: 'c',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';},
+ parseInt : function(){return 'obj_parseInt';},
+ NaN : 'obj_NaN',
+ Infinity : 'obj_Infinity',
+ eval : function(){return 'obj_eval';},
+ parseFloat : function(){return 'obj_parseFloat';},
+ isNaN : function(){return 'obj_isNaN';},
+ isFinite : function(){return 'obj_isFinite';}
+}
+var del;
+var st_p1 = "p1";
+var st_p2 = "p2";
+var st_p3 = "p3";
+var st_parseInt = "parseInt";
+var st_NaN = "NaN";
+var st_Infinity = "Infinity";
+var st_eval = "eval";
+var st_parseFloat = "parseFloat";
+var st_isNaN = "isNaN";
+var st_isFinite = "isFinite";
+
+with(myObj){
+ var f = function(){
+ return value;
+ st_p1 = p1;
+ st_p2 = p2;
+ st_p3 = p3;
+ st_parseInt = parseInt;
+ st_NaN = NaN;
+ st_Infinity = Infinity;
+ st_eval = eval;
+ st_parseFloat = parseFloat;
+ st_isNaN = isNaN;
+ st_isFinite = isFinite;
+ p1 = 'x1';
+ this.p2 = 'x2';
+ del = delete p3;
+ var p4 = 'x4';
+ p5 = 'x5';
+ var value = 'value';
+ }
+}
+result = f();
+
+if(!(result === undefined)){
+ $ERROR('#0: result === undefined. Actual: result ==='+ result );
+}
+
+if(!(p1 === 1)){
+ $ERROR('#1: p1 === 1. Actual: p1 ==='+ p1 );
+}
+
+if(!(p2 === 2)){
+ $ERROR('#2: p2 === 2. Actual: p2 ==='+ p2 );
+}
+
+if(!(p3 === 3)){
+ $ERROR('#3: p3 === 3. Actual: p3 ==='+ p3 );
+}
+
+try {
+ p4;
+ $ERROR('#4: p4 is not defined');
+} catch(e) {
+}
+
+try {
+ p5;
+ $ERROR('#5: p5 is not defined');
+} catch(e) {
+}
+
+if(!(myObj.p1 === "a")){
+ $ERROR('#6: myObj.p1 === "a". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+
+if(!(myObj.p2 === "b")){
+ $ERROR('#7: myObj.p2 === "b". Actual: myObj.p2 ==='+ myObj.p2 );
+}
+
+if(!(myObj.p3 === "c")){
+ $ERROR('#8: myObj.p3 === "c". Actual: myObj.p3 ==='+ myObj.p3 );
+}
+
+if(!(myObj.p4 === undefined)){
+ $ERROR('#9: myObj.p4 === undefined. Actual: myObj.p4 ==='+ myObj.p4 );
+}
+
+if(!(myObj.p5 === undefined)){
+ $ERROR('#10: myObj.p5 === undefined. Actual: myObj.p5 ==='+ myObj.p5 );
+}
+
+if(!(st_parseInt === "parseInt")){
+ $ERROR('#11: myObj.parseInt === "parseInt". Actual: myObj.parseInt ==='+ myObj.parseInt );
+}
+
+if(!(st_NaN === "NaN")){
+ $ERROR('#12: st_NaN === "NaN". Actual: st_NaN ==='+ st_NaN );
+}
+
+if(!(st_Infinity === "Infinity")){
+ $ERROR('#13: st_Infinity === "Infinity". Actual: st_Infinity ==='+ st_Infinity );
+}
+
+if(!(st_eval === "eval")){
+ $ERROR('#14: st_eval === "eval". Actual: st_eval ==='+ st_eval );
+}
+
+if(!(st_parseFloat === "parseFloat")){
+ $ERROR('#15: st_parseFloat === "parseFloat". Actual: st_parseFloat ==='+ st_parseFloat );
+}
+
+if(!(st_isNaN === "isNaN")){
+ $ERROR('#16: st_isNaN === "isNaN". Actual: st_isNaN ==='+ st_isNaN );
+}
+
+if(!(st_isFinite === "isFinite")){
+ $ERROR('#17: st_isFinite === "isFinite". Actual: st_isFinite ==='+ st_isFinite );
+}
+
+try{
+ value;
+ $ERROR('#18: value is not defined');
+}
+catch(e){
+}
+
+if(!(myObj.value === "myObj_value")){
+ $ERROR('#19: myObj.value === "myObj_value". Actual: myObj.value ==='+ myObj.value );
+}
+
+
diff --git a/js/src/tests/test262/ch12/12.10/S12.10_A1.12_T4.js b/js/src/tests/test262/ch12/12.10/S12.10_A1.12_T4.js
new file mode 100644
index 000000000..49b58c6d5
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.10/S12.10_A1.12_T4.js
@@ -0,0 +1,152 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * The with statement adds a computed object to the front of the
+ * scope chain of the current execution context
+ *
+ * @path ch12/12.10/S12.10_A1.12_T4.js
+ * @description Calling a function without "with" statement declared within the statement, leading to completion by exception
+ * @noStrict
+ */
+
+this.p1 = 1;
+this.p2 = 2;
+this.p3 = 3;
+var result = "result";
+var myObj = {p1: 'a',
+ p2: 'b',
+ p3: 'c',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';},
+ parseInt : function(){return 'obj_parseInt';},
+ NaN : 'obj_NaN',
+ Infinity : 'obj_Infinity',
+ eval : function(){return 'obj_eval';},
+ parseFloat : function(){return 'obj_parseFloat';},
+ isNaN : function(){return 'obj_isNaN';},
+ isFinite : function(){return 'obj_isFinite';}
+}
+var del;
+var st_p1 = "p1";
+var st_p2 = "p2";
+var st_p3 = "p3";
+var st_parseInt = "parseInt";
+var st_NaN = "NaN";
+var st_Infinity = "Infinity";
+var st_eval = "eval";
+var st_parseFloat = "parseFloat";
+var st_isNaN = "isNaN";
+var st_isFinite = "isFinite";
+
+try {
+ with(myObj){
+ var f = function(){
+ st_p1 = p1;
+ st_p2 = p2;
+ st_p3 = p3;
+ st_parseInt = parseInt;
+ st_NaN = NaN;
+ st_Infinity = Infinity;
+ st_eval = eval;
+ st_parseFloat = parseFloat;
+ st_isNaN = isNaN;
+ st_isFinite = isFinite;
+ p1 = 'x1';
+ this.p2 = 'x2';
+ del = delete p3;
+ var p4 = 'x4';
+ p5 = 'x5';
+ var value = 'value';
+ throw value;
+ }
+ }
+ f();
+} catch(e){
+ result = e;
+}
+
+if(!(result === "value")){
+ $ERROR('#0: result === "value". Actual: result ==='+ result );
+}
+
+if(!(p1 === 1)){
+ $ERROR('#1: p1 === 1. Actual: p1 ==='+ p1 );
+}
+
+if(!(p2 === "x2")){
+ $ERROR('#2: p2 === "x2". Actual: p2 ==='+ p2 );
+}
+
+if(!(p3 === 3)){
+ $ERROR('#3: p3 === 3. Actual: p3 ==='+ p3 );
+}
+
+try {
+ p4;
+ $ERROR('#4: p4 is not defined');
+} catch(e) {
+}
+
+if(!(p5 === "x5")){
+ $ERROR('#5: p5 === "x5". Actual: p5 ==='+ p5 );
+}
+
+if(!(myObj.p1 === "x1")){
+ $ERROR('#6: myObj.p1 === "x1". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+
+if(!(myObj.p2 === "b")){
+ $ERROR('#7: myObj.p2 === "b". Actual: myObj.p2 ==='+ myObj.p2 );
+}
+
+if(!(myObj.p3 === undefined)){
+ $ERROR('#8: myObj.p3 === undefined. Actual: myObj.p3 ==='+ myObj.p3 );
+}
+
+if(!(myObj.p4 === undefined)){
+ $ERROR('#9: myObj.p4 === undefined. Actual: myObj.p4 ==='+ myObj.p4 );
+}
+
+if(!(myObj.p5 === undefined)){
+ $ERROR('#10: myObj.p5 === undefined. Actual: myObj.p5 ==='+ myObj.p5 );
+}
+
+if(!(st_parseInt !== parseInt)){
+ $ERROR('#11: myObj.parseInt !== parseInt');
+}
+
+if(!(st_NaN === "obj_NaN")){
+ $ERROR('#12: myObj.NaN !== NaN');
+}
+
+if(!(st_Infinity !== Infinity)){
+ $ERROR('#13: myObj.Infinity !== Infinity');
+}
+
+if(!(st_eval !== eval)){
+ $ERROR('#14: myObj.eval !== eval');
+}
+
+if(!(st_parseFloat !== parseFloat)){
+ $ERROR('#15: myObj.parseFloat !== parseFloat');
+}
+
+if(!(st_isNaN !== isNaN)){
+ $ERROR('#16: myObj.isNaN !== isNaN');
+}
+
+if(!(st_isFinite !== isFinite)){
+ $ERROR('#17: myObj.isFinite !== isFinite');
+}
+
+try {
+ value;
+ $ERROR('#18: value is not defined');
+} catch(e) {
+}
+
+if(!(myObj.value === "myObj_value")){
+ $ERROR('#19: myObj.value === "myObj_value". Actual: myObj.value ==='+ myObj.value );
+}
+
diff --git a/js/src/tests/test262/ch12/12.10/S12.10_A1.12_T5.js b/js/src/tests/test262/ch12/12.10/S12.10_A1.12_T5.js
new file mode 100644
index 000000000..2e3534367
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.10/S12.10_A1.12_T5.js
@@ -0,0 +1,156 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * The with statement adds a computed object to the front of the
+ * scope chain of the current execution context
+ *
+ * @path ch12/12.10/S12.10_A1.12_T5.js
+ * @description Calling a function without "with" statement declared within the statement, leading to completion by exception
+ * @noStrict
+ */
+
+this.p1 = 1;
+this.p2 = 2;
+this.p3 = 3;
+var result = "result";
+var myObj = {p1: 'a',
+ p2: 'b',
+ p3: 'c',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';},
+ parseInt : function(){return 'obj_parseInt';},
+ NaN : 'obj_NaN',
+ Infinity : 'obj_Infinity',
+ eval : function(){return 'obj_eval';},
+ parseFloat : function(){return 'obj_parseFloat';},
+ isNaN : function(){return 'obj_isNaN';},
+ isFinite : function(){return 'obj_isFinite';}
+}
+var del;
+var st_p1 = "p1";
+var st_p2 = "p2";
+var st_p3 = "p3";
+var st_parseInt = "parseInt";
+var st_NaN = "NaN";
+var st_Infinity = "Infinity";
+var st_eval = "eval";
+var st_parseFloat = "parseFloat";
+var st_isNaN = "isNaN";
+var st_isFinite = "isFinite";
+
+try {
+ with(myObj){
+ var f = function(){
+ throw value;
+ st_p1 = p1;
+ st_p2 = p2;
+ st_p3 = p3;
+ st_parseInt = parseInt;
+ st_NaN = NaN;
+ st_Infinity = Infinity;
+ st_eval = eval;
+ st_parseFloat = parseFloat;
+ st_isNaN = isNaN;
+ st_isFinite = isFinite;
+ p1 = 'x1';
+ this.p2 = 'x2';
+ del = delete p3;
+ var p4 = 'x4';
+ p5 = 'x5';
+ var value = 'value';
+ }
+ }
+ f();
+} catch(e){
+ result = e;
+}
+
+if(!(result === undefined)){
+ $ERROR('#0: result === undefined. Actual: result ==='+ result );
+}
+
+if(!(p1 === 1)){
+ $ERROR('#1: p1 === 1. Actual: p1 ==='+ p1 );
+}
+
+if(!(p2 === 2)){
+ $ERROR('#2: p2 === 2. Actual: p2 ==='+ p2 );
+}
+
+if(!(p3 === 3)){
+ $ERROR('#3: p3 === 3. Actual: p3 ==='+ p3 );
+}
+
+try {
+ p4;
+ $ERROR('#4: p4 is not defined');
+} catch(e) {
+}
+
+try {
+ p5;
+ $ERROR('#5: p5 is not defined');
+} catch(e) {
+}
+
+if(!(myObj.p1 === "a")){
+ $ERROR('#6: myObj.p1 === "a". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+
+if(!(myObj.p2 === "b")){
+ $ERROR('#7: myObj.p2 === "b". Actual: myObj.p2 ==='+ myObj.p2 );
+}
+
+if(!(myObj.p3 === "c")){
+ $ERROR('#8: myObj.p3 === "c". Actual: myObj.p3 ==='+ myObj.p3 );
+}
+
+if(!(myObj.p4 === undefined)){
+ $ERROR('#9: myObj.p4 === undefined. Actual: myObj.p4 ==='+ myObj.p4 );
+}
+
+if(!(myObj.p5 === undefined)){
+ $ERROR('#10: myObj.p5 === undefined. Actual: myObj.p5 ==='+ myObj.p5 );
+}
+
+if(!(st_parseInt === "parseInt")){
+ $ERROR('#11: myObj.parseInt === "parseInt". Actual: myObj.parseInt ==='+ myObj.parseInt );
+}
+
+if(!(st_NaN === "NaN")){
+ $ERROR('#12: st_NaN === "NaN". Actual: st_NaN ==='+ st_NaN );
+}
+
+if(!(st_Infinity === "Infinity")){
+ $ERROR('#13: st_Infinity === "Infinity". Actual: st_Infinity ==='+ st_Infinity );
+}
+
+if(!(st_eval === "eval")){
+ $ERROR('#14: st_eval === "eval". Actual: st_eval ==='+ st_eval );
+}
+
+if(!(st_parseFloat === "parseFloat")){
+ $ERROR('#15: st_parseFloat === "parseFloat". Actual: st_parseFloat ==='+ st_parseFloat );
+}
+
+if(!(st_isNaN === "isNaN")){
+ $ERROR('#16: st_isNaN === "isNaN". Actual: st_isNaN ==='+ st_isNaN );
+}
+
+if(!(st_isFinite === "isFinite")){
+ $ERROR('#17: st_isFinite === "isFinite". Actual: st_isFinite ==='+ st_isFinite );
+}
+
+try{
+ value;
+ $ERROR('#18: value is not defined');
+}
+catch(e){
+}
+
+if(!(myObj.value === "myObj_value")){
+ $ERROR('#19: myObj.value === "myObj_value". Actual: myObj.value ==='+ myObj.value );
+}
+
+
diff --git a/js/src/tests/test262/ch12/12.10/S12.10_A1.1_T1.js b/js/src/tests/test262/ch12/12.10/S12.10_A1.1_T1.js
new file mode 100644
index 000000000..a749c9c20
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.10/S12.10_A1.1_T1.js
@@ -0,0 +1,136 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * The with statement adds a computed object to the front of the
+ * scope chain of the current execution context
+ *
+ * @path ch12/12.10/S12.10_A1.1_T1.js
+ * @description Using "with" inside of global context leading to normal completion
+ * @noStrict
+ */
+
+this.p1 = 1;
+this.p2 = 2;
+this.p3 = 3;
+var result = "result";
+var myObj = {p1: 'a',
+ p2: 'b',
+ p3: 'c',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';},
+ parseInt : function(){return 'obj_parseInt';},
+ NaN : 'obj_NaN',
+ Infinity : 'obj_Infinity',
+ eval : function(){return 'obj_eval';},
+ parseFloat : function(){return 'obj_parseFloat';},
+ isNaN : function(){return 'obj_isNaN';},
+ isFinite : function(){return 'obj_isFinite';}
+}
+var del;
+var st_p1 = "p1";
+var st_p2 = "p2";
+var st_p3 = "p3";
+var st_parseInt = "parseInt";
+var st_NaN = "NaN";
+var st_Infinity = "Infinity";
+var st_eval = "eval";
+var st_parseFloat = "parseFloat";
+var st_isNaN = "isNaN";
+var st_isFinite = "isFinite";
+
+with(myObj){
+ st_p1 = p1;
+ st_p2 = p2;
+ st_p3 = p3;
+ st_parseInt = parseInt;
+ st_NaN = NaN;
+ st_Infinity = Infinity;
+ st_eval = eval;
+ st_parseFloat = parseFloat;
+ st_isNaN = isNaN;
+ st_isFinite = isFinite;
+ p1 = 'x1';
+ this.p2 = 'x2';
+ del = delete p3;
+ var p4 = 'x4';
+ p5 = 'x5';
+ var value = 'value';
+}
+
+if(!(p1 === 1)){
+ $ERROR('#1: p1 === 1. Actual: p1 ==='+ p1 );
+}
+
+if(!(p2 === "x2")){
+ $ERROR('#2: p2 === "x2". Actual: p2 ==='+ p2 );
+}
+
+if(!(p3 === 3)){
+ $ERROR('#3: p3 === 3. Actual: p3 ==='+ p3 );
+}
+
+if(!(p4 === "x4")){
+ $ERROR('#4: p4 === "x4". Actual: p4 ==='+ p4 );
+}
+
+if(!(p5 === "x5")){
+ $ERROR('#5: p5 === "x5". Actual: p5 ==='+ p5 );
+}
+
+if(!(myObj.p1 === "x1")){
+ $ERROR('#6: myObj.p1 === "x1". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+
+if(!(myObj.p2 === "b")){
+ $ERROR('#7: myObj.p2 === "b". Actual: myObj.p2 ==='+ myObj.p2 );
+}
+
+if(!(myObj.p3 === undefined)){
+ $ERROR('#8: myObj.p3 === undefined. Actual: myObj.p3 ==='+ myObj.p3 );
+}
+
+if(!(myObj.p4 === undefined)){
+ $ERROR('#9: myObj.p4 === undefined. Actual: myObj.p4 ==='+ myObj.p4 );
+}
+
+if(!(myObj.p5 === undefined)){
+ $ERROR('#10: myObj.p5 === undefined. Actual: myObj.p5 ==='+ myObj.p5 );
+}
+
+if(!(st_parseInt !== parseInt)){
+ $ERROR('#11: myObj.parseInt !== parseInt');
+}
+
+if(!(st_NaN === "obj_NaN")){
+ $ERROR('#12: myObj.NaN !== NaN');
+}
+
+if(!(st_Infinity !== Infinity)){
+ $ERROR('#13: myObj.Infinity !== Infinity');
+}
+
+if(!(st_eval !== eval)){
+ $ERROR('#14: myObj.eval !== eval');
+}
+
+if(!(st_parseFloat !== parseFloat)){
+ $ERROR('#15: myObj.parseFloat !== parseFloat');
+}
+
+if(!(st_isNaN !== isNaN)){
+ $ERROR('#16: myObj.isNaN !== isNaN');
+}
+
+if(!(st_isFinite !== isFinite)){
+ $ERROR('#17: myObj.isFinite !== isFinite');
+}
+
+if(!(value === undefined)){
+ $ERROR('#18: value === undefined. Actual: value ==='+ value );
+}
+
+if(!(myObj.value === "value")){
+ $ERROR('#19: myObj.value === "value". Actual: myObj.value ==='+ myObj.value );
+}
+
diff --git a/js/src/tests/test262/ch12/12.10/S12.10_A1.1_T2.js b/js/src/tests/test262/ch12/12.10/S12.10_A1.1_T2.js
new file mode 100644
index 000000000..d07cb0e69
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.10/S12.10_A1.1_T2.js
@@ -0,0 +1,145 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * The with statement adds a computed object to the front of the
+ * scope chain of the current execution context
+ *
+ * @path ch12/12.10/S12.10_A1.1_T2.js
+ * @description Using "with" inside of global context leading to completion by exception
+ * @noStrict
+ */
+
+this.p1 = 1;
+this.p2 = 2;
+this.p3 = 3;
+var result = "result";
+var myObj = {p1: 'a',
+ p2: 'b',
+ p3: 'c',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';},
+ parseInt : function(){return 'obj_parseInt';},
+ NaN : 'obj_NaN',
+ Infinity : 'obj_Infinity',
+ eval : function(){return 'obj_eval';},
+ parseFloat : function(){return 'obj_parseFloat';},
+ isNaN : function(){return 'obj_isNaN';},
+ isFinite : function(){return 'obj_isFinite';}
+}
+var del;
+var st_p1 = "p1";
+var st_p2 = "p2";
+var st_p3 = "p3";
+var st_parseInt = "parseInt";
+var st_NaN = "NaN";
+var st_Infinity = "Infinity";
+var st_eval = "eval";
+var st_parseFloat = "parseFloat";
+var st_isNaN = "isNaN";
+var st_isFinite = "isFinite";
+
+try {
+ with(myObj){
+ st_p1 = p1;
+ st_p2 = p2;
+ st_p3 = p3;
+ st_parseInt = parseInt;
+ st_NaN = NaN;
+ st_Infinity = Infinity;
+ st_eval = eval;
+ st_parseFloat = parseFloat;
+ st_isNaN = isNaN;
+ st_isFinite = isFinite;
+ p1 = 'x1';
+ this.p2 = 'x2';
+ del = delete p3;
+ var p4 = 'x4';
+ p5 = 'x5';
+ var value = 'value';
+ throw value;
+ }
+} catch(e){
+ result = e;
+}
+
+if(!(result === "value")){
+ $ERROR('#0: result === "value". Actual: result ==='+ result );
+}
+
+if(!(p1 === 1)){
+ $ERROR('#1: p1 === 1. Actual: p1 ==='+ p1 );
+}
+
+if(!(p2 === "x2")){
+ $ERROR('#2: p2 === "x2". Actual: p2 ==='+ p2 );
+}
+
+if(!(p3 === 3)){
+ $ERROR('#3: p3 === 3. Actual: p3 ==='+ p3 );
+}
+
+if(!(p4 === "x4")){
+ $ERROR('#4: p4 === "x4". Actual: p4 ==='+ p4 );
+}
+
+if(!(p5 === "x5")){
+ $ERROR('#5: p5 === "x5". Actual: p5 ==='+ p5 );
+}
+
+if(!(myObj.p1 === "x1")){
+ $ERROR('#6: myObj.p1 === "x1". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+
+if(!(myObj.p2 === "b")){
+ $ERROR('#7: myObj.p2 === "b". Actual: myObj.p2 ==='+ myObj.p2 );
+}
+
+if(!(myObj.p3 === undefined)){
+ $ERROR('#8: myObj.p3 === undefined. Actual: myObj.p3 ==='+ myObj.p3 );
+}
+
+if(!(myObj.p4 === undefined)){
+ $ERROR('#9: myObj.p4 === undefined. Actual: myObj.p4 ==='+ myObj.p4 );
+}
+
+if(!(myObj.p5 === undefined)){
+ $ERROR('#10: myObj.p5 === undefined. Actual: myObj.p5 ==='+ myObj.p5 );
+}
+
+if(!(st_parseInt !== parseInt)){
+ $ERROR('#11: myObj.parseInt !== parseInt');
+}
+
+if(!(st_NaN === "obj_NaN")){
+ $ERROR('#12: myObj.NaN !== NaN');
+}
+
+if(!(st_Infinity !== Infinity)){
+ $ERROR('#13: myObj.Infinity !== Infinity');
+}
+
+if(!(st_eval !== eval)){
+ $ERROR('#14: myObj.eval !== eval');
+}
+
+if(!(st_parseFloat !== parseFloat)){
+ $ERROR('#15: myObj.parseFloat !== parseFloat');
+}
+
+if(!(st_isNaN !== isNaN)){
+ $ERROR('#16: myObj.isNaN !== isNaN');
+}
+
+if(!(st_isFinite !== isFinite)){
+ $ERROR('#17: myObj.isFinite !== isFinite');
+}
+
+if(!(value === undefined)){
+ $ERROR('#18: value === undefined. Actual: value ==='+ value );
+}
+
+if(!(myObj.value === "value")){
+ $ERROR('#19: myObj.value === "value". Actual: myObj.value ==='+ myObj.value );
+}
+
diff --git a/js/src/tests/test262/ch12/12.10/S12.10_A1.1_T3.js b/js/src/tests/test262/ch12/12.10/S12.10_A1.1_T3.js
new file mode 100644
index 000000000..200209019
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.10/S12.10_A1.1_T3.js
@@ -0,0 +1,147 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * The with statement adds a computed object to the front of the
+ * scope chain of the current execution context
+ *
+ * @path ch12/12.10/S12.10_A1.1_T3.js
+ * @description Using "with" inside of global context leading to completion by exception
+ * @noStrict
+ */
+
+this.p1 = 1;
+this.p2 = 2;
+this.p3 = 3;
+var result = "result";
+var myObj = {p1: 'a',
+ p2: 'b',
+ p3: 'c',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';},
+ parseInt : function(){return 'obj_parseInt';},
+ NaN : 'obj_NaN',
+ Infinity : 'obj_Infinity',
+ eval : function(){return 'obj_eval';},
+ parseFloat : function(){return 'obj_parseFloat';},
+ isNaN : function(){return 'obj_isNaN';},
+ isFinite : function(){return 'obj_isFinite';}
+}
+var del;
+var st_p1 = "p1";
+var st_p2 = "p2";
+var st_p3 = "p3";
+var st_parseInt = "parseInt";
+var st_NaN = "NaN";
+var st_Infinity = "Infinity";
+var st_eval = "eval";
+var st_parseFloat = "parseFloat";
+var st_isNaN = "isNaN";
+var st_isFinite = "isFinite";
+
+try {
+ with(myObj){
+ throw value;
+ st_p1 = p1;
+ st_p2 = p2;
+ st_p3 = p3;
+ st_parseInt = parseInt;
+ st_NaN = NaN;
+ st_Infinity = Infinity;
+ st_eval = eval;
+ st_parseFloat = parseFloat;
+ st_isNaN = isNaN;
+ st_isFinite = isFinite;
+ p1 = 'x1';
+ this.p2 = 'x2';
+ del = delete p3;
+ var p4 = 'x4';
+ p5 = 'x5';
+ var value = 'value';
+ }
+} catch(e){
+ result = e;
+}
+
+if(!(result === "myObj_value")){
+ $ERROR('#0: result === "myObj_value". Actual: result ==='+ result );
+}
+
+if(!(p1 === 1)){
+ $ERROR('#1: p1 === 1. Actual: p1 ==='+ p1 );
+}
+
+if(!(p2 === 2)){
+ $ERROR('#2: p2 === 2. Actual: p2 ==='+ p2 );
+}
+
+if(!(p3 === 3)){
+ $ERROR('#3: p3 === 3. Actual: p3 ==='+ p3 );
+}
+
+if(!(p4 === undefined)){
+ $ERROR('#4: p4 === undefined. Actual: p4 ==='+ p4 );
+}
+
+try {
+ p5;
+ $ERROR('#5: p5 is not defined');
+} catch(e) {
+}
+
+if(!(myObj.p1 === "a")){
+ $ERROR('#6: myObj.p1 === "a". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+
+if(!(myObj.p2 === "b")){
+ $ERROR('#7: myObj.p2 === "b". Actual: myObj.p2 ==='+ myObj.p2 );
+}
+
+if(!(myObj.p3 === "c")){
+ $ERROR('#8: myObj.p3 === "c". Actual: myObj.p3 ==='+ myObj.p3 );
+}
+
+if(!(myObj.p4 === undefined)){
+ $ERROR('#9: myObj.p4 === undefined. Actual: myObj.p4 ==='+ myObj.p4 );
+}
+
+if(!(myObj.p5 === undefined)){
+ $ERROR('#10: myObj.p5 === undefined. Actual: myObj.p5 ==='+ myObj.p5 );
+}
+
+if(!(st_parseInt === "parseInt")){
+ $ERROR('#11: myObj.parseInt === "parseInt". Actual: myObj.parseInt ==='+ myObj.parseInt );
+}
+
+if(!(st_NaN === "NaN")){
+ $ERROR('#12: st_NaN === "NaN". Actual: st_NaN ==='+ st_NaN );
+}
+
+if(!(st_Infinity === "Infinity")){
+ $ERROR('#13: st_Infinity === "Infinity". Actual: st_Infinity ==='+ st_Infinity );
+}
+
+if(!(st_eval === "eval")){
+ $ERROR('#14: st_eval === "eval". Actual: st_eval ==='+ st_eval );
+}
+
+if(!(st_parseFloat === "parseFloat")){
+ $ERROR('#15: st_parseFloat === "parseFloat". Actual: st_parseFloat ==='+ st_parseFloat );
+}
+
+if(!(st_isNaN === "isNaN")){
+ $ERROR('#16: st_isNaN === "isNaN". Actual: st_isNaN ==='+ st_isNaN );
+}
+
+if(!(st_isFinite === "isFinite")){
+ $ERROR('#17: st_isFinite === "isFinite". Actual: st_isFinite ==='+ st_isFinite );
+}
+
+if(!(value === undefined)){
+ $ERROR('#18: value === undefined. Actual: value ==='+ value );
+}
+
+if(!(myObj.value === "myObj_value")){
+ $ERROR('#19: myObj.value === "myObj_value". Actual: myObj.value ==='+ myObj.value );
+}
+
diff --git a/js/src/tests/test262/ch12/12.10/S12.10_A1.2_T1.js b/js/src/tests/test262/ch12/12.10/S12.10_A1.2_T1.js
new file mode 100644
index 000000000..20a344d48
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.10/S12.10_A1.2_T1.js
@@ -0,0 +1,144 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * The with statement adds a computed object to the front of the
+ * scope chain of the current execution context
+ *
+ * @path ch12/12.10/S12.10_A1.2_T1.js
+ * @description Calling a function without "with" statement when the statement itself is declared within the function declaration, leading to normal completion
+ * @noStrict
+ */
+
+this.p1 = 1;
+this.p2 = 2;
+this.p3 = 3;
+var result = "result";
+var myObj = {p1: 'a',
+ p2: 'b',
+ p3: 'c',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';},
+ parseInt : function(){return 'obj_parseInt';},
+ NaN : 'obj_NaN',
+ Infinity : 'obj_Infinity',
+ eval : function(){return 'obj_eval';},
+ parseFloat : function(){return 'obj_parseFloat';},
+ isNaN : function(){return 'obj_isNaN';},
+ isFinite : function(){return 'obj_isFinite';}
+}
+var del;
+var st_p1 = "p1";
+var st_p2 = "p2";
+var st_p3 = "p3";
+var st_parseInt = "parseInt";
+var st_NaN = "NaN";
+var st_Infinity = "Infinity";
+var st_eval = "eval";
+var st_parseFloat = "parseFloat";
+var st_isNaN = "isNaN";
+var st_isFinite = "isFinite";
+
+var f = function(){
+ with(myObj){
+ st_p1 = p1;
+ st_p2 = p2;
+ st_p3 = p3;
+ st_parseInt = parseInt;
+ st_NaN = NaN;
+ st_Infinity = Infinity;
+ st_eval = eval;
+ st_parseFloat = parseFloat;
+ st_isNaN = isNaN;
+ st_isFinite = isFinite;
+ p1 = 'x1';
+ this.p2 = 'x2';
+ del = delete p3;
+ var p4 = 'x4';
+ p5 = 'x5';
+ var value = 'value';
+ }
+}
+f();
+
+if(!(p1 === 1)){
+ $ERROR('#1: p1 === 1. Actual: p1 ==='+ p1 );
+}
+
+if(!(p2 === "x2")){
+ $ERROR('#2: p2 === "x2". Actual: p2 ==='+ p2 );
+}
+
+if(!(p3 === 3)){
+ $ERROR('#3: p3 === 3. Actual: p3 ==='+ p3 );
+}
+
+try {
+ p4;
+ $ERROR('#4: p4 is not defined');
+} catch(e) {
+}
+
+if(!(p5 === "x5")){
+ $ERROR('#5: p5 === "x5". Actual: p5 ==='+ p5 );
+}
+
+if(!(myObj.p1 === "x1")){
+ $ERROR('#6: myObj.p1 === "x1". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+
+if(!(myObj.p2 === "b")){
+ $ERROR('#7: myObj.p2 === "b". Actual: myObj.p2 ==='+ myObj.p2 );
+}
+
+if(!(myObj.p3 === undefined)){
+ $ERROR('#8: myObj.p3 === undefined. Actual: myObj.p3 ==='+ myObj.p3 );
+}
+
+if(!(myObj.p4 === undefined)){
+ $ERROR('#9: myObj.p4 === undefined. Actual: myObj.p4 ==='+ myObj.p4 );
+}
+
+if(!(myObj.p5 === undefined)){
+ $ERROR('#10: myObj.p5 === undefined. Actual: myObj.p5 ==='+ myObj.p5 );
+}
+
+if(!(st_parseInt !== parseInt)){
+ $ERROR('#11: myObj.parseInt !== parseInt');
+}
+
+if(!(st_NaN === "obj_NaN")){
+ $ERROR('#12: myObj.NaN !== NaN');
+}
+
+if(!(st_Infinity !== Infinity)){
+ $ERROR('#13: myObj.Infinity !== Infinity');
+}
+
+if(!(st_eval !== eval)){
+ $ERROR('#14: myObj.eval !== eval');
+}
+
+if(!(st_parseFloat !== parseFloat)){
+ $ERROR('#15: myObj.parseFloat !== parseFloat');
+}
+
+if(!(st_isNaN !== isNaN)){
+ $ERROR('#16: myObj.isNaN !== isNaN');
+}
+
+if(!(st_isFinite !== isFinite)){
+ $ERROR('#17: myObj.isFinite !== isFinite');
+}
+
+try{
+ value;
+ $ERROR('#18: value is not defined');
+}
+catch(e){
+}
+
+if(!(myObj.value === "value")){
+ $ERROR('#19: myObj.value === "value". Actual: myObj.value ==='+ myObj.value );
+}
+
diff --git a/js/src/tests/test262/ch12/12.10/S12.10_A1.2_T2.js b/js/src/tests/test262/ch12/12.10/S12.10_A1.2_T2.js
new file mode 100644
index 000000000..39312c70a
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.10/S12.10_A1.2_T2.js
@@ -0,0 +1,149 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * The with statement adds a computed object to the front of the
+ * scope chain of the current execution context
+ *
+ * @path ch12/12.10/S12.10_A1.2_T2.js
+ * @description Calling a function without "with" statement when the statement itself is declared within the function declaration, leading to normal completion by "return"
+ * @noStrict
+ */
+
+this.p1 = 1;
+this.p2 = 2;
+this.p3 = 3;
+var result = "result";
+var myObj = {p1: 'a',
+ p2: 'b',
+ p3: 'c',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';},
+ parseInt : function(){return 'obj_parseInt';},
+ NaN : 'obj_NaN',
+ Infinity : 'obj_Infinity',
+ eval : function(){return 'obj_eval';},
+ parseFloat : function(){return 'obj_parseFloat';},
+ isNaN : function(){return 'obj_isNaN';},
+ isFinite : function(){return 'obj_isFinite';}
+}
+var del;
+var st_p1 = "p1";
+var st_p2 = "p2";
+var st_p3 = "p3";
+var st_parseInt = "parseInt";
+var st_NaN = "NaN";
+var st_Infinity = "Infinity";
+var st_eval = "eval";
+var st_parseFloat = "parseFloat";
+var st_isNaN = "isNaN";
+var st_isFinite = "isFinite";
+
+var f = function(){
+ with(myObj){
+ st_p1 = p1;
+ st_p2 = p2;
+ st_p3 = p3;
+ st_parseInt = parseInt;
+ st_NaN = NaN;
+ st_Infinity = Infinity;
+ st_eval = eval;
+ st_parseFloat = parseFloat;
+ st_isNaN = isNaN;
+ st_isFinite = isFinite;
+ p1 = 'x1';
+ this.p2 = 'x2';
+ del = delete p3;
+ var p4 = 'x4';
+ p5 = 'x5';
+ var value = 'value';
+ return value;
+ }
+}
+result = f();
+
+if(!(result === "value")){
+ $ERROR('#0: result === "value". Actual: result ==='+ result );
+}
+
+if(!(p1 === 1)){
+ $ERROR('#1: p1 === 1. Actual: p1 ==='+ p1 );
+}
+
+if(!(p2 === "x2")){
+ $ERROR('#2: p2 === "x2". Actual: p2 ==='+ p2 );
+}
+
+if(!(p3 === 3)){
+ $ERROR('#3: p3 === 3. Actual: p3 ==='+ p3 );
+}
+
+try {
+ p4;
+ $ERROR('#4: p4 is not defined');
+} catch(e) {
+}
+
+if(!(p5 === "x5")){
+ $ERROR('#5: p5 === "x5". Actual: p5 ==='+ p5 );
+}
+
+if(!(myObj.p1 === "x1")){
+ $ERROR('#6: myObj.p1 === "x1". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+
+if(!(myObj.p2 === "b")){
+ $ERROR('#7: myObj.p2 === "b". Actual: myObj.p2 ==='+ myObj.p2 );
+}
+
+if(!(myObj.p3 === undefined)){
+ $ERROR('#8: myObj.p3 === undefined. Actual: myObj.p3 ==='+ myObj.p3 );
+}
+
+if(!(myObj.p4 === undefined)){
+ $ERROR('#9: myObj.p4 === undefined. Actual: myObj.p4 ==='+ myObj.p4 );
+}
+
+if(!(myObj.p5 === undefined)){
+ $ERROR('#10: myObj.p5 === undefined. Actual: myObj.p5 ==='+ myObj.p5 );
+}
+
+if(!(st_parseInt !== parseInt)){
+ $ERROR('#11: myObj.parseInt !== parseInt');
+}
+
+if(!(st_NaN === "obj_NaN")){
+ $ERROR('#12: myObj.NaN !== NaN');
+}
+
+if(!(st_Infinity !== Infinity)){
+ $ERROR('#13: myObj.Infinity !== Infinity');
+}
+
+if(!(st_eval !== eval)){
+ $ERROR('#14: myObj.eval !== eval');
+}
+
+if(!(st_parseFloat !== parseFloat)){
+ $ERROR('#15: myObj.parseFloat !== parseFloat');
+}
+
+if(!(st_isNaN !== isNaN)){
+ $ERROR('#16: myObj.isNaN !== isNaN');
+}
+
+if(!(st_isFinite !== isFinite)){
+ $ERROR('#17: myObj.isFinite !== isFinite');
+}
+
+try{
+ value;
+ $ERROR('#18: value is not defined');
+}
+catch(e){
+}
+
+if(!(myObj.value === "value")){
+ $ERROR('#19: myObj.value === "value". Actual: myObj.value ==='+ myObj.value );
+}
+
diff --git a/js/src/tests/test262/ch12/12.10/S12.10_A1.2_T3.js b/js/src/tests/test262/ch12/12.10/S12.10_A1.2_T3.js
new file mode 100644
index 000000000..f34c7cb94
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.10/S12.10_A1.2_T3.js
@@ -0,0 +1,152 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * The with statement adds a computed object to the front of the
+ * scope chain of the current execution context
+ *
+ * @path ch12/12.10/S12.10_A1.2_T3.js
+ * @description Calling a function without "with" statement when the statement itself is declared within the function declaration, leading to normal completion by "return"
+ * @noStrict
+ */
+
+this.p1 = 1;
+this.p2 = 2;
+this.p3 = 3;
+var result = "result";
+var myObj = {p1: 'a',
+ p2: 'b',
+ p3: 'c',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';},
+ parseInt : function(){return 'obj_parseInt';},
+ NaN : 'obj_NaN',
+ Infinity : 'obj_Infinity',
+ eval : function(){return 'obj_eval';},
+ parseFloat : function(){return 'obj_parseFloat';},
+ isNaN : function(){return 'obj_isNaN';},
+ isFinite : function(){return 'obj_isFinite';}
+}
+var del;
+var st_p1 = "p1";
+var st_p2 = "p2";
+var st_p3 = "p3";
+var st_parseInt = "parseInt";
+var st_NaN = "NaN";
+var st_Infinity = "Infinity";
+var st_eval = "eval";
+var st_parseFloat = "parseFloat";
+var st_isNaN = "isNaN";
+var st_isFinite = "isFinite";
+
+var f = function(){
+ with(myObj){
+ return value;
+ st_p1 = p1;
+ st_p2 = p2;
+ st_p3 = p3;
+ st_parseInt = parseInt;
+ st_NaN = NaN;
+ st_Infinity = Infinity;
+ st_eval = eval;
+ st_parseFloat = parseFloat;
+ st_isNaN = isNaN;
+ st_isFinite = isFinite;
+ p1 = 'x1';
+ this.p2 = 'x2';
+ del = delete p3;
+ var p4 = 'x4';
+ p5 = 'x5';
+ var value = 'value';
+ }
+}
+result = f();
+
+if(!(result === "myObj_value")){
+ $ERROR('#0: result === "myObj_value". Actual: result ==='+ result );
+}
+
+if(!(p1 === 1)){
+ $ERROR('#1: p1 === 1. Actual: p1 ==='+ p1 );
+}
+
+if(!(p2 === 2)){
+ $ERROR('#2: p2 === 2. Actual: p2 ==='+ p2 );
+}
+
+if(!(p3 === 3)){
+ $ERROR('#3: p3 === 3. Actual: p3 ==='+ p3 );
+}
+
+try {
+ p4;
+ $ERROR('#4: p4 is not defined');
+} catch(e) {
+}
+
+try {
+ p5;
+ $ERROR('#5: p5 is not defined');
+} catch(e) {
+}
+
+if(!(myObj.p1 === "a")){
+ $ERROR('#6: myObj.p1 === "a". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+
+if(!(myObj.p2 === "b")){
+ $ERROR('#7: myObj.p2 === "b". Actual: myObj.p2 ==='+ myObj.p2 );
+}
+
+if(!(myObj.p3 === "c")){
+ $ERROR('#8: myObj.p3 === "c". Actual: myObj.p3 ==='+ myObj.p3 );
+}
+
+if(!(myObj.p4 === undefined)){
+ $ERROR('#9: myObj.p4 === undefined. Actual: myObj.p4 ==='+ myObj.p4 );
+}
+
+if(!(myObj.p5 === undefined)){
+ $ERROR('#10: myObj.p5 === undefined. Actual: myObj.p5 ==='+ myObj.p5 );
+}
+
+if(!(st_parseInt === "parseInt")){
+ $ERROR('#11: myObj.parseInt === "parseInt". Actual: myObj.parseInt ==='+ myObj.parseInt );
+}
+
+if(!(st_NaN === "NaN")){
+ $ERROR('#12: st_NaN === "NaN". Actual: st_NaN ==='+ st_NaN );
+}
+
+if(!(st_Infinity === "Infinity")){
+ $ERROR('#13: st_Infinity === "Infinity". Actual: st_Infinity ==='+ st_Infinity );
+}
+
+if(!(st_eval === "eval")){
+ $ERROR('#14: st_eval === "eval". Actual: st_eval ==='+ st_eval );
+}
+
+if(!(st_parseFloat === "parseFloat")){
+ $ERROR('#15: st_parseFloat === "parseFloat". Actual: st_parseFloat ==='+ st_parseFloat );
+}
+
+if(!(st_isNaN === "isNaN")){
+ $ERROR('#16: st_isNaN === "isNaN". Actual: st_isNaN ==='+ st_isNaN );
+}
+
+if(!(st_isFinite === "isFinite")){
+ $ERROR('#17: st_isFinite === "isFinite". Actual: st_isFinite ==='+ st_isFinite );
+}
+
+try{
+ value;
+ $ERROR('#18: value is not defined');
+}
+catch(e){
+}
+
+if(!(myObj.value === "myObj_value")){
+ $ERROR('#19: myObj.value === "myObj_value". Actual: myObj.value ==='+ myObj.value );
+}
+
+
diff --git a/js/src/tests/test262/ch12/12.10/S12.10_A1.2_T4.js b/js/src/tests/test262/ch12/12.10/S12.10_A1.2_T4.js
new file mode 100644
index 000000000..f8bff8e20
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.10/S12.10_A1.2_T4.js
@@ -0,0 +1,153 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * The with statement adds a computed object to the front of the
+ * scope chain of the current execution context
+ *
+ * @path ch12/12.10/S12.10_A1.2_T4.js
+ * @description Calling a function without "with" statement when the statement itself is declared within the function declaration, leading to completion by exception
+ * @noStrict
+ */
+
+this.p1 = 1;
+this.p2 = 2;
+this.p3 = 3;
+var result = "result";
+var myObj = {p1: 'a',
+ p2: 'b',
+ p3: 'c',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';},
+ parseInt : function(){return 'obj_parseInt';},
+ NaN : 'obj_NaN',
+ Infinity : 'obj_Infinity',
+ eval : function(){return 'obj_eval';},
+ parseFloat : function(){return 'obj_parseFloat';},
+ isNaN : function(){return 'obj_isNaN';},
+ isFinite : function(){return 'obj_isFinite';}
+}
+var del;
+var st_p1 = "p1";
+var st_p2 = "p2";
+var st_p3 = "p3";
+var st_parseInt = "parseInt";
+var st_NaN = "NaN";
+var st_Infinity = "Infinity";
+var st_eval = "eval";
+var st_parseFloat = "parseFloat";
+var st_isNaN = "isNaN";
+var st_isFinite = "isFinite";
+
+try {
+ var f = function(){
+ with(myObj){
+ st_p1 = p1;
+ st_p2 = p2;
+ st_p3 = p3;
+ st_parseInt = parseInt;
+ st_NaN = NaN;
+ st_Infinity = Infinity;
+ st_eval = eval;
+ st_parseFloat = parseFloat;
+ st_isNaN = isNaN;
+ st_isFinite = isFinite;
+ p1 = 'x1';
+ this.p2 = 'x2';
+ del = delete p3;
+ var p4 = 'x4';
+ p5 = 'x5';
+ var value = 'value';
+ throw value;
+ }
+ }
+ f();
+} catch(e){
+ result = e;
+}
+
+if(!(result === "value")){
+ $ERROR('#0: result === "value". Actual: result ==='+ result );
+}
+
+if(!(p1 === 1)){
+ $ERROR('#1: p1 === 1. Actual: p1 ==='+ p1 );
+}
+
+if(!(p2 === "x2")){
+ $ERROR('#2: p2 === "x2". Actual: p2 ==='+ p2 );
+}
+
+if(!(p3 === 3)){
+ $ERROR('#3: p3 === 3. Actual: p3 ==='+ p3 );
+}
+
+try {
+ p4;
+ $ERROR('#4: p4 is not defined');
+} catch(e) {
+}
+
+if(!(p5 === "x5")){
+ $ERROR('#5: p5 === "x5". Actual: p5 ==='+ p5 );
+}
+
+if(!(myObj.p1 === "x1")){
+ $ERROR('#6: myObj.p1 === "x1". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+
+if(!(myObj.p2 === "b")){
+ $ERROR('#7: myObj.p2 === "b". Actual: myObj.p2 ==='+ myObj.p2 );
+}
+
+if(!(myObj.p3 === undefined)){
+ $ERROR('#8: myObj.p3 === undefined. Actual: myObj.p3 ==='+ myObj.p3 );
+}
+
+if(!(myObj.p4 === undefined)){
+ $ERROR('#9: myObj.p4 === undefined. Actual: myObj.p4 ==='+ myObj.p4 );
+}
+
+if(!(myObj.p5 === undefined)){
+ $ERROR('#10: myObj.p5 === undefined. Actual: myObj.p5 ==='+ myObj.p5 );
+}
+
+if(!(st_parseInt !== parseInt)){
+ $ERROR('#11: myObj.parseInt !== parseInt');
+}
+
+if(!(st_NaN === "obj_NaN")){
+ $ERROR('#12: myObj.NaN !== NaN');
+}
+
+if(!(st_Infinity !== Infinity)){
+ $ERROR('#13: myObj.Infinity !== Infinity');
+}
+
+if(!(st_eval !== eval)){
+ $ERROR('#14: myObj.eval !== eval');
+}
+
+if(!(st_parseFloat !== parseFloat)){
+ $ERROR('#15: myObj.parseFloat !== parseFloat');
+}
+
+if(!(st_isNaN !== isNaN)){
+ $ERROR('#16: myObj.isNaN !== isNaN');
+}
+
+if(!(st_isFinite !== isFinite)){
+ $ERROR('#17: myObj.isFinite !== isFinite');
+}
+
+try{
+ value;
+ $ERROR('#18: value is not defined');
+}
+catch(e){
+}
+
+if(!(myObj.value === "value")){
+ $ERROR('#19: myObj.value === "value". Actual: myObj.value ==='+ myObj.value );
+}
+
diff --git a/js/src/tests/test262/ch12/12.10/S12.10_A1.2_T5.js b/js/src/tests/test262/ch12/12.10/S12.10_A1.2_T5.js
new file mode 100644
index 000000000..d67f69d6d
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.10/S12.10_A1.2_T5.js
@@ -0,0 +1,151 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * The with statement adds a computed object to the front of the
+ * scope chain of the current execution context
+ *
+ * @path ch12/12.10/S12.10_A1.2_T5.js
+ * @description Calling a function without "with" statement when the statement itself is declared within the function declaration, leading to completion by exception
+ * @noStrict
+ */
+
+this.p1 = 1;
+this.p2 = 2;
+this.p3 = 3;
+var result = "result";
+var myObj = {p1: 'a',
+ p2: 'b',
+ p3: 'c',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';},
+ parseInt : function(){return 'obj_parseInt';},
+ NaN : 'obj_NaN',
+ Infinity : 'obj_Infinity',
+ eval : function(){return 'obj_eval';},
+ parseFloat : function(){return 'obj_parseFloat';},
+ isNaN : function(){return 'obj_isNaN';},
+ isFinite : function(){return 'obj_isFinite';}
+}
+var del;
+var st_p1 = "p1";
+var st_p2 = "p2";
+var st_p3 = "p3";
+var st_parseInt = "parseInt";
+var st_NaN = "NaN";
+var st_Infinity = "Infinity";
+var st_eval = "eval";
+var st_parseFloat = "parseFloat";
+var st_isNaN = "isNaN";
+var st_isFinite = "isFinite";
+
+try {
+ var f = function(){
+ with(myObj){
+ throw value;
+ st_p1 = p1;
+ st_p2 = p2;
+ st_p3 = p3;
+ st_parseInt = parseInt;
+ st_NaN = NaN;
+ st_Infinity = Infinity;
+ st_eval = eval;
+ st_parseFloat = parseFloat;
+ st_isNaN = isNaN;
+ st_isFinite = isFinite;
+ p1 = 'x1';
+ this.p2 = 'x2';
+ del = delete p3;
+ var p4 = 'x4';
+ p5 = 'x5';
+ var value = 'value';
+ }
+ }
+ f();
+} catch(e){
+ result = e;
+}
+
+if(!(result === "myObj_value")){
+ $ERROR('#0: result === "myObj_value". Actual: result ==='+ result );
+}
+
+if(!(p2 === 2)){
+ $ERROR('#2: p2 === 2. Actual: p2 ==='+ p2 );
+}
+
+if(!(p3 === 3)){
+ $ERROR('#3: p3 === 3. Actual: p3 ==='+ p3 );
+}
+
+try {
+ p4;
+ $ERROR('#4: p4 is not defined');
+} catch(e) {
+}
+
+try {
+ p5;
+ $ERROR('#5: p5 is not defined');
+} catch(e) {
+}
+
+if(!(myObj.p1 === "a")){
+ $ERROR('#6: myObj.p1 === "a". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+
+if(!(myObj.p2 === "b")){
+ $ERROR('#7: myObj.p2 === "b". Actual: myObj.p2 ==='+ myObj.p2 );
+}
+
+if(!(myObj.p3 === "c")){
+ $ERROR('#8: myObj.p3 === "c". Actual: myObj.p3 ==='+ myObj.p3 );
+}
+
+if(!(myObj.p4 === undefined)){
+ $ERROR('#9: myObj.p4 === undefined. Actual: myObj.p4 ==='+ myObj.p4 );
+}
+
+if(!(myObj.p5 === undefined)){
+ $ERROR('#10: myObj.p5 === undefined. Actual: myObj.p5 ==='+ myObj.p5 );
+}
+
+if(!(st_parseInt === "parseInt")){
+ $ERROR('#11: myObj.parseInt === "parseInt". Actual: myObj.parseInt ==='+ myObj.parseInt );
+}
+
+if(!(st_NaN === "NaN")){
+ $ERROR('#12: st_NaN === "NaN". Actual: st_NaN ==='+ st_NaN );
+}
+
+if(!(st_Infinity === "Infinity")){
+ $ERROR('#13: st_Infinity === "Infinity". Actual: st_Infinity ==='+ st_Infinity );
+}
+
+if(!(st_eval === "eval")){
+ $ERROR('#14: st_eval === "eval". Actual: st_eval ==='+ st_eval );
+}
+
+if(!(st_parseFloat === "parseFloat")){
+ $ERROR('#15: st_parseFloat === "parseFloat". Actual: st_parseFloat ==='+ st_parseFloat );
+}
+
+if(!(st_isNaN === "isNaN")){
+ $ERROR('#16: st_isNaN === "isNaN". Actual: st_isNaN ==='+ st_isNaN );
+}
+
+if(!(st_isFinite === "isFinite")){
+ $ERROR('#17: st_isFinite === "isFinite". Actual: st_isFinite ==='+ st_isFinite );
+}
+
+try{
+ value;
+ $ERROR('#18: value is not defined');
+}
+catch(e){
+}
+
+if(!(myObj.value === "myObj_value")){
+ $ERROR('#19: myObj.value === "myObj_value". Actual: myObj.value ==='+ myObj.value );
+}
+
diff --git a/js/src/tests/test262/ch12/12.10/S12.10_A1.3_T1.js b/js/src/tests/test262/ch12/12.10/S12.10_A1.3_T1.js
new file mode 100644
index 000000000..3e453847b
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.10/S12.10_A1.3_T1.js
@@ -0,0 +1,144 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * The with statement adds a computed object to the front of the
+ * scope chain of the current execution context
+ *
+ * @path ch12/12.10/S12.10_A1.3_T1.js
+ * @description Using "with" statement within function constructor, leading to normal completition
+ * @noStrict
+ */
+
+this.p1 = 1;
+this.p2 = 2;
+this.p3 = 3;
+var result = "result";
+var myObj = {p1: 'a',
+ p2: 'b',
+ p3: 'c',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';},
+ parseInt : function(){return 'obj_parseInt';},
+ NaN : 'obj_NaN',
+ Infinity : 'obj_Infinity',
+ eval : function(){return 'obj_eval';},
+ parseFloat : function(){return 'obj_parseFloat';},
+ isNaN : function(){return 'obj_isNaN';},
+ isFinite : function(){return 'obj_isFinite';}
+}
+var del;
+var st_p1 = "p1";
+var st_p2 = "p2";
+var st_p3 = "p3";
+var st_parseInt = "parseInt";
+var st_NaN = "NaN";
+var st_Infinity = "Infinity";
+var st_eval = "eval";
+var st_parseFloat = "parseFloat";
+var st_isNaN = "isNaN";
+var st_isFinite = "isFinite";
+
+var f = function(){
+ with(myObj){
+ st_p1 = p1;
+ st_p2 = p2;
+ st_p3 = p3;
+ st_parseInt = parseInt;
+ st_NaN = NaN;
+ st_Infinity = Infinity;
+ st_eval = eval;
+ st_parseFloat = parseFloat;
+ st_isNaN = isNaN;
+ st_isFinite = isFinite;
+ p1 = 'x1';
+ this.p2 = 'x2';
+ del = delete p3;
+ var p4 = 'x4';
+ p5 = 'x5';
+ var value = 'value';
+ }
+}
+var obj = new f();
+
+if(!(p1 === 1)){
+ $ERROR('#1: p1 === 1. Actual: p1 ==='+ p1 );
+}
+
+if(!(p2 === 2)){
+ $ERROR('#2: p2 === 2. Actual: p2 ==='+ p2 );
+}
+
+if(!(p3 === 3)){
+ $ERROR('#3: p3 === 3. Actual: p3 ==='+ p3 );
+}
+
+try {
+ p4;
+ $ERROR('#4: p4 is not defined');
+} catch(e) {
+}
+
+if(!(p5 === "x5")){
+ $ERROR('#5: p5 === "x5". Actual: p5 ==='+ p5 );
+}
+
+if(!(myObj.p1 === "x1")){
+ $ERROR('#6: myObj.p1 === "x1". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+
+if(!(myObj.p2 === "b")){
+ $ERROR('#7: myObj.p2 === "b". Actual: myObj.p2 ==='+ myObj.p2 );
+}
+
+if(!(myObj.p3 === undefined)){
+ $ERROR('#8: myObj.p3 === undefined. Actual: myObj.p3 ==='+ myObj.p3 );
+}
+
+if(!(myObj.p4 === undefined)){
+ $ERROR('#9: myObj.p4 === undefined. Actual: myObj.p4 ==='+ myObj.p4 );
+}
+
+if(!(myObj.p5 === undefined)){
+ $ERROR('#10: myObj.p5 === undefined. Actual: myObj.p5 ==='+ myObj.p5 );
+}
+
+if(!(st_parseInt !== parseInt)){
+ $ERROR('#11: myObj.parseInt !== parseInt');
+}
+
+if(!(st_NaN === "obj_NaN")){
+ $ERROR('#12: myObj.NaN !== NaN');
+}
+
+if(!(st_Infinity !== Infinity)){
+ $ERROR('#13: myObj.Infinity !== Infinity');
+}
+
+if(!(st_eval !== eval)){
+ $ERROR('#14: myObj.eval !== eval');
+}
+
+if(!(st_parseFloat !== parseFloat)){
+ $ERROR('#15: myObj.parseFloat !== parseFloat');
+}
+
+if(!(st_isNaN !== isNaN)){
+ $ERROR('#16: myObj.isNaN !== isNaN');
+}
+
+if(!(st_isFinite !== isFinite)){
+ $ERROR('#17: myObj.isFinite !== isFinite');
+}
+
+try{
+ value;
+ $ERROR('#18: value is not defined');
+}
+catch(e){
+}
+
+if(!(myObj.value === "value")){
+ $ERROR('#19: myObj.value === "value". Actual: myObj.value ==='+ myObj.value );
+}
+
diff --git a/js/src/tests/test262/ch12/12.10/S12.10_A1.3_T2.js b/js/src/tests/test262/ch12/12.10/S12.10_A1.3_T2.js
new file mode 100644
index 000000000..183d0dabf
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.10/S12.10_A1.3_T2.js
@@ -0,0 +1,145 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * The with statement adds a computed object to the front of the
+ * scope chain of the current execution context
+ *
+ * @path ch12/12.10/S12.10_A1.3_T2.js
+ * @description Using "with" statement within function constructor, leading to normal completition by "return"
+ * @noStrict
+ */
+
+this.p1 = 1;
+this.p2 = 2;
+this.p3 = 3;
+var result = "result";
+var myObj = {p1: 'a',
+ p2: 'b',
+ p3: 'c',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';},
+ parseInt : function(){return 'obj_parseInt';},
+ NaN : 'obj_NaN',
+ Infinity : 'obj_Infinity',
+ eval : function(){return 'obj_eval';},
+ parseFloat : function(){return 'obj_parseFloat';},
+ isNaN : function(){return 'obj_isNaN';},
+ isFinite : function(){return 'obj_isFinite';}
+}
+var del;
+var st_p1 = "p1";
+var st_p2 = "p2";
+var st_p3 = "p3";
+var st_parseInt = "parseInt";
+var st_NaN = "NaN";
+var st_Infinity = "Infinity";
+var st_eval = "eval";
+var st_parseFloat = "parseFloat";
+var st_isNaN = "isNaN";
+var st_isFinite = "isFinite";
+
+var f = function(){
+ with(myObj){
+ st_p1 = p1;
+ st_p2 = p2;
+ st_p3 = p3;
+ st_parseInt = parseInt;
+ st_NaN = NaN;
+ st_Infinity = Infinity;
+ st_eval = eval;
+ st_parseFloat = parseFloat;
+ st_isNaN = isNaN;
+ st_isFinite = isFinite;
+ p1 = 'x1';
+ this.p2 = 'x2';
+ del = delete p3;
+ var p4 = 'x4';
+ p5 = 'x5';
+ var value = 'value';
+ return value;
+ }
+}
+var obj = new f();
+
+if(!(p1 === 1)){
+ $ERROR('#1: p1 === 1. Actual: p1 ==='+ p1 );
+}
+
+if(!(p2 === 2)){
+ $ERROR('#2: p2 === 2. Actual: p2 ==='+ p2 );
+}
+
+if(!(p3 === 3)){
+ $ERROR('#3: p3 === 3. Actual: p3 ==='+ p3 );
+}
+
+try {
+ p4;
+ $ERROR('#4: p4 is not defined');
+} catch(e) {
+}
+
+if(!(p5 === "x5")){
+ $ERROR('#5: p5 === "x5". Actual: p5 ==='+ p5 );
+}
+
+if(!(myObj.p1 === "x1")){
+ $ERROR('#6: myObj.p1 === "x1". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+
+if(!(myObj.p2 === "b")){
+ $ERROR('#7: myObj.p2 === "b". Actual: myObj.p2 ==='+ myObj.p2 );
+}
+
+if(!(myObj.p3 === undefined)){
+ $ERROR('#8: myObj.p3 === undefined. Actual: myObj.p3 ==='+ myObj.p3 );
+}
+
+if(!(myObj.p4 === undefined)){
+ $ERROR('#9: myObj.p4 === undefined. Actual: myObj.p4 ==='+ myObj.p4 );
+}
+
+if(!(myObj.p5 === undefined)){
+ $ERROR('#10: myObj.p5 === undefined. Actual: myObj.p5 ==='+ myObj.p5 );
+}
+
+if(!(st_parseInt !== parseInt)){
+ $ERROR('#11: myObj.parseInt !== parseInt');
+}
+
+if(!(st_NaN === "obj_NaN")){
+ $ERROR('#12: myObj.NaN !== NaN');
+}
+
+if(!(st_Infinity !== Infinity)){
+ $ERROR('#13: myObj.Infinity !== Infinity');
+}
+
+if(!(st_eval !== eval)){
+ $ERROR('#14: myObj.eval !== eval');
+}
+
+if(!(st_parseFloat !== parseFloat)){
+ $ERROR('#15: myObj.parseFloat !== parseFloat');
+}
+
+if(!(st_isNaN !== isNaN)){
+ $ERROR('#16: myObj.isNaN !== isNaN');
+}
+
+if(!(st_isFinite !== isFinite)){
+ $ERROR('#17: myObj.isFinite !== isFinite');
+}
+
+try{
+ value;
+ $ERROR('#18: value is not defined');
+}
+catch(e){
+}
+
+if(!(myObj.value === "value")){
+ $ERROR('#19: myObj.value === "value". Actual: myObj.value ==='+ myObj.value );
+}
+
diff --git a/js/src/tests/test262/ch12/12.10/S12.10_A1.3_T3.js b/js/src/tests/test262/ch12/12.10/S12.10_A1.3_T3.js
new file mode 100644
index 000000000..e413f3918
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.10/S12.10_A1.3_T3.js
@@ -0,0 +1,148 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * The with statement adds a computed object to the front of the
+ * scope chain of the current execution context
+ *
+ * @path ch12/12.10/S12.10_A1.3_T3.js
+ * @description Using "with" statement within function constructor, leading to normal completition by "return"
+ * @noStrict
+ */
+
+this.p1 = 1;
+this.p2 = 2;
+this.p3 = 3;
+var result = "result";
+var myObj = {p1: 'a',
+ p2: 'b',
+ p3: 'c',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';},
+ parseInt : function(){return 'obj_parseInt';},
+ NaN : 'obj_NaN',
+ Infinity : 'obj_Infinity',
+ eval : function(){return 'obj_eval';},
+ parseFloat : function(){return 'obj_parseFloat';},
+ isNaN : function(){return 'obj_isNaN';},
+ isFinite : function(){return 'obj_isFinite';}
+}
+var del;
+var st_p1 = "p1";
+var st_p2 = "p2";
+var st_p3 = "p3";
+var st_parseInt = "parseInt";
+var st_NaN = "NaN";
+var st_Infinity = "Infinity";
+var st_eval = "eval";
+var st_parseFloat = "parseFloat";
+var st_isNaN = "isNaN";
+var st_isFinite = "isFinite";
+
+var f = function(){
+ with(myObj){
+ return value;
+ st_p1 = p1;
+ st_p2 = p2;
+ st_p3 = p3;
+ st_parseInt = parseInt;
+ st_NaN = NaN;
+ st_Infinity = Infinity;
+ st_eval = eval;
+ st_parseFloat = parseFloat;
+ st_isNaN = isNaN;
+ st_isFinite = isFinite;
+ p1 = 'x1';
+ this.p2 = 'x2';
+ del = delete p3;
+ var p4 = 'x4';
+ p5 = 'x5';
+ var value = 'value';
+ }
+}
+var obj = new f();
+
+if(!(p1 === 1)){
+ $ERROR('#1: p1 === 1. Actual: p1 ==='+ p1 );
+}
+
+if(!(p2 === 2)){
+ $ERROR('#2: p2 === 2. Actual: p2 ==='+ p2 );
+}
+
+if(!(p3 === 3)){
+ $ERROR('#3: p3 === 3. Actual: p3 ==='+ p3 );
+}
+
+try {
+ p4;
+ $ERROR('#4: p4 is not defined');
+} catch(e) {
+}
+
+try {
+ p5;
+ $ERROR('#5: p5 is not defined');
+} catch(e) {
+}
+
+if(!(myObj.p1 === "a")){
+ $ERROR('#6: myObj.p1 === "a". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+
+if(!(myObj.p2 === "b")){
+ $ERROR('#7: myObj.p2 === "b". Actual: myObj.p2 ==='+ myObj.p2 );
+}
+
+if(!(myObj.p3 === "c")){
+ $ERROR('#8: myObj.p3 === "c". Actual: myObj.p3 ==='+ myObj.p3 );
+}
+
+if(!(myObj.p4 === undefined)){
+ $ERROR('#9: myObj.p4 === undefined. Actual: myObj.p4 ==='+ myObj.p4 );
+}
+
+if(!(myObj.p5 === undefined)){
+ $ERROR('#10: myObj.p5 === undefined. Actual: myObj.p5 ==='+ myObj.p5 );
+}
+
+if(!(st_parseInt === "parseInt")){
+ $ERROR('#11: myObj.parseInt === "parseInt". Actual: myObj.parseInt ==='+ myObj.parseInt );
+}
+
+if(!(st_NaN === "NaN")){
+ $ERROR('#12: st_NaN === "NaN". Actual: st_NaN ==='+ st_NaN );
+}
+
+if(!(st_Infinity === "Infinity")){
+ $ERROR('#13: st_Infinity === "Infinity". Actual: st_Infinity ==='+ st_Infinity );
+}
+
+if(!(st_eval === "eval")){
+ $ERROR('#14: st_eval === "eval". Actual: st_eval ==='+ st_eval );
+}
+
+if(!(st_parseFloat === "parseFloat")){
+ $ERROR('#15: st_parseFloat === "parseFloat". Actual: st_parseFloat ==='+ st_parseFloat );
+}
+
+if(!(st_isNaN === "isNaN")){
+ $ERROR('#16: st_isNaN === "isNaN". Actual: st_isNaN ==='+ st_isNaN );
+}
+
+if(!(st_isFinite === "isFinite")){
+ $ERROR('#17: st_isFinite === "isFinite". Actual: st_isFinite ==='+ st_isFinite );
+}
+
+try{
+ value;
+ $ERROR('#18: value is not defined');
+}
+catch(e){
+}
+
+if(!(myObj.value === "myObj_value")){
+ $ERROR('#19: myObj.value === "myObj_value". Actual: myObj.value ==='+ myObj.value );
+}
+
+
diff --git a/js/src/tests/test262/ch12/12.10/S12.10_A1.3_T4.js b/js/src/tests/test262/ch12/12.10/S12.10_A1.3_T4.js
new file mode 100644
index 000000000..7ac5823f7
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.10/S12.10_A1.3_T4.js
@@ -0,0 +1,149 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * The with statement adds a computed object to the front of the
+ * scope chain of the current execution context
+ *
+ * @path ch12/12.10/S12.10_A1.3_T4.js
+ * @description Using "with" statement within function constructor, leading to completition by exception
+ * @noStrict
+ */
+
+this.p1 = 1;
+this.p2 = 2;
+this.p3 = 3;
+var result = "result";
+var myObj = {p1: 'a',
+ p2: 'b',
+ p3: 'c',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';},
+ parseInt : function(){return 'obj_parseInt';},
+ NaN : 'obj_NaN',
+ Infinity : 'obj_Infinity',
+ eval : function(){return 'obj_eval';},
+ parseFloat : function(){return 'obj_parseFloat';},
+ isNaN : function(){return 'obj_isNaN';},
+ isFinite : function(){return 'obj_isFinite';}
+}
+var del;
+var st_p1 = "p1";
+var st_p2 = "p2";
+var st_p3 = "p3";
+var st_parseInt = "parseInt";
+var st_NaN = "NaN";
+var st_Infinity = "Infinity";
+var st_eval = "eval";
+var st_parseFloat = "parseFloat";
+var st_isNaN = "isNaN";
+var st_isFinite = "isFinite";
+
+try {
+ var f = function(){
+ with(myObj){
+ st_p1 = p1;
+ st_p2 = p2;
+ st_p3 = p3;
+ st_parseInt = parseInt;
+ st_NaN = NaN;
+ st_Infinity = Infinity;
+ st_eval = eval;
+ st_parseFloat = parseFloat;
+ st_isNaN = isNaN;
+ st_isFinite = isFinite;
+ p1 = 'x1';
+ this.p2 = 'x2';
+ del = delete p3;
+ var p4 = 'x4';
+ p5 = 'x5';
+ var value = 'value';
+ throw value;
+ }
+ }
+ var obj = new f();
+} catch(e){
+ result = e;
+}
+
+if(!(result === "value")){
+ $ERROR('#0: result === "value". Actual: result ==='+ result );
+}
+
+if(!(p1 === 1)){
+ $ERROR('#1: p1 === 1. Actual: p1 ==='+ p1 );
+}
+
+if(!(p2 === 2)){
+ $ERROR('#2: p2 === 2. Actual: p2 ==='+ p2 );
+}
+
+try {
+ p4;
+ $ERROR('#4: p4 is not defined');
+} catch(e) {
+}
+
+if(!(p5 === "x5")){
+ $ERROR('#5: p5 === "x5". Actual: p5 ==='+ p5 );
+}
+
+if(!(myObj.p1 === "x1")){
+ $ERROR('#6: myObj.p1 === "x1". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+
+if(!(myObj.p2 === "b")){
+ $ERROR('#7: myObj.p2 === "b". Actual: myObj.p2 ==='+ myObj.p2 );
+}
+
+if(!(myObj.p3 === undefined)){
+ $ERROR('#8: myObj.p3 === undefined. Actual: myObj.p3 ==='+ myObj.p3 );
+}
+
+if(!(myObj.p4 === undefined)){
+ $ERROR('#9: myObj.p4 === undefined. Actual: myObj.p4 ==='+ myObj.p4 );
+}
+
+if(!(myObj.p5 === undefined)){
+ $ERROR('#10: myObj.p5 === undefined. Actual: myObj.p5 ==='+ myObj.p5 );
+}
+
+if(!(st_parseInt !== parseInt)){
+ $ERROR('#11: myObj.parseInt !== parseInt');
+}
+
+if(!(st_NaN === "obj_NaN")){
+ $ERROR('#12: myObj.NaN !== NaN');
+}
+
+if(!(st_Infinity !== Infinity)){
+ $ERROR('#13: myObj.Infinity !== Infinity');
+}
+
+if(!(st_eval !== eval)){
+ $ERROR('#14: myObj.eval !== eval');
+}
+
+if(!(st_parseFloat !== parseFloat)){
+ $ERROR('#15: myObj.parseFloat !== parseFloat');
+}
+
+if(!(st_isNaN !== isNaN)){
+ $ERROR('#16: myObj.isNaN !== isNaN');
+}
+
+if(!(st_isFinite !== isFinite)){
+ $ERROR('#17: myObj.isFinite !== isFinite');
+}
+
+try{
+ value;
+ $ERROR('#18: value is not defined');
+}
+catch(e){
+}
+
+if(!(myObj.value === "value")){
+ $ERROR('#19: myObj.value === "value". Actual: myObj.value ==='+ myObj.value );
+}
+
diff --git a/js/src/tests/test262/ch12/12.10/S12.10_A1.3_T5.js b/js/src/tests/test262/ch12/12.10/S12.10_A1.3_T5.js
new file mode 100644
index 000000000..41b85c6dc
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.10/S12.10_A1.3_T5.js
@@ -0,0 +1,156 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * The with statement adds a computed object to the front of the
+ * scope chain of the current execution context
+ *
+ * @path ch12/12.10/S12.10_A1.3_T5.js
+ * @description Using "with" statement within function constructor, leading to completition by exception
+ * @noStrict
+ */
+
+this.p1 = 1;
+this.p2 = 2;
+this.p3 = 3;
+var result = "result";
+var myObj = {p1: 'a',
+ p2: 'b',
+ p3: 'c',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';},
+ parseInt : function(){return 'obj_parseInt';},
+ NaN : 'obj_NaN',
+ Infinity : 'obj_Infinity',
+ eval : function(){return 'obj_eval';},
+ parseFloat : function(){return 'obj_parseFloat';},
+ isNaN : function(){return 'obj_isNaN';},
+ isFinite : function(){return 'obj_isFinite';}
+}
+var del;
+var st_p1 = "p1";
+var st_p2 = "p2";
+var st_p3 = "p3";
+var st_parseInt = "parseInt";
+var st_NaN = "NaN";
+var st_Infinity = "Infinity";
+var st_eval = "eval";
+var st_parseFloat = "parseFloat";
+var st_isNaN = "isNaN";
+var st_isFinite = "isFinite";
+
+try {
+ var f = function(){
+ with(myObj){
+ throw value;
+ st_p1 = p1;
+ st_p2 = p2;
+ st_p3 = p3;
+ st_parseInt = parseInt;
+ st_NaN = NaN;
+ st_Infinity = Infinity;
+ st_eval = eval;
+ st_parseFloat = parseFloat;
+ st_isNaN = isNaN;
+ st_isFinite = isFinite;
+ p1 = 'x1';
+ this.p2 = 'x2';
+ del = delete p3;
+ var p4 = 'x4';
+ p5 = 'x5';
+ var value = 'value';
+ }
+ }
+ var obj = new f();
+} catch(e){
+ result = e;
+}
+
+if(!(result === "myObj_value")){
+ $ERROR('#0: result === "myObj_value". Actual: result ==='+ result );
+}
+
+if(!(p1 === 1)){
+ $ERROR('#1: p1 === 1. Actual: p1 ==='+ p1 );
+}
+
+if(!(p2 === 2)){
+ $ERROR('#2: p2 === 2. Actual: p2 ==='+ p2 );
+}
+
+if(!(p3 === 3)){
+ $ERROR('#3: p3 === 3. Actual: p3 ==='+ p3 );
+}
+
+try {
+ p4;
+ $ERROR('#4: p4 is not defined');
+} catch(e) {
+}
+
+try {
+ p5;
+ $ERROR('#5: p5 is not defined');
+} catch(e) {
+}
+
+if(!(myObj.p1 === "a")){
+ $ERROR('#6: myObj.p1 === "a". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+
+if(!(myObj.p2 === "b")){
+ $ERROR('#7: myObj.p2 === "b". Actual: myObj.p2 ==='+ myObj.p2 );
+}
+
+if(!(myObj.p3 === "c")){
+ $ERROR('#8: myObj.p3 === "c". Actual: myObj.p3 ==='+ myObj.p3 );
+}
+
+if(!(myObj.p4 === undefined)){
+ $ERROR('#9: myObj.p4 === undefined. Actual: myObj.p4 ==='+ myObj.p4 );
+}
+
+if(!(myObj.p5 === undefined)){
+ $ERROR('#10: myObj.p5 === undefined. Actual: myObj.p5 ==='+ myObj.p5 );
+}
+
+if(!(st_parseInt === "parseInt")){
+ $ERROR('#11: myObj.parseInt === "parseInt". Actual: myObj.parseInt ==='+ myObj.parseInt );
+}
+
+if(!(st_NaN === "NaN")){
+ $ERROR('#12: st_NaN === "NaN". Actual: st_NaN ==='+ st_NaN );
+}
+
+if(!(st_Infinity === "Infinity")){
+ $ERROR('#13: st_Infinity === "Infinity". Actual: st_Infinity ==='+ st_Infinity );
+}
+
+if(!(st_eval === "eval")){
+ $ERROR('#14: st_eval === "eval". Actual: st_eval ==='+ st_eval );
+}
+
+if(!(st_parseFloat === "parseFloat")){
+ $ERROR('#15: st_parseFloat === "parseFloat". Actual: st_parseFloat ==='+ st_parseFloat );
+}
+
+if(!(st_isNaN === "isNaN")){
+ $ERROR('#16: st_isNaN === "isNaN". Actual: st_isNaN ==='+ st_isNaN );
+}
+
+if(!(st_isFinite === "isFinite")){
+ $ERROR('#17: st_isFinite === "isFinite". Actual: st_isFinite ==='+ st_isFinite );
+}
+
+try{
+ value;
+ $ERROR('#18: value is not defined');
+}
+catch(e){
+}
+
+if(!(myObj.value === "myObj_value")){
+ $ERROR('#19: myObj.value === "myObj_value". Actual: myObj.value ==='+ myObj.value );
+}
+
+
diff --git a/js/src/tests/test262/ch12/12.10/S12.10_A1.4_T1.js b/js/src/tests/test262/ch12/12.10/S12.10_A1.4_T1.js
new file mode 100644
index 000000000..2bbec00ec
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.10/S12.10_A1.4_T1.js
@@ -0,0 +1,139 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * The with statement adds a computed object to the front of the
+ * scope chain of the current execution context
+ *
+ * @path ch12/12.10/S12.10_A1.4_T1.js
+ * @description Using "with" statement within iteration statement, leading to normal completion
+ * @noStrict
+ */
+
+this.p1 = 1;
+this.p2 = 2;
+this.p3 = 3;
+var result = "result";
+var myObj = {p1: 'a',
+ p2: 'b',
+ p3: 'c',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';},
+ parseInt : function(){return 'obj_parseInt';},
+ NaN : 'obj_NaN',
+ Infinity : 'obj_Infinity',
+ eval : function(){return 'obj_eval';},
+ parseFloat : function(){return 'obj_parseFloat';},
+ isNaN : function(){return 'obj_isNaN';},
+ isFinite : function(){return 'obj_isFinite';}
+}
+var del;
+var st_p1 = "p1";
+var st_p2 = "p2";
+var st_p3 = "p3";
+var st_parseInt = "parseInt";
+var st_NaN = "NaN";
+var st_Infinity = "Infinity";
+var st_eval = "eval";
+var st_parseFloat = "parseFloat";
+var st_isNaN = "isNaN";
+var st_isFinite = "isFinite";
+
+do{
+ with(myObj){
+ st_p1 = p1;
+ st_p2 = p2;
+ st_p3 = p3;
+ st_parseInt = parseInt;
+ st_NaN = NaN;
+ st_Infinity = Infinity;
+ st_eval = eval;
+ st_parseFloat = parseFloat;
+ st_isNaN = isNaN;
+ st_isFinite = isFinite;
+ p1 = 'x1';
+ this.p2 = 'x2';
+ del = delete p3;
+ var p4 = 'x4';
+ p5 = 'x5';
+ var value = 'value';
+ }
+}
+while(false);
+
+if(!(p1 === 1)){
+ $ERROR('#1: p1 === 1. Actual: p1 ==='+ p1 );
+}
+
+if(!(p2 === "x2")){
+ $ERROR('#2: p2 === "x2". Actual: p2 ==='+ p2 );
+}
+
+if(!(p3 === 3)){
+ $ERROR('#3: p3 === 3. Actual: p3 ==='+ p3 );
+}
+
+if(!(p4 === "x4")){
+ $ERROR('#4: p4 === "x4". Actual: p4 ==='+ p4 );
+}
+
+if(!(p5 === "x5")){
+ $ERROR('#5: p5 === "x5". Actual: p5 ==='+ p5 );
+}
+
+if(!(myObj.p1 === "x1")){
+ $ERROR('#6: myObj.p1 === "x1". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+
+if(!(myObj.p2 === "b")){
+ $ERROR('#7: myObj.p2 === "b". Actual: myObj.p2 ==='+ myObj.p2 );
+}
+
+if(!(myObj.p3 === undefined)){
+ $ERROR('#8: myObj.p3 === undefined. Actual: myObj.p3 ==='+ myObj.p3 );
+}
+
+if(!(myObj.p4 === undefined)){
+ $ERROR('#9: myObj.p4 === undefined. Actual: myObj.p4 ==='+ myObj.p4 );
+}
+
+if(!(myObj.p5 === undefined)){
+ $ERROR('#10: myObj.p5 === undefined. Actual: myObj.p5 ==='+ myObj.p5 );
+}
+
+if(!(st_parseInt !== parseInt)){
+ $ERROR('#11: myObj.parseInt !== parseInt');
+}
+
+if(!(st_NaN === "obj_NaN")){
+ $ERROR('#12: myObj.NaN !== NaN');
+}
+
+if(!(st_Infinity !== Infinity)){
+ $ERROR('#13: myObj.Infinity !== Infinity');
+}
+
+if(!(st_eval !== eval)){
+ $ERROR('#14: myObj.eval !== eval');
+}
+
+if(!(st_parseFloat !== parseFloat)){
+ $ERROR('#15: myObj.parseFloat !== parseFloat');
+}
+
+if(!(st_isNaN !== isNaN)){
+ $ERROR('#16: myObj.isNaN !== isNaN');
+}
+
+if(!(st_isFinite !== isFinite)){
+ $ERROR('#17: myObj.isFinite !== isFinite');
+}
+
+if(!(value === undefined)){
+ $ERROR('#18: value === undefined. Actual: value ==='+ value );
+}
+
+if(!(myObj.value === "value")){
+ $ERROR('#19: myObj.value === "value". Actual: myObj.value ==='+ myObj.value );
+}
+
diff --git a/js/src/tests/test262/ch12/12.10/S12.10_A1.4_T2.js b/js/src/tests/test262/ch12/12.10/S12.10_A1.4_T2.js
new file mode 100644
index 000000000..9bafbb075
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.10/S12.10_A1.4_T2.js
@@ -0,0 +1,148 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * The with statement adds a computed object to the front of the
+ * scope chain of the current execution context
+ *
+ * @path ch12/12.10/S12.10_A1.4_T2.js
+ * @description Using "with" statement within iteration statement, leading to completion by exception
+ * @noStrict
+ */
+
+this.p1 = 1;
+this.p2 = 2;
+this.p3 = 3;
+var result = "result";
+var myObj = {p1: 'a',
+ p2: 'b',
+ p3: 'c',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';},
+ parseInt : function(){return 'obj_parseInt';},
+ NaN : 'obj_NaN',
+ Infinity : 'obj_Infinity',
+ eval : function(){return 'obj_eval';},
+ parseFloat : function(){return 'obj_parseFloat';},
+ isNaN : function(){return 'obj_isNaN';},
+ isFinite : function(){return 'obj_isFinite';}
+}
+var del;
+var st_p1 = "p1";
+var st_p2 = "p2";
+var st_p3 = "p3";
+var st_parseInt = "parseInt";
+var st_NaN = "NaN";
+var st_Infinity = "Infinity";
+var st_eval = "eval";
+var st_parseFloat = "parseFloat";
+var st_isNaN = "isNaN";
+var st_isFinite = "isFinite";
+
+try {
+ do{
+ with(myObj){
+ st_p1 = p1;
+ st_p2 = p2;
+ st_p3 = p3;
+ st_parseInt = parseInt;
+ st_NaN = NaN;
+ st_Infinity = Infinity;
+ st_eval = eval;
+ st_parseFloat = parseFloat;
+ st_isNaN = isNaN;
+ st_isFinite = isFinite;
+ p1 = 'x1';
+ this.p2 = 'x2';
+ del = delete p3;
+ var p4 = 'x4';
+ p5 = 'x5';
+ var value = 'value';
+ throw value;
+ }
+ }
+ while(false);
+} catch(e){
+ result = e;
+}
+
+if(!(result === "value")){
+ $ERROR('#0: result === "value". Actual: result ==='+ result );
+}
+
+if(!(p1 === 1)){
+ $ERROR('#1: p1 === 1. Actual: p1 ==='+ p1 );
+}
+
+if(!(p2 === "x2")){
+ $ERROR('#2: p2 === "x2". Actual: p2 ==='+ p2 );
+}
+
+if(!(p3 === 3)){
+ $ERROR('#3: p3 === 3. Actual: p3 ==='+ p3 );
+}
+
+if(!(p4 === "x4")){
+ $ERROR('#4: p4 === "x4". Actual: p4 ==='+ p4 );
+}
+
+if(!(p5 === "x5")){
+ $ERROR('#5: p5 === "x5". Actual: p5 ==='+ p5 );
+}
+
+if(!(myObj.p1 === "x1")){
+ $ERROR('#6: myObj.p1 === "x1". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+
+if(!(myObj.p2 === "b")){
+ $ERROR('#7: myObj.p2 === "b". Actual: myObj.p2 ==='+ myObj.p2 );
+}
+
+if(!(myObj.p3 === undefined)){
+ $ERROR('#8: myObj.p3 === undefined. Actual: myObj.p3 ==='+ myObj.p3 );
+}
+
+if(!(myObj.p4 === undefined)){
+ $ERROR('#9: myObj.p4 === undefined. Actual: myObj.p4 ==='+ myObj.p4 );
+}
+
+if(!(myObj.p5 === undefined)){
+ $ERROR('#10: myObj.p5 === undefined. Actual: myObj.p5 ==='+ myObj.p5 );
+}
+
+if(!(st_parseInt !== parseInt)){
+ $ERROR('#11: myObj.parseInt !== parseInt');
+}
+
+if(!(st_NaN === "obj_NaN")){
+ $ERROR('#12: myObj.NaN !== NaN');
+}
+
+if(!(st_Infinity !== Infinity)){
+ $ERROR('#13: myObj.Infinity !== Infinity');
+}
+
+if(!(st_eval !== eval)){
+ $ERROR('#14: myObj.eval !== eval');
+}
+
+if(!(st_parseFloat !== parseFloat)){
+ $ERROR('#15: myObj.parseFloat !== parseFloat');
+}
+
+if(!(st_isNaN !== isNaN)){
+ $ERROR('#16: myObj.isNaN !== isNaN');
+}
+
+if(!(st_isFinite !== isFinite)){
+ $ERROR('#17: myObj.isFinite !== isFinite');
+}
+
+if(!(value === undefined)){
+ $ERROR('#18: value === undefined. Actual: value ==='+ value );
+}
+
+if(!(myObj.value === "value")){
+ $ERROR('#19: myObj.value === "value". Actual: myObj.value ==='+ myObj.value );
+}
+
diff --git a/js/src/tests/test262/ch12/12.10/S12.10_A1.4_T3.js b/js/src/tests/test262/ch12/12.10/S12.10_A1.4_T3.js
new file mode 100644
index 000000000..3b3e72f8a
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.10/S12.10_A1.4_T3.js
@@ -0,0 +1,150 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * The with statement adds a computed object to the front of the
+ * scope chain of the current execution context
+ *
+ * @path ch12/12.10/S12.10_A1.4_T3.js
+ * @description Using "with" statement within iteration statement, leading to completion by exception
+ * @noStrict
+ */
+
+this.p1 = 1;
+this.p2 = 2;
+this.p3 = 3;
+var result = "result";
+var myObj = {p1: 'a',
+ p2: 'b',
+ p3: 'c',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';},
+ parseInt : function(){return 'obj_parseInt';},
+ NaN : 'obj_NaN',
+ Infinity : 'obj_Infinity',
+ eval : function(){return 'obj_eval';},
+ parseFloat : function(){return 'obj_parseFloat';},
+ isNaN : function(){return 'obj_isNaN';},
+ isFinite : function(){return 'obj_isFinite';}
+}
+var del;
+var st_p1 = "p1";
+var st_p2 = "p2";
+var st_p3 = "p3";
+var st_parseInt = "parseInt";
+var st_NaN = "NaN";
+var st_Infinity = "Infinity";
+var st_eval = "eval";
+var st_parseFloat = "parseFloat";
+var st_isNaN = "isNaN";
+var st_isFinite = "isFinite";
+
+try {
+ do{
+ with(myObj){
+ throw value;
+ st_p1 = p1;
+ st_p2 = p2;
+ st_p3 = p3;
+ st_parseInt = parseInt;
+ st_NaN = NaN;
+ st_Infinity = Infinity;
+ st_eval = eval;
+ st_parseFloat = parseFloat;
+ st_isNaN = isNaN;
+ st_isFinite = isFinite;
+ p1 = 'x1';
+ this.p2 = 'x2';
+ del = delete p3;
+ var p4 = 'x4';
+ p5 = 'x5';
+ var value = 'value';
+ }
+ }
+ while(false);
+} catch(e){
+ result = e;
+}
+
+if(!(result === "myObj_value")){
+ $ERROR('#0: result === "myObj_value". Actual: result ==='+ result );
+}
+
+if(!(p1 === 1)){
+ $ERROR('#1: p1 === 1. Actual: p1 ==='+ p1 );
+}
+
+if(!(p2 === 2)){
+ $ERROR('#2: p2 === 2. Actual: p2 ==='+ p2 );
+}
+
+if(!(p3 === 3)){
+ $ERROR('#3: p3 === 3. Actual: p3 ==='+ p3 );
+}
+
+if(!(p4 === undefined)){
+ $ERROR('#4: p4 === undefined. Actual: p4 ==='+ p4 );
+}
+
+try {
+ p5;
+ $ERROR('#5: p5 is not defined');
+} catch(e) {
+}
+
+if(!(myObj.p1 === "a")){
+ $ERROR('#6: myObj.p1 === "a". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+
+if(!(myObj.p2 === "b")){
+ $ERROR('#7: myObj.p2 === "b". Actual: myObj.p2 ==='+ myObj.p2 );
+}
+
+if(!(myObj.p3 === "c")){
+ $ERROR('#8: myObj.p3 === "c". Actual: myObj.p3 ==='+ myObj.p3 );
+}
+
+if(!(myObj.p4 === undefined)){
+ $ERROR('#9: myObj.p4 === undefined. Actual: myObj.p4 ==='+ myObj.p4 );
+}
+
+if(!(myObj.p5 === undefined)){
+ $ERROR('#10: myObj.p5 === undefined. Actual: myObj.p5 ==='+ myObj.p5 );
+}
+
+if(!(st_parseInt === "parseInt")){
+ $ERROR('#11: myObj.parseInt === "parseInt". Actual: myObj.parseInt ==='+ myObj.parseInt );
+}
+
+if(!(st_NaN === "NaN")){
+ $ERROR('#12: st_NaN === "NaN". Actual: st_NaN ==='+ st_NaN );
+}
+
+if(!(st_Infinity === "Infinity")){
+ $ERROR('#13: st_Infinity === "Infinity". Actual: st_Infinity ==='+ st_Infinity );
+}
+
+if(!(st_eval === "eval")){
+ $ERROR('#14: st_eval === "eval". Actual: st_eval ==='+ st_eval );
+}
+
+if(!(st_parseFloat === "parseFloat")){
+ $ERROR('#15: st_parseFloat === "parseFloat". Actual: st_parseFloat ==='+ st_parseFloat );
+}
+
+if(!(st_isNaN === "isNaN")){
+ $ERROR('#16: st_isNaN === "isNaN". Actual: st_isNaN ==='+ st_isNaN );
+}
+
+if(!(st_isFinite === "isFinite")){
+ $ERROR('#17: st_isFinite === "isFinite". Actual: st_isFinite ==='+ st_isFinite );
+}
+
+if(!(value === undefined)){
+ $ERROR('#18: value === undefined. Actual: value ==='+ value );
+}
+
+if(!(myObj.value === "myObj_value")){
+ $ERROR('#19: myObj.value === "myObj_value". Actual: myObj.value ==='+ myObj.value );
+}
+
diff --git a/js/src/tests/test262/ch12/12.10/S12.10_A1.4_T4.js b/js/src/tests/test262/ch12/12.10/S12.10_A1.4_T4.js
new file mode 100644
index 000000000..b9209bb67
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.10/S12.10_A1.4_T4.js
@@ -0,0 +1,140 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * The with statement adds a computed object to the front of the
+ * scope chain of the current execution context
+ *
+ * @path ch12/12.10/S12.10_A1.4_T4.js
+ * @description Using "with" statement within iteration statement, leading to completion by break
+ * @noStrict
+ */
+
+this.p1 = 1;
+this.p2 = 2;
+this.p3 = 3;
+var result = "result";
+var myObj = {p1: 'a',
+ p2: 'b',
+ p3: 'c',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';},
+ parseInt : function(){return 'obj_parseInt';},
+ NaN : 'obj_NaN',
+ Infinity : 'obj_Infinity',
+ eval : function(){return 'obj_eval';},
+ parseFloat : function(){return 'obj_parseFloat';},
+ isNaN : function(){return 'obj_isNaN';},
+ isFinite : function(){return 'obj_isFinite';}
+}
+var del;
+var st_p1 = "p1";
+var st_p2 = "p2";
+var st_p3 = "p3";
+var st_parseInt = "parseInt";
+var st_NaN = "NaN";
+var st_Infinity = "Infinity";
+var st_eval = "eval";
+var st_parseFloat = "parseFloat";
+var st_isNaN = "isNaN";
+var st_isFinite = "isFinite";
+
+do{
+ with(myObj){
+ st_p1 = p1;
+ st_p2 = p2;
+ st_p3 = p3;
+ st_parseInt = parseInt;
+ st_NaN = NaN;
+ st_Infinity = Infinity;
+ st_eval = eval;
+ st_parseFloat = parseFloat;
+ st_isNaN = isNaN;
+ st_isFinite = isFinite;
+ p1 = 'x1';
+ this.p2 = 'x2';
+ del = delete p3;
+ var p4 = 'x4';
+ p5 = 'x5';
+ var value = 'value';
+ break;
+ }
+}
+while(false);
+
+if(!(p1 === 1)){
+ $ERROR('#1: p1 === 1. Actual: p1 ==='+ p1 );
+}
+
+if(!(p2 === "x2")){
+ $ERROR('#2: p2 === "x2". Actual: p2 ==='+ p2 );
+}
+
+if(!(p3 === 3)){
+ $ERROR('#3: p3 === 3. Actual: p3 ==='+ p3 );
+}
+
+if(!(p4 === "x4")){
+ $ERROR('#4: p4 === "x4". Actual: p4 ==='+ p4 );
+}
+
+if(!(p5 === "x5")){
+ $ERROR('#5: p5 === "x5". Actual: p5 ==='+ p5 );
+}
+
+if(!(myObj.p1 === "x1")){
+ $ERROR('#6: myObj.p1 === "x1". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+
+if(!(myObj.p2 === "b")){
+ $ERROR('#7: myObj.p2 === "b". Actual: myObj.p2 ==='+ myObj.p2 );
+}
+
+if(!(myObj.p3 === undefined)){
+ $ERROR('#8: myObj.p3 === undefined. Actual: myObj.p3 ==='+ myObj.p3 );
+}
+
+if(!(myObj.p4 === undefined)){
+ $ERROR('#9: myObj.p4 === undefined. Actual: myObj.p4 ==='+ myObj.p4 );
+}
+
+if(!(myObj.p5 === undefined)){
+ $ERROR('#10: myObj.p5 === undefined. Actual: myObj.p5 ==='+ myObj.p5 );
+}
+
+if(!(st_parseInt !== parseInt)){
+ $ERROR('#11: myObj.parseInt !== parseInt');
+}
+
+if(!(st_NaN === "obj_NaN")){
+ $ERROR('#12: myObj.NaN !== NaN');
+}
+
+if(!(st_Infinity !== Infinity)){
+ $ERROR('#13: myObj.Infinity !== Infinity');
+}
+
+if(!(st_eval !== eval)){
+ $ERROR('#14: myObj.eval !== eval');
+}
+
+if(!(st_parseFloat !== parseFloat)){
+ $ERROR('#15: myObj.parseFloat !== parseFloat');
+}
+
+if(!(st_isNaN !== isNaN)){
+ $ERROR('#16: myObj.isNaN !== isNaN');
+}
+
+if(!(st_isFinite !== isFinite)){
+ $ERROR('#17: myObj.isFinite !== isFinite');
+}
+
+if(!(value === undefined)){
+ $ERROR('#18: value === undefined. Actual: value ==='+ value );
+}
+
+if(!(myObj.value === "value")){
+ $ERROR('#19: myObj.value === "value". Actual: myObj.value ==='+ myObj.value );
+}
+
diff --git a/js/src/tests/test262/ch12/12.10/S12.10_A1.4_T5.js b/js/src/tests/test262/ch12/12.10/S12.10_A1.4_T5.js
new file mode 100644
index 000000000..b942e2b41
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.10/S12.10_A1.4_T5.js
@@ -0,0 +1,142 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * The with statement adds a computed object to the front of the
+ * scope chain of the current execution context
+ *
+ * @path ch12/12.10/S12.10_A1.4_T5.js
+ * @description Using "with" statement within iteration statement, leading to completion by break
+ * @noStrict
+ */
+
+this.p1 = 1;
+this.p2 = 2;
+this.p3 = 3;
+var result = "result";
+var myObj = {p1: 'a',
+ p2: 'b',
+ p3: 'c',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';},
+ parseInt : function(){return 'obj_parseInt';},
+ NaN : 'obj_NaN',
+ Infinity : 'obj_Infinity',
+ eval : function(){return 'obj_eval';},
+ parseFloat : function(){return 'obj_parseFloat';},
+ isNaN : function(){return 'obj_isNaN';},
+ isFinite : function(){return 'obj_isFinite';}
+}
+var del;
+var st_p1 = "p1";
+var st_p2 = "p2";
+var st_p3 = "p3";
+var st_parseInt = "parseInt";
+var st_NaN = "NaN";
+var st_Infinity = "Infinity";
+var st_eval = "eval";
+var st_parseFloat = "parseFloat";
+var st_isNaN = "isNaN";
+var st_isFinite = "isFinite";
+
+do{
+ with(myObj){
+ break;
+ st_p1 = p1;
+ st_p2 = p2;
+ st_p3 = p3;
+ st_parseInt = parseInt;
+ st_NaN = NaN;
+ st_Infinity = Infinity;
+ st_eval = eval;
+ st_parseFloat = parseFloat;
+ st_isNaN = isNaN;
+ st_isFinite = isFinite;
+ p1 = 'x1';
+ this.p2 = 'x2';
+ del = delete p3;
+ var p4 = 'x4';
+ p5 = 'x5';
+ var value = 'value';
+ }
+}
+while(false);
+
+if(!(p1 === 1)){
+ $ERROR('#1: p1 === 1. Actual: p1 ==='+ p1 );
+}
+
+if(!(p2 === 2)){
+ $ERROR('#2: p2 === 2. Actual: p2 ==='+ p2 );
+}
+
+if(!(p3 === 3)){
+ $ERROR('#3: p3 === 3. Actual: p3 ==='+ p3 );
+}
+
+if(!(p4 === undefined)){
+ $ERROR('#4: p4 ===undefined. Actual: p4 ==='+ p4 );
+}
+
+try {
+ p5;
+ $ERROR('#5: p5 is not defined');
+} catch(e) {
+}
+
+if(!(myObj.p1 === "a")){
+ $ERROR('#6: myObj.p1 === "a". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+
+if(!(myObj.p2 === "b")){
+ $ERROR('#7: myObj.p2 === "b". Actual: myObj.p2 ==='+ myObj.p2 );
+}
+
+if(!(myObj.p3 === "c")){
+ $ERROR('#8: myObj.p3 === "c". Actual: myObj.p3 ==='+ myObj.p3 );
+}
+
+if(!(myObj.p4 === undefined)){
+ $ERROR('#9: myObj.p4 === undefined. Actual: myObj.p4 ==='+ myObj.p4 );
+}
+
+if(!(myObj.p5 === undefined)){
+ $ERROR('#10: myObj.p5 === undefined. Actual: myObj.p5 ==='+ myObj.p5 );
+}
+
+if(!(st_parseInt === "parseInt")){
+ $ERROR('#11: myObj.parseInt === "parseInt". Actual: myObj.parseInt ==='+ myObj.parseInt );
+}
+
+if(!(st_NaN === "NaN")){
+ $ERROR('#12: st_NaN === "NaN". Actual: st_NaN ==='+ st_NaN );
+}
+
+if(!(st_Infinity === "Infinity")){
+ $ERROR('#13: st_Infinity === "Infinity". Actual: st_Infinity ==='+ st_Infinity );
+}
+
+if(!(st_eval === "eval")){
+ $ERROR('#14: st_eval === "eval". Actual: st_eval ==='+ st_eval );
+}
+
+if(!(st_parseFloat === "parseFloat")){
+ $ERROR('#15: st_parseFloat === "parseFloat". Actual: st_parseFloat ==='+ st_parseFloat );
+}
+
+if(!(st_isNaN === "isNaN")){
+ $ERROR('#16: st_isNaN === "isNaN". Actual: st_isNaN ==='+ st_isNaN );
+}
+
+if(!(st_isFinite === "isFinite")){
+ $ERROR('#17: st_isFinite === "isFinite". Actual: st_isFinite ==='+ st_isFinite );
+}
+
+if(!(value === undefined)){
+ $ERROR('#18: value === undefined. Actual: value ==='+ value );
+}
+
+if(!(myObj.value === "myObj_value")){
+ $ERROR('#19: myObj.value === "myObj_value". Actual: myObj.value ==='+ myObj.value );
+}
+
diff --git a/js/src/tests/test262/ch12/12.10/S12.10_A1.5_T1.js b/js/src/tests/test262/ch12/12.10/S12.10_A1.5_T1.js
new file mode 100644
index 000000000..a45cd5df1
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.10/S12.10_A1.5_T1.js
@@ -0,0 +1,144 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * The with statement adds a computed object to the front of the
+ * scope chain of the current execution context
+ *
+ * @path ch12/12.10/S12.10_A1.5_T1.js
+ * @description Using "with" statement within "for-in" statement, leading to normal completion
+ * @noStrict
+ */
+
+this.p1 = 1;
+this.p2 = 2;
+this.p3 = 3;
+var result = "result";
+var myObj = {p1: 'a',
+ p2: 'b',
+ p3: 'c',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';},
+ parseInt : function(){return 'obj_parseInt';},
+ NaN : 'obj_NaN',
+ Infinity : 'obj_Infinity',
+ eval : function(){return 'obj_eval';},
+ parseFloat : function(){return 'obj_parseFloat';},
+ isNaN : function(){return 'obj_isNaN';},
+ isFinite : function(){return 'obj_isFinite';}
+}
+var del;
+var st_p1 = "p1";
+var st_p2 = "p2";
+var st_p3 = "p3";
+var st_parseInt = "parseInt";
+var st_NaN = "NaN";
+var st_Infinity = "Infinity";
+var st_eval = "eval";
+var st_parseFloat = "parseFloat";
+var st_isNaN = "isNaN";
+var st_isFinite = "isFinite";
+
+for(var prop in myObj){
+ with(myObj){
+ if(prop === 'p1') {
+ st_p1 = p1;
+ p1 = 'x1';
+ }
+ if(prop === 'p2') {
+ st_p2 = p2;
+ this.p2 = 'x2';
+ }
+ if(prop === 'p3') {
+ st_p3 = p3;
+ del = delete p3;
+ }
+ if(prop === 'parseInt') st_parseInt = parseInt;
+ if(prop === 'NaN') st_NaN = NaN;
+ if(prop === 'Infinity') st_Infinity = Infinity;
+ if(prop === 'eval') st_eval = eval;
+ if(prop === 'parseFloat') st_parseFloat = parseFloat;
+ if(prop === 'isNaN') st_isNaN = isNaN;
+ if(prop === 'isFinite') st_isFinite = isFinite;
+ var p4 = 'x4';
+ p5 = 'x5';
+ var value = 'value';
+ }
+}
+
+if(!(p1 === 1)){
+ $ERROR('#1: p1 === 1. Actual: p1 ==='+ p1 );
+}
+
+if(!(p2 === "x2")){
+ $ERROR('#2: p2 === "x2". Actual: p2 ==='+ p2 );
+}
+
+if(!(p3 === 3)){
+ $ERROR('#3: p3 === 3. Actual: p3 ==='+ p3 );
+}
+
+if(!(p4 === "x4")){
+ $ERROR('#4: p4 === "x4". Actual: p4 ==='+ p4 );
+}
+
+if(!(p5 === "x5")){
+ $ERROR('#5: p5 === "x5". Actual: p5 ==='+ p5 );
+}
+
+if(!(myObj.p1 === "x1")){
+ $ERROR('#6: myObj.p1 === "x1". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+
+if(!(myObj.p2 === "b")){
+ $ERROR('#7: myObj.p2 === "b". Actual: myObj.p2 ==='+ myObj.p2 );
+}
+
+if(!(myObj.p3 === undefined)){
+ $ERROR('#8: myObj.p3 === undefined. Actual: myObj.p3 ==='+ myObj.p3 );
+}
+
+if(!(myObj.p4 === undefined)){
+ $ERROR('#9: myObj.p4 === undefined. Actual: myObj.p4 ==='+ myObj.p4 );
+}
+
+if(!(myObj.p5 === undefined)){
+ $ERROR('#10: myObj.p5 === undefined. Actual: myObj.p5 ==='+ myObj.p5 );
+}
+
+if(!(st_parseInt !== parseInt)){
+ $ERROR('#11: myObj.parseInt !== parseInt');
+}
+
+if(!(st_NaN === "obj_NaN")){
+ $ERROR('#12: myObj.NaN !== NaN');
+}
+
+if(!(st_Infinity !== Infinity)){
+ $ERROR('#13: myObj.Infinity !== Infinity');
+}
+
+if(!(st_eval !== eval)){
+ $ERROR('#14: myObj.eval !== eval');
+}
+
+if(!(st_parseFloat !== parseFloat)){
+ $ERROR('#15: myObj.parseFloat !== parseFloat');
+}
+
+if(!(st_isNaN !== isNaN)){
+ $ERROR('#16: myObj.isNaN !== isNaN');
+}
+
+if(!(st_isFinite !== isFinite)){
+ $ERROR('#17: myObj.isFinite !== isFinite');
+}
+
+if(!(value === undefined)){
+ $ERROR('#18: value === undefined. Actual: value ==='+ value );
+}
+
+if(!(myObj.value === "value")){
+ $ERROR('#19: myObj.value === "value". Actual: myObj.value ==='+ myObj.value );
+}
+
diff --git a/js/src/tests/test262/ch12/12.10/S12.10_A1.5_T2.js b/js/src/tests/test262/ch12/12.10/S12.10_A1.5_T2.js
new file mode 100644
index 000000000..4efa5a216
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.10/S12.10_A1.5_T2.js
@@ -0,0 +1,147 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * The with statement adds a computed object to the front of the
+ * scope chain of the current execution context
+ *
+ * @path ch12/12.10/S12.10_A1.5_T2.js
+ * @description Using "with" statement within "for-in" statement, leading to completion by exception
+ * @noStrict
+ */
+
+this.p1 = 1;
+this.p2 = 2;
+this.p3 = 3;
+var result = "result";
+var myObj = {p1: 'a',
+ p2: 'b',
+ p3: 'c',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';},
+ parseInt : function(){return 'obj_parseInt';},
+ NaN : 'obj_NaN',
+ Infinity : 'obj_Infinity',
+ eval : function(){return 'obj_eval';},
+ parseFloat : function(){return 'obj_parseFloat';},
+ isNaN : function(){return 'obj_isNaN';},
+ isFinite : function(){return 'obj_isFinite';}
+}
+var del;
+var st_p1 = "p1";
+var st_p2 = "p2";
+var st_p3 = "p3";
+var st_parseInt = "parseInt";
+var st_NaN = "NaN";
+var st_Infinity = "Infinity";
+var st_eval = "eval";
+var st_parseFloat = "parseFloat";
+var st_isNaN = "isNaN";
+var st_isFinite = "isFinite";
+
+try {
+ for(var prop in myObj){
+ with(myObj){
+ st_p1 = p1;
+ p1 = 'x1';
+ st_p2 = p2;
+ this.p2 = 'x2';
+ st_p3 = p3;
+ del = delete p3;
+ st_parseInt = parseInt;
+ st_NaN = NaN;
+ st_Infinity = Infinity;
+ st_eval = eval;
+ st_parseFloat = parseFloat;
+ st_isNaN = isNaN;
+ st_isFinite = isFinite;
+ var p4 = 'x4';
+ p5 = 'x5';
+ var value = 'value';
+ throw value;
+ }
+ }
+} catch(e){
+ result = e;
+}
+
+if(!(result === "value")){
+ $ERROR('#0: result === "value". Actual: result ==='+ result );
+}
+
+if(!(p1 === 1)){
+ $ERROR('#1: p1 === 1. Actual: p1 ==='+ p1 );
+}
+
+if(!(p2 === "x2")){
+ $ERROR('#2: p2 === "x2". Actual: p2 ==='+ p2 );
+}
+
+if(!(p3 === 3)){
+ $ERROR('#3: p3 === 3. Actual: p3 ==='+ p3 );
+}
+
+if(!(p4 === "x4")){
+ $ERROR('#4: p4 === "x4". Actual: p4 ==='+ p4 );
+}
+
+if(!(p5 === "x5")){
+ $ERROR('#5: p5 === "x5". Actual: p5 ==='+ p5 );
+}
+
+if(!(myObj.p1 === "x1")){
+ $ERROR('#6: myObj.p1 === "x1". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+
+if(!(myObj.p2 === "b")){
+ $ERROR('#7: myObj.p2 === "b". Actual: myObj.p2 ==='+ myObj.p2 );
+}
+
+if(!(myObj.p3 === undefined)){
+ $ERROR('#8: myObj.p3 === undefined. Actual: myObj.p3 ==='+ myObj.p3 );
+}
+
+if(!(myObj.p4 === undefined)){
+ $ERROR('#9: myObj.p4 === undefined. Actual: myObj.p4 ==='+ myObj.p4 );
+}
+
+if(!(myObj.p5 === undefined)){
+ $ERROR('#10: myObj.p5 === undefined. Actual: myObj.p5 ==='+ myObj.p5 );
+}
+
+if(!(st_parseInt !== parseInt)){
+ $ERROR('#11: myObj.parseInt !== parseInt');
+}
+
+if(!(st_NaN === "obj_NaN")){
+ $ERROR('#12: myObj.NaN !== NaN');
+}
+
+if(!(st_Infinity !== Infinity)){
+ $ERROR('#13: myObj.Infinity !== Infinity');
+}
+
+if(!(st_eval !== eval)){
+ $ERROR('#14: myObj.eval !== eval');
+}
+
+if(!(st_parseFloat !== parseFloat)){
+ $ERROR('#15: myObj.parseFloat !== parseFloat');
+}
+
+if(!(st_isNaN !== isNaN)){
+ $ERROR('#16: myObj.isNaN !== isNaN');
+}
+
+if(!(st_isFinite !== isFinite)){
+ $ERROR('#17: myObj.isFinite !== isFinite');
+}
+
+if(!(value === undefined)){
+ $ERROR('#18: value === undefined. Actual: value ==='+ value );
+}
+
+if(!(myObj.value === "value")){
+ $ERROR('#19: myObj.value === "value". Actual: myObj.value ==='+ myObj.value );
+}
+
diff --git a/js/src/tests/test262/ch12/12.10/S12.10_A1.5_T3.js b/js/src/tests/test262/ch12/12.10/S12.10_A1.5_T3.js
new file mode 100644
index 000000000..e4cace7e1
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.10/S12.10_A1.5_T3.js
@@ -0,0 +1,155 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * The with statement adds a computed object to the front of the
+ * scope chain of the current execution context
+ *
+ * @path ch12/12.10/S12.10_A1.5_T3.js
+ * @description Using "with" statement within "for-in" statement, leading to completion by exception
+ * @noStrict
+ */
+
+this.p1 = 1;
+this.p2 = 2;
+this.p3 = 3;
+var result = "result";
+var myObj = {p1: 'a',
+ p2: 'b',
+ p3: 'c',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';},
+ parseInt : function(){return 'obj_parseInt';},
+ NaN : 'obj_NaN',
+ Infinity : 'obj_Infinity',
+ eval : function(){return 'obj_eval';},
+ parseFloat : function(){return 'obj_parseFloat';},
+ isNaN : function(){return 'obj_isNaN';},
+ isFinite : function(){return 'obj_isFinite';}
+}
+var del;
+var st_p1 = "p1";
+var st_p2 = "p2";
+var st_p3 = "p3";
+var st_parseInt = "parseInt";
+var st_NaN = "NaN";
+var st_Infinity = "Infinity";
+var st_eval = "eval";
+var st_parseFloat = "parseFloat";
+var st_isNaN = "isNaN";
+var st_isFinite = "isFinite";
+
+try {
+ for(var prop in myObj){
+ with(myObj){
+ throw value;
+ if(prop === 'p1') {
+ st_p1 = p1;
+ p1 = 'x1';
+ }
+ if(prop === 'p2') {
+ st_p2 = p2;
+ this.p2 = 'x2';
+ }
+ if(prop === 'p3') {
+ st_p3 = p3;
+ del = delete p3;
+ }
+ if(prop === 'parseInt') st_parseInt = parseInt;
+ if(prop === 'NaN') st_NaN = NaN;
+ if(prop === 'Infinity') st_Infinity = Infinity;
+ if(prop === 'eval') st_eval = eval;
+ if(prop === 'parseFloat') st_parseFloat = parseFloat;
+ if(prop === 'isNaN') st_isNaN = isNaN;
+ if(prop === 'isFinite') st_isFinite = isFinite;
+ var p4 = 'x4';
+ p5 = 'x5';
+ var value = 'value';
+ }
+ }
+} catch(e){
+ result = e;
+}
+
+if(!(result === "myObj_value")){
+ $ERROR('#0: result === "myObj_value". Actual: result ==='+ result );
+}
+
+if(!(p1 === 1)){
+ $ERROR('#1: p1 === 1. Actual: p1 ==='+ p1 );
+}
+
+if(!(p2 === 2)){
+ $ERROR('#2: p2 === 2. Actual: p2 ==='+ p2 );
+}
+
+if(!(p3 === 3)){
+ $ERROR('#3: p3 === 3. Actual: p3 ==='+ p3 );
+}
+
+if(!(p4 === undefined)){
+ $ERROR('#4: p4 === undefined. Actual: p4 ==='+ p4 );
+}
+
+try {
+ p5;
+ $ERROR('#5: p5 is not defined');
+} catch(e) {
+}
+
+if(!(myObj.p1 === "a")){
+ $ERROR('#6: myObj.p1 === "a". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+
+if(!(myObj.p2 === "b")){
+ $ERROR('#7: myObj.p2 === "b". Actual: myObj.p2 ==='+ myObj.p2 );
+}
+
+if(!(myObj.p3 === "c")){
+ $ERROR('#8: myObj.p3 === "c". Actual: myObj.p3 ==='+ myObj.p3 );
+}
+
+if(!(myObj.p4 === undefined)){
+ $ERROR('#9: myObj.p4 === undefined. Actual: myObj.p4 ==='+ myObj.p4 );
+}
+
+if(!(myObj.p5 === undefined)){
+ $ERROR('#10: myObj.p5 === undefined. Actual: myObj.p5 ==='+ myObj.p5 );
+}
+
+if(!(st_parseInt === "parseInt")){
+ $ERROR('#11: myObj.parseInt === "parseInt". Actual: myObj.parseInt ==='+ myObj.parseInt );
+}
+
+if(!(st_NaN === "NaN")){
+ $ERROR('#12: st_NaN === "NaN". Actual: st_NaN ==='+ st_NaN );
+}
+
+if(!(st_Infinity === "Infinity")){
+ $ERROR('#13: st_Infinity === "Infinity". Actual: st_Infinity ==='+ st_Infinity );
+}
+
+if(!(st_eval === "eval")){
+ $ERROR('#14: st_eval === "eval". Actual: st_eval ==='+ st_eval );
+}
+
+if(!(st_parseFloat === "parseFloat")){
+ $ERROR('#15: st_parseFloat === "parseFloat". Actual: st_parseFloat ==='+ st_parseFloat );
+}
+
+if(!(st_isNaN === "isNaN")){
+ $ERROR('#16: st_isNaN === "isNaN". Actual: st_isNaN ==='+ st_isNaN );
+}
+
+if(!(st_isFinite === "isFinite")){
+ $ERROR('#17: st_isFinite === "isFinite". Actual: st_isFinite ==='+ st_isFinite );
+}
+
+if(!(value === undefined)){
+ $ERROR('#18: value === undefined. Actual: value ==='+ value );
+}
+
+if(!(myObj.value === "myObj_value")){
+ $ERROR('#19: myObj.value === "myObj_value". Actual: myObj.value ==='+ myObj.value );
+}
+
diff --git a/js/src/tests/test262/ch12/12.10/S12.10_A1.5_T4.js b/js/src/tests/test262/ch12/12.10/S12.10_A1.5_T4.js
new file mode 100644
index 000000000..6655901d6
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.10/S12.10_A1.5_T4.js
@@ -0,0 +1,139 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * The with statement adds a computed object to the front of the
+ * scope chain of the current execution context
+ *
+ * @path ch12/12.10/S12.10_A1.5_T4.js
+ * @description Using "with" statement within "for-in" statement, leading to completion by break
+ * @noStrict
+ */
+
+this.p1 = 1;
+this.p2 = 2;
+this.p3 = 3;
+var result = "result";
+var myObj = {p1: 'a',
+ p2: 'b',
+ p3: 'c',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';},
+ parseInt : function(){return 'obj_parseInt';},
+ NaN : 'obj_NaN',
+ Infinity : 'obj_Infinity',
+ eval : function(){return 'obj_eval';},
+ parseFloat : function(){return 'obj_parseFloat';},
+ isNaN : function(){return 'obj_isNaN';},
+ isFinite : function(){return 'obj_isFinite';}
+}
+var del;
+var st_p1 = "p1";
+var st_p2 = "p2";
+var st_p3 = "p3";
+var st_parseInt = "parseInt";
+var st_NaN = "NaN";
+var st_Infinity = "Infinity";
+var st_eval = "eval";
+var st_parseFloat = "parseFloat";
+var st_isNaN = "isNaN";
+var st_isFinite = "isFinite";
+
+for(var prop in myObj){
+ with(myObj){
+ st_p1 = p1;
+ p1 = 'x1';
+ st_p2 = p2;
+ this.p2 = 'x2';
+ st_p3 = p3;
+ del = delete p3;
+ st_parseInt = parseInt;
+ st_NaN = NaN;
+ st_Infinity = Infinity;
+ st_eval = eval;
+ st_parseFloat = parseFloat;
+ st_isNaN = isNaN;
+ st_isFinite = isFinite;
+ var p4 = 'x4';
+ p5 = 'x5';
+ var value = 'value';
+ break;
+ }
+}
+
+if(!(p1 === 1)){
+ $ERROR('#1: p1 === 1. Actual: p1 ==='+ p1 );
+}
+
+if(!(p2 === "x2")){
+ $ERROR('#2: p2 === "x2". Actual: p2 ==='+ p2 );
+}
+
+if(!(p3 === 3)){
+ $ERROR('#3: p3 === 3. Actual: p3 ==='+ p3 );
+}
+
+if(!(p4 === "x4")){
+ $ERROR('#4: p4 === "x4". Actual: p4 ==='+ p4 );
+}
+
+if(!(p5 === "x5")){
+ $ERROR('#5: p5 === "x5". Actual: p5 ==='+ p5 );
+}
+
+if(!(myObj.p1 === "x1")){
+ $ERROR('#6: myObj.p1 === "x1". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+
+if(!(myObj.p2 === "b")){
+ $ERROR('#7: myObj.p2 === "b". Actual: myObj.p2 ==='+ myObj.p2 );
+}
+
+if(!(myObj.p3 === undefined)){
+ $ERROR('#8: myObj.p3 === undefined. Actual: myObj.p3 ==='+ myObj.p3 );
+}
+
+if(!(myObj.p4 === undefined)){
+ $ERROR('#9: myObj.p4 === undefined. Actual: myObj.p4 ==='+ myObj.p4 );
+}
+
+if(!(myObj.p5 === undefined)){
+ $ERROR('#10: myObj.p5 === undefined. Actual: myObj.p5 ==='+ myObj.p5 );
+}
+
+if(!(st_parseInt !== parseInt)){
+ $ERROR('#11: myObj.parseInt !== parseInt');
+}
+
+if(!(st_NaN === "obj_NaN")){
+ $ERROR('#12: myObj.NaN !== NaN');
+}
+
+if(!(st_Infinity !== Infinity)){
+ $ERROR('#13: myObj.Infinity !== Infinity');
+}
+
+if(!(st_eval !== eval)){
+ $ERROR('#14: myObj.eval !== eval');
+}
+
+if(!(st_parseFloat !== parseFloat)){
+ $ERROR('#15: myObj.parseFloat !== parseFloat');
+}
+
+if(!(st_isNaN !== isNaN)){
+ $ERROR('#16: myObj.isNaN !== isNaN');
+}
+
+if(!(st_isFinite !== isFinite)){
+ $ERROR('#17: myObj.isFinite !== isFinite');
+}
+
+if(!(value === undefined)){
+ $ERROR('#18: value === undefined. Actual: value ==='+ value );
+}
+
+if(!(myObj.value === "value")){
+ $ERROR('#19: myObj.value === "value". Actual: myObj.value ==='+ myObj.value );
+}
+
diff --git a/js/src/tests/test262/ch12/12.10/S12.10_A1.5_T5.js b/js/src/tests/test262/ch12/12.10/S12.10_A1.5_T5.js
new file mode 100644
index 000000000..1273f5166
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.10/S12.10_A1.5_T5.js
@@ -0,0 +1,147 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * The with statement adds a computed object to the front of the
+ * scope chain of the current execution context
+ *
+ * @path ch12/12.10/S12.10_A1.5_T5.js
+ * @description Using "with" statement within "for-in" statement, leading to completion by break
+ * @noStrict
+ */
+
+this.p1 = 1;
+this.p2 = 2;
+this.p3 = 3;
+var result = "result";
+var myObj = {p1: 'a',
+ p2: 'b',
+ p3: 'c',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';},
+ parseInt : function(){return 'obj_parseInt';},
+ NaN : 'obj_NaN',
+ Infinity : 'obj_Infinity',
+ eval : function(){return 'obj_eval';},
+ parseFloat : function(){return 'obj_parseFloat';},
+ isNaN : function(){return 'obj_isNaN';},
+ isFinite : function(){return 'obj_isFinite';}
+}
+var del;
+var st_p1 = "p1";
+var st_p2 = "p2";
+var st_p3 = "p3";
+var st_parseInt = "parseInt";
+var st_NaN = "NaN";
+var st_Infinity = "Infinity";
+var st_eval = "eval";
+var st_parseFloat = "parseFloat";
+var st_isNaN = "isNaN";
+var st_isFinite = "isFinite";
+
+for(var prop in myObj){
+ with(myObj){
+ break;
+ if(prop === 'p1') {
+ st_p1 = p1;
+ p1 = 'x1';
+ }
+ if(prop === 'p2') {
+ st_p2 = p2;
+ this.p2 = 'x2';
+ }
+ if(prop === 'p3') {
+ st_p3 = p3;
+ del = delete p3;
+ }
+ if(prop === 'parseInt') st_parseInt = parseInt;
+ if(prop === 'NaN') st_NaN = NaN;
+ if(prop === 'Infinity') st_Infinity = Infinity;
+ if(prop === 'eval') st_eval = eval;
+ if(prop === 'parseFloat') st_parseFloat = parseFloat;
+ if(prop === 'isNaN') st_isNaN = isNaN;
+ if(prop === 'isFinite') st_isFinite = isFinite;
+ var p4 = 'x4';
+ p5 = 'x5';
+ var value = 'value';
+ }
+}
+
+if(!(p1 === 1)){
+ $ERROR('#1: p1 === 1. Actual: p1 ==='+ p1 );
+}
+
+if(!(p2 === 2)){
+ $ERROR('#2: p2 === 2. Actual: p2 ==='+ p2 );
+}
+
+if(!(p3 === 3)){
+ $ERROR('#3: p3 === 3. Actual: p3 ==='+ p3 );
+}
+
+if(!(p4 === undefined)){
+ $ERROR('#4: p4 === undefined. Actual: p4 ==='+ p4 );
+}
+
+try {
+ p5;
+ $ERROR('#5: p5 is not defined');
+} catch(e) {
+}
+
+if(!(myObj.p1 === "a")){
+ $ERROR('#6: myObj.p1 === "a". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+
+if(!(myObj.p2 === "b")){
+ $ERROR('#7: myObj.p2 === "b". Actual: myObj.p2 ==='+ myObj.p2 );
+}
+
+if(!(myObj.p3 === "c")){
+ $ERROR('#8: myObj.p3 === "c". Actual: myObj.p3 ==='+ myObj.p3 );
+}
+
+if(!(myObj.p4 === undefined)){
+ $ERROR('#9: myObj.p4 === undefined. Actual: myObj.p4 ==='+ myObj.p4 );
+}
+
+if(!(myObj.p5 === undefined)){
+ $ERROR('#10: myObj.p5 === undefined. Actual: myObj.p5 ==='+ myObj.p5 );
+}
+
+if(!(st_parseInt === "parseInt")){
+ $ERROR('#11: myObj.parseInt === "parseInt". Actual: myObj.parseInt ==='+ myObj.parseInt );
+}
+
+if(!(st_NaN === "NaN")){
+ $ERROR('#12: st_NaN === "NaN". Actual: st_NaN ==='+ st_NaN );
+}
+
+if(!(st_Infinity === "Infinity")){
+ $ERROR('#13: st_Infinity === "Infinity". Actual: st_Infinity ==='+ st_Infinity );
+}
+
+if(!(st_eval === "eval")){
+ $ERROR('#14: st_eval === "eval". Actual: st_eval ==='+ st_eval );
+}
+
+if(!(st_parseFloat === "parseFloat")){
+ $ERROR('#15: st_parseFloat === "parseFloat". Actual: st_parseFloat ==='+ st_parseFloat );
+}
+
+if(!(st_isNaN === "isNaN")){
+ $ERROR('#16: st_isNaN === "isNaN". Actual: st_isNaN ==='+ st_isNaN );
+}
+
+if(!(st_isFinite === "isFinite")){
+ $ERROR('#17: st_isFinite === "isFinite". Actual: st_isFinite ==='+ st_isFinite );
+}
+
+if(!(value === undefined)){
+ $ERROR('#18: value === undefined. Actual: value ==='+ value );
+}
+
+if(!(myObj.value === "myObj_value")){
+ $ERROR('#19: myObj.value === "myObj_value". Actual: myObj.value ==='+ myObj.value );
+}
+
diff --git a/js/src/tests/test262/ch12/12.10/S12.10_A1.6_T1.js b/js/src/tests/test262/ch12/12.10/S12.10_A1.6_T1.js
new file mode 100644
index 000000000..608ceef9f
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.10/S12.10_A1.6_T1.js
@@ -0,0 +1,138 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * The with statement adds a computed object to the front of the
+ * scope chain of the current execution context
+ *
+ * @path ch12/12.10/S12.10_A1.6_T1.js
+ * @description Using "with" statement within another "with" statement, leading to normal completion
+ * @noStrict
+ */
+
+this.p1 = 1;
+this.p2 = 2;
+this.p3 = 3;
+var result = "result";
+var myObj = {p1: 'a',
+ p2: 'b',
+ p3: 'c',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';},
+ parseInt : function(){return 'obj_parseInt';},
+ NaN : 'obj_NaN',
+ Infinity : 'obj_Infinity',
+ eval : function(){return 'obj_eval';},
+ parseFloat : function(){return 'obj_parseFloat';},
+ isNaN : function(){return 'obj_isNaN';},
+ isFinite : function(){return 'obj_isFinite';}
+}
+var del;
+var st_p1 = "p1";
+var st_p2 = "p2";
+var st_p3 = "p3";
+var st_parseInt = "parseInt";
+var st_NaN = "NaN";
+var st_Infinity = "Infinity";
+var st_eval = "eval";
+var st_parseFloat = "parseFloat";
+var st_isNaN = "isNaN";
+var st_isFinite = "isFinite";
+
+with(myObj){
+ with(myObj){
+ st_p1 = p1;
+ st_p2 = p2;
+ st_p3 = p3;
+ st_parseInt = parseInt;
+ st_NaN = NaN;
+ st_Infinity = Infinity;
+ st_eval = eval;
+ st_parseFloat = parseFloat;
+ st_isNaN = isNaN;
+ st_isFinite = isFinite;
+ p1 = 'x1';
+ this.p2 = 'x2';
+ del = delete p3;
+ var p4 = 'x4';
+ p5 = 'x5';
+ var value = 'value';
+ }
+}
+
+if(!(p1 === 1)){
+ $ERROR('#1: p1 === 1. Actual: p1 ==='+ p1 );
+}
+
+if(!(p2 === "x2")){
+ $ERROR('#2: p2 === "x2". Actual: p2 ==='+ p2 );
+}
+
+if(!(p3 === 3)){
+ $ERROR('#3: p3 === 3. Actual: p3 ==='+ p3 );
+}
+
+if(!(p4 === "x4")){
+ $ERROR('#4: p4 === "x4". Actual: p4 ==='+ p4 );
+}
+
+if(!(p5 === "x5")){
+ $ERROR('#5: p5 === "x5". Actual: p5 ==='+ p5 );
+}
+
+if(!(myObj.p1 === "x1")){
+ $ERROR('#6: myObj.p1 === "x1". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+
+if(!(myObj.p2 === "b")){
+ $ERROR('#7: myObj.p2 === "b". Actual: myObj.p2 ==='+ myObj.p2 );
+}
+
+if(!(myObj.p3 === undefined)){
+ $ERROR('#8: myObj.p3 === undefined. Actual: myObj.p3 ==='+ myObj.p3 );
+}
+
+if(!(myObj.p4 === undefined)){
+ $ERROR('#9: myObj.p4 === undefined. Actual: myObj.p4 ==='+ myObj.p4 );
+}
+
+if(!(myObj.p5 === undefined)){
+ $ERROR('#10: myObj.p5 === undefined. Actual: myObj.p5 ==='+ myObj.p5 );
+}
+
+if(!(st_parseInt !== parseInt)){
+ $ERROR('#11: myObj.parseInt !== parseInt');
+}
+
+if(!(st_NaN === "obj_NaN")){
+ $ERROR('#12: myObj.NaN !== NaN');
+}
+
+if(!(st_Infinity !== Infinity)){
+ $ERROR('#13: myObj.Infinity !== Infinity');
+}
+
+if(!(st_eval !== eval)){
+ $ERROR('#14: myObj.eval !== eval');
+}
+
+if(!(st_parseFloat !== parseFloat)){
+ $ERROR('#15: myObj.parseFloat !== parseFloat');
+}
+
+if(!(st_isNaN !== isNaN)){
+ $ERROR('#16: myObj.isNaN !== isNaN');
+}
+
+if(!(st_isFinite !== isFinite)){
+ $ERROR('#17: myObj.isFinite !== isFinite');
+}
+
+if(!(value === undefined)){
+ $ERROR('#18: value === undefined. Actual: value ==='+ value );
+}
+
+if(!(myObj.value === "value")){
+ $ERROR('#19: myObj.value === "value". Actual: myObj.value ==='+ myObj.value );
+}
+
diff --git a/js/src/tests/test262/ch12/12.10/S12.10_A1.6_T2.js b/js/src/tests/test262/ch12/12.10/S12.10_A1.6_T2.js
new file mode 100644
index 000000000..8cfae1a8b
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.10/S12.10_A1.6_T2.js
@@ -0,0 +1,147 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * The with statement adds a computed object to the front of the
+ * scope chain of the current execution context
+ *
+ * @path ch12/12.10/S12.10_A1.6_T2.js
+ * @description Using "with" statement within another "with" statement, leading to completion by exception
+ * @noStrict
+ */
+
+this.p1 = 1;
+this.p2 = 2;
+this.p3 = 3;
+var result = "result";
+var myObj = {p1: 'a',
+ p2: 'b',
+ p3: 'c',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';},
+ parseInt : function(){return 'obj_parseInt';},
+ NaN : 'obj_NaN',
+ Infinity : 'obj_Infinity',
+ eval : function(){return 'obj_eval';},
+ parseFloat : function(){return 'obj_parseFloat';},
+ isNaN : function(){return 'obj_isNaN';},
+ isFinite : function(){return 'obj_isFinite';}
+}
+var del;
+var st_p1 = "p1";
+var st_p2 = "p2";
+var st_p3 = "p3";
+var st_parseInt = "parseInt";
+var st_NaN = "NaN";
+var st_Infinity = "Infinity";
+var st_eval = "eval";
+var st_parseFloat = "parseFloat";
+var st_isNaN = "isNaN";
+var st_isFinite = "isFinite";
+
+try {
+ with(myObj){
+ with(myObj){
+ st_p1 = p1;
+ st_p2 = p2;
+ st_p3 = p3;
+ st_parseInt = parseInt;
+ st_NaN = NaN;
+ st_Infinity = Infinity;
+ st_eval = eval;
+ st_parseFloat = parseFloat;
+ st_isNaN = isNaN;
+ st_isFinite = isFinite;
+ p1 = 'x1';
+ this.p2 = 'x2';
+ del = delete p3;
+ var p4 = 'x4';
+ p5 = 'x5';
+ var value = 'value';
+ throw value;
+ }
+ }
+} catch(e){
+ result = e;
+}
+
+if(!(result === "value")){
+ $ERROR('#0: result === "value". Actual: result ==='+ result );
+}
+
+if(!(p1 === 1)){
+ $ERROR('#1: p1 === 1. Actual: p1 ==='+ p1 );
+}
+
+if(!(p2 === "x2")){
+ $ERROR('#2: p2 === "x2". Actual: p2 ==='+ p2 );
+}
+
+if(!(p3 === 3)){
+ $ERROR('#3: p3 === 3. Actual: p3 ==='+ p3 );
+}
+
+if(!(p4 === "x4")){
+ $ERROR('#4: p4 === "x4". Actual: p4 ==='+ p4 );
+}
+
+if(!(p5 === "x5")){
+ $ERROR('#5: p5 === "x5". Actual: p5 ==='+ p5 );
+}
+
+if(!(myObj.p1 === "x1")){
+ $ERROR('#6: myObj.p1 === "x1". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+
+if(!(myObj.p2 === "b")){
+ $ERROR('#7: myObj.p2 === "b". Actual: myObj.p2 ==='+ myObj.p2 );
+}
+
+if(!(myObj.p3 === undefined)){
+ $ERROR('#8: myObj.p3 === undefined. Actual: myObj.p3 ==='+ myObj.p3 );
+}
+
+if(!(myObj.p4 === undefined)){
+ $ERROR('#9: myObj.p4 === undefined. Actual: myObj.p4 ==='+ myObj.p4 );
+}
+
+if(!(myObj.p5 === undefined)){
+ $ERROR('#10: myObj.p5 === undefined. Actual: myObj.p5 ==='+ myObj.p5 );
+}
+
+if(!(st_parseInt !== parseInt)){
+ $ERROR('#11: myObj.parseInt !== parseInt');
+}
+
+if(!(st_NaN === "obj_NaN")){
+ $ERROR('#12: myObj.NaN !== NaN');
+}
+
+if(!(st_Infinity !== Infinity)){
+ $ERROR('#13: myObj.Infinity !== Infinity');
+}
+
+if(!(st_eval !== eval)){
+ $ERROR('#14: myObj.eval !== eval');
+}
+
+if(!(st_parseFloat !== parseFloat)){
+ $ERROR('#15: myObj.parseFloat !== parseFloat');
+}
+
+if(!(st_isNaN !== isNaN)){
+ $ERROR('#16: myObj.isNaN !== isNaN');
+}
+
+if(!(st_isFinite !== isFinite)){
+ $ERROR('#17: myObj.isFinite !== isFinite');
+}
+
+if(!(value === undefined)){
+ $ERROR('#18: value === undefined. Actual: value ==='+ value );
+}
+
+if(!(myObj.value === "value")){
+ $ERROR('#19: myObj.value === "value". Actual: myObj.value ==='+ myObj.value );
+}
+
diff --git a/js/src/tests/test262/ch12/12.10/S12.10_A1.6_T3.js b/js/src/tests/test262/ch12/12.10/S12.10_A1.6_T3.js
new file mode 100644
index 000000000..4774eb44d
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.10/S12.10_A1.6_T3.js
@@ -0,0 +1,149 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * The with statement adds a computed object to the front of the
+ * scope chain of the current execution context
+ *
+ * @path ch12/12.10/S12.10_A1.6_T3.js
+ * @description Using "with" statement within another "with" statement, leading to completion by exception
+ * @noStrict
+ */
+
+this.p1 = 1;
+this.p2 = 2;
+this.p3 = 3;
+var result = "result";
+var myObj = {p1: 'a',
+ p2: 'b',
+ p3: 'c',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';},
+ parseInt : function(){return 'obj_parseInt';},
+ NaN : 'obj_NaN',
+ Infinity : 'obj_Infinity',
+ eval : function(){return 'obj_eval';},
+ parseFloat : function(){return 'obj_parseFloat';},
+ isNaN : function(){return 'obj_isNaN';},
+ isFinite : function(){return 'obj_isFinite';}
+}
+var del;
+var st_p1 = "p1";
+var st_p2 = "p2";
+var st_p3 = "p3";
+var st_parseInt = "parseInt";
+var st_NaN = "NaN";
+var st_Infinity = "Infinity";
+var st_eval = "eval";
+var st_parseFloat = "parseFloat";
+var st_isNaN = "isNaN";
+var st_isFinite = "isFinite";
+
+try {
+ with(myObj){
+ with(myObj){
+ throw value;
+ st_p1 = p1;
+ st_p2 = p2;
+ st_p3 = p3;
+ st_parseInt = parseInt;
+ st_NaN = NaN;
+ st_Infinity = Infinity;
+ st_eval = eval;
+ st_parseFloat = parseFloat;
+ st_isNaN = isNaN;
+ st_isFinite = isFinite;
+ p1 = 'x1';
+ this.p2 = 'x2';
+ del = delete p3;
+ var p4 = 'x4';
+ p5 = 'x5';
+ var value = 'value';
+ }
+ }
+} catch(e){
+ result = e;
+}
+
+if(!(result === "myObj_value")){
+ $ERROR('#0: result === "myObj_value". Actual: result ==='+ result );
+}
+
+if(!(p1 === 1)){
+ $ERROR('#1: p1 === 1. Actual: p1 ==='+ p1 );
+}
+
+if(!(p2 === 2)){
+ $ERROR('#2: p2 === 2. Actual: p2 ==='+ p2 );
+}
+
+if(!(p3 === 3)){
+ $ERROR('#3: p3 === 3. Actual: p3 ==='+ p3 );
+}
+
+if(!(p4 === undefined)){
+ $ERROR('#4: p4 === undefined. Actual: p4 ==='+ p4 );
+}
+
+try {
+ p5;
+ $ERROR('#5: p5 is not defined');
+} catch(e) {
+}
+
+if(!(myObj.p1 === "a")){
+ $ERROR('#6: myObj.p1 === "a". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+
+if(!(myObj.p2 === "b")){
+ $ERROR('#7: myObj.p2 === "b". Actual: myObj.p2 ==='+ myObj.p2 );
+}
+
+if(!(myObj.p3 === "c")){
+ $ERROR('#8: myObj.p3 === "c". Actual: myObj.p3 ==='+ myObj.p3 );
+}
+
+if(!(myObj.p4 === undefined)){
+ $ERROR('#9: myObj.p4 === undefined. Actual: myObj.p4 ==='+ myObj.p4 );
+}
+
+if(!(myObj.p5 === undefined)){
+ $ERROR('#10: myObj.p5 === undefined. Actual: myObj.p5 ==='+ myObj.p5 );
+}
+
+if(!(st_parseInt === "parseInt")){
+ $ERROR('#11: myObj.parseInt === "parseInt". Actual: myObj.parseInt ==='+ myObj.parseInt );
+}
+
+if(!(st_NaN === "NaN")){
+ $ERROR('#12: st_NaN === "NaN". Actual: st_NaN ==='+ st_NaN );
+}
+
+if(!(st_Infinity === "Infinity")){
+ $ERROR('#13: st_Infinity === "Infinity". Actual: st_Infinity ==='+ st_Infinity );
+}
+
+if(!(st_eval === "eval")){
+ $ERROR('#14: st_eval === "eval". Actual: st_eval ==='+ st_eval );
+}
+
+if(!(st_parseFloat === "parseFloat")){
+ $ERROR('#15: st_parseFloat === "parseFloat". Actual: st_parseFloat ==='+ st_parseFloat );
+}
+
+if(!(st_isNaN === "isNaN")){
+ $ERROR('#16: st_isNaN === "isNaN". Actual: st_isNaN ==='+ st_isNaN );
+}
+
+if(!(st_isFinite === "isFinite")){
+ $ERROR('#17: st_isFinite === "isFinite". Actual: st_isFinite ==='+ st_isFinite );
+}
+
+if(!(value === undefined)){
+ $ERROR('#18: value === undefined. Actual: value ==='+ value );
+}
+
+if(!(myObj.value === "myObj_value")){
+ $ERROR('#19: myObj.value === "myObj_value". Actual: myObj.value ==='+ myObj.value );
+}
+
diff --git a/js/src/tests/test262/ch12/12.10/S12.10_A1.7_T1.js b/js/src/tests/test262/ch12/12.10/S12.10_A1.7_T1.js
new file mode 100644
index 000000000..134af702c
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.10/S12.10_A1.7_T1.js
@@ -0,0 +1,144 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * The with statement adds a computed object to the front of the
+ * scope chain of the current execution context
+ *
+ * @path ch12/12.10/S12.10_A1.7_T1.js
+ * @description Calling a function within "with" statement declared within the statement, leading to normal completion
+ * @noStrict
+ */
+
+this.p1 = 1;
+this.p2 = 2;
+this.p3 = 3;
+var result = "result";
+var myObj = {p1: 'a',
+ p2: 'b',
+ p3: 'c',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';},
+ parseInt : function(){return 'obj_parseInt';},
+ NaN : 'obj_NaN',
+ Infinity : 'obj_Infinity',
+ eval : function(){return 'obj_eval';},
+ parseFloat : function(){return 'obj_parseFloat';},
+ isNaN : function(){return 'obj_isNaN';},
+ isFinite : function(){return 'obj_isFinite';}
+}
+var del;
+var st_p1 = "p1";
+var st_p2 = "p2";
+var st_p3 = "p3";
+var st_parseInt = "parseInt";
+var st_NaN = "NaN";
+var st_Infinity = "Infinity";
+var st_eval = "eval";
+var st_parseFloat = "parseFloat";
+var st_isNaN = "isNaN";
+var st_isFinite = "isFinite";
+
+with(myObj){
+ var f = function(){
+ st_p1 = p1;
+ st_p2 = p2;
+ st_p3 = p3;
+ st_parseInt = parseInt;
+ st_NaN = NaN;
+ st_Infinity = Infinity;
+ st_eval = eval;
+ st_parseFloat = parseFloat;
+ st_isNaN = isNaN;
+ st_isFinite = isFinite;
+ p1 = 'x1';
+ this.p2 = 'x2';
+ del = delete p3;
+ var p4 = 'x4';
+ p5 = 'x5';
+ var value = 'value';
+ }
+ f();
+}
+
+if(!(p1 === 1)){
+ $ERROR('#1: p1 === 1. Actual: p1 ==='+ p1 );
+}
+
+if(!(p2 === "x2")){
+ $ERROR('#2: p2 === "x2". Actual: p2 ==='+ p2 );
+}
+
+if(!(p3 === 3)){
+ $ERROR('#3: p3 === 3. Actual: p3 ==='+ p3 );
+}
+
+try {
+ p4;
+ $ERROR('#4: p4 is not defined');
+} catch(e) {
+}
+
+if(!(p5 === "x5")){
+ $ERROR('#5: p5 === "x5". Actual: p5 ==='+ p5 );
+}
+
+if(!(myObj.p1 === "x1")){
+ $ERROR('#6: myObj.p1 === "x1". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+
+if(!(myObj.p2 === "b")){
+ $ERROR('#7: myObj.p2 === "b". Actual: myObj.p2 ==='+ myObj.p2 );
+}
+
+if(!(myObj.p3 === undefined)){
+ $ERROR('#8: myObj.p3 === undefined. Actual: myObj.p3 ==='+ myObj.p3 );
+}
+
+if(!(myObj.p4 === undefined)){
+ $ERROR('#9: myObj.p4 === undefined. Actual: myObj.p4 ==='+ myObj.p4 );
+}
+
+if(!(myObj.p5 === undefined)){
+ $ERROR('#10: myObj.p5 === undefined. Actual: myObj.p5 ==='+ myObj.p5 );
+}
+
+if(!(st_parseInt !== parseInt)){
+ $ERROR('#11: myObj.parseInt !== parseInt');
+}
+
+if(!(st_NaN === "obj_NaN")){
+ $ERROR('#12: myObj.NaN !== NaN');
+}
+
+if(!(st_Infinity !== Infinity)){
+ $ERROR('#13: myObj.Infinity !== Infinity');
+}
+
+if(!(st_eval !== eval)){
+ $ERROR('#14: myObj.eval !== eval');
+}
+
+if(!(st_parseFloat !== parseFloat)){
+ $ERROR('#15: myObj.parseFloat !== parseFloat');
+}
+
+if(!(st_isNaN !== isNaN)){
+ $ERROR('#16: myObj.isNaN !== isNaN');
+}
+
+if(!(st_isFinite !== isFinite)){
+ $ERROR('#17: myObj.isFinite !== isFinite');
+}
+
+try{
+ value;
+ $ERROR('#18: value is not defined');
+}
+catch(e){
+}
+
+if(!(myObj.value === "myObj_value")){
+ $ERROR('#19: myObj.value === "myObj_value". Actual: myObj.value ==='+ myObj.value );
+}
+
diff --git a/js/src/tests/test262/ch12/12.10/S12.10_A1.7_T2.js b/js/src/tests/test262/ch12/12.10/S12.10_A1.7_T2.js
new file mode 100644
index 000000000..3efde0328
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.10/S12.10_A1.7_T2.js
@@ -0,0 +1,149 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * The with statement adds a computed object to the front of the
+ * scope chain of the current execution context
+ *
+ * @path ch12/12.10/S12.10_A1.7_T2.js
+ * @description Calling a function within "with" statement declared within the statement, leading to normal completion by "return"
+ * @noStrict
+ */
+
+this.p1 = 1;
+this.p2 = 2;
+this.p3 = 3;
+var result = "result";
+var myObj = {p1: 'a',
+ p2: 'b',
+ p3: 'c',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';},
+ parseInt : function(){return 'obj_parseInt';},
+ NaN : 'obj_NaN',
+ Infinity : 'obj_Infinity',
+ eval : function(){return 'obj_eval';},
+ parseFloat : function(){return 'obj_parseFloat';},
+ isNaN : function(){return 'obj_isNaN';},
+ isFinite : function(){return 'obj_isFinite';}
+}
+var del;
+var st_p1 = "p1";
+var st_p2 = "p2";
+var st_p3 = "p3";
+var st_parseInt = "parseInt";
+var st_NaN = "NaN";
+var st_Infinity = "Infinity";
+var st_eval = "eval";
+var st_parseFloat = "parseFloat";
+var st_isNaN = "isNaN";
+var st_isFinite = "isFinite";
+
+with(myObj){
+ var f = function(){
+ st_p1 = p1;
+ st_p2 = p2;
+ st_p3 = p3;
+ st_parseInt = parseInt;
+ st_NaN = NaN;
+ st_Infinity = Infinity;
+ st_eval = eval;
+ st_parseFloat = parseFloat;
+ st_isNaN = isNaN;
+ st_isFinite = isFinite;
+ p1 = 'x1';
+ this.p2 = 'x2';
+ del = delete p3;
+ var p4 = 'x4';
+ p5 = 'x5';
+ var value = 'value';
+ return value;
+ }
+ result = f();
+}
+
+if(!(result === "value")){
+ $ERROR('#0: result === "value". Actual: result ==='+ result );
+}
+
+if(!(p1 === 1)){
+ $ERROR('#1: p1 === 1. Actual: p1 ==='+ p1 );
+}
+
+if(!(p2 === "x2")){
+ $ERROR('#2: p2 === "x2". Actual: p2 ==='+ p2 );
+}
+
+if(!(p3 === 3)){
+ $ERROR('#3: p3 === 3. Actual: p3 ==='+ p3 );
+}
+
+try {
+ p4;
+ $ERROR('#4: p4 is not defined');
+} catch(e) {
+}
+
+if(!(p5 === "x5")){
+ $ERROR('#5: p5 === "x5". Actual: p5 ==='+ p5 );
+}
+
+if(!(myObj.p1 === "x1")){
+ $ERROR('#6: myObj.p1 === "x1". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+
+if(!(myObj.p2 === "b")){
+ $ERROR('#7: myObj.p2 === "b". Actual: myObj.p2 ==='+ myObj.p2 );
+}
+
+if(!(myObj.p3 === undefined)){
+ $ERROR('#8: myObj.p3 === undefined. Actual: myObj.p3 ==='+ myObj.p3 );
+}
+
+if(!(myObj.p4 === undefined)){
+ $ERROR('#9: myObj.p4 === undefined. Actual: myObj.p4 ==='+ myObj.p4 );
+}
+
+if(!(myObj.p5 === undefined)){
+ $ERROR('#10: myObj.p5 === undefined. Actual: myObj.p5 ==='+ myObj.p5 );
+}
+
+if(!(st_parseInt !== parseInt)){
+ $ERROR('#11: myObj.parseInt !== parseInt');
+}
+
+if(!(st_NaN === "obj_NaN")){
+ $ERROR('#12: myObj.NaN !== NaN');
+}
+
+if(!(st_Infinity !== Infinity)){
+ $ERROR('#13: myObj.Infinity !== Infinity');
+}
+
+if(!(st_eval !== eval)){
+ $ERROR('#14: myObj.eval !== eval');
+}
+
+if(!(st_parseFloat !== parseFloat)){
+ $ERROR('#15: myObj.parseFloat !== parseFloat');
+}
+
+if(!(st_isNaN !== isNaN)){
+ $ERROR('#16: myObj.isNaN !== isNaN');
+}
+
+if(!(st_isFinite !== isFinite)){
+ $ERROR('#17: myObj.isFinite !== isFinite');
+}
+
+try{
+ value;
+ $ERROR('#18: value is not defined');
+}
+catch(e){
+}
+
+if(!(myObj.value === "myObj_value")){
+ $ERROR('#19: myObj.value === "myObj_value". Actual: myObj.value ==='+ myObj.value );
+}
+
diff --git a/js/src/tests/test262/ch12/12.10/S12.10_A1.7_T3.js b/js/src/tests/test262/ch12/12.10/S12.10_A1.7_T3.js
new file mode 100644
index 000000000..d43395763
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.10/S12.10_A1.7_T3.js
@@ -0,0 +1,151 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * The with statement adds a computed object to the front of the
+ * scope chain of the current execution context
+ *
+ * @path ch12/12.10/S12.10_A1.7_T3.js
+ * @description Calling a function within "with" statement declared within the statement, leading to normal completion by "return"
+ * @noStrict
+ */
+
+this.p1 = 1;
+this.p2 = 2;
+this.p3 = 3;
+var result = "result";
+var myObj = {p1: 'a',
+ p2: 'b',
+ p3: 'c',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';},
+ parseInt : function(){return 'obj_parseInt';},
+ NaN : 'obj_NaN',
+ Infinity : 'obj_Infinity',
+ eval : function(){return 'obj_eval';},
+ parseFloat : function(){return 'obj_parseFloat';},
+ isNaN : function(){return 'obj_isNaN';},
+ isFinite : function(){return 'obj_isFinite';}
+}
+var del;
+var st_p1 = "p1";
+var st_p2 = "p2";
+var st_p3 = "p3";
+var st_parseInt = "parseInt";
+var st_NaN = "NaN";
+var st_Infinity = "Infinity";
+var st_eval = "eval";
+var st_parseFloat = "parseFloat";
+var st_isNaN = "isNaN";
+var st_isFinite = "isFinite";
+
+with(myObj){
+ var f = function(){
+ return value;
+ st_p1 = p1;
+ st_p2 = p2;
+ st_p3 = p3;
+ st_parseInt = parseInt;
+ st_NaN = NaN;
+ st_Infinity = Infinity;
+ st_eval = eval;
+ st_parseFloat = parseFloat;
+ st_isNaN = isNaN;
+ st_isFinite = isFinite;
+ p1 = 'x1';
+ this.p2 = 'x2';
+ del = delete p3;
+ var p4 = 'x4';
+ p5 = 'x5';
+ var value = 'value';
+ }
+ result = f();
+}
+
+if(!(result === undefined)){
+ $ERROR('#0: result === undefined. Actual: result ==='+ result );
+}
+
+if(!(p1 === 1)){
+ $ERROR('#1: p1 === 1. Actual: p1 ==='+ p1 );
+}
+
+if(!(p2 === 2)){
+ $ERROR('#2: p2 === 2. Actual: p2 ==='+ p2 );
+}
+
+if(!(p3 === 3)){
+ $ERROR('#3: p3 === 3. Actual: p3 ==='+ p3 );
+}
+
+try {
+ p4;
+ $ERROR('#4: p4 is not defined');
+} catch(e) {
+}
+
+try {
+ p5;
+ $ERROR('#5: p5 is not defined');
+} catch(e) {
+}
+
+if(!(myObj.p1 === "a")){
+ $ERROR('#6: myObj.p1 === "a". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+
+if(!(myObj.p2 === "b")){
+ $ERROR('#7: myObj.p2 === "b". Actual: myObj.p2 ==='+ myObj.p2 );
+}
+
+if(!(myObj.p3 === "c")){
+ $ERROR('#8: myObj.p3 === "c". Actual: myObj.p3 ==='+ myObj.p3 );
+}
+
+if(!(myObj.p4 === undefined)){
+ $ERROR('#9: myObj.p4 === undefined. Actual: myObj.p4 ==='+ myObj.p4 );
+}
+
+if(!(myObj.p5 === undefined)){
+ $ERROR('#10: myObj.p5 === undefined. Actual: myObj.p5 ==='+ myObj.p5 );
+}
+
+if(!(st_parseInt === "parseInt")){
+ $ERROR('#11: myObj.parseInt === "parseInt". Actual: myObj.parseInt ==='+ myObj.parseInt );
+}
+
+if(!(st_NaN === "NaN")){
+ $ERROR('#12: st_NaN === "NaN". Actual: st_NaN ==='+ st_NaN );
+}
+
+if(!(st_Infinity === "Infinity")){
+ $ERROR('#13: st_Infinity === "Infinity". Actual: st_Infinity ==='+ st_Infinity );
+}
+
+if(!(st_eval === "eval")){
+ $ERROR('#14: st_eval === "eval". Actual: st_eval ==='+ st_eval );
+}
+
+if(!(st_parseFloat === "parseFloat")){
+ $ERROR('#15: st_parseFloat === "parseFloat". Actual: st_parseFloat ==='+ st_parseFloat );
+}
+
+if(!(st_isNaN === "isNaN")){
+ $ERROR('#16: st_isNaN === "isNaN". Actual: st_isNaN ==='+ st_isNaN );
+}
+
+if(!(st_isFinite === "isFinite")){
+ $ERROR('#17: st_isFinite === "isFinite". Actual: st_isFinite ==='+ st_isFinite );
+}
+
+try{
+ value;
+ $ERROR('#18: value is not defined');
+}
+catch(e){
+}
+
+if(!(myObj.value === "myObj_value")){
+ $ERROR('#19: myObj.value === "myObj_value". Actual: myObj.value ==='+ myObj.value );
+}
+
diff --git a/js/src/tests/test262/ch12/12.10/S12.10_A1.7_T4.js b/js/src/tests/test262/ch12/12.10/S12.10_A1.7_T4.js
new file mode 100644
index 000000000..9ca70ef1c
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.10/S12.10_A1.7_T4.js
@@ -0,0 +1,153 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * The with statement adds a computed object to the front of the
+ * scope chain of the current execution context
+ *
+ * @path ch12/12.10/S12.10_A1.7_T4.js
+ * @description Calling a function within "with" statement declared within the statement, leading to completion by exception
+ * @noStrict
+ */
+
+this.p1 = 1;
+this.p2 = 2;
+this.p3 = 3;
+var result = "result";
+var myObj = {p1: 'a',
+ p2: 'b',
+ p3: 'c',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';},
+ parseInt : function(){return 'obj_parseInt';},
+ NaN : 'obj_NaN',
+ Infinity : 'obj_Infinity',
+ eval : function(){return 'obj_eval';},
+ parseFloat : function(){return 'obj_parseFloat';},
+ isNaN : function(){return 'obj_isNaN';},
+ isFinite : function(){return 'obj_isFinite';}
+}
+var del;
+var st_p1 = "p1";
+var st_p2 = "p2";
+var st_p3 = "p3";
+var st_parseInt = "parseInt";
+var st_NaN = "NaN";
+var st_Infinity = "Infinity";
+var st_eval = "eval";
+var st_parseFloat = "parseFloat";
+var st_isNaN = "isNaN";
+var st_isFinite = "isFinite";
+
+try {
+ with(myObj){
+ var f = function(){
+ st_p1 = p1;
+ st_p2 = p2;
+ st_p3 = p3;
+ st_parseInt = parseInt;
+ st_NaN = NaN;
+ st_Infinity = Infinity;
+ st_eval = eval;
+ st_parseFloat = parseFloat;
+ st_isNaN = isNaN;
+ st_isFinite = isFinite;
+ p1 = 'x1';
+ this.p2 = 'x2';
+ del = delete p3;
+ var p4 = 'x4';
+ p5 = 'x5';
+ var value = 'value';
+ throw value;
+ }
+ f();
+ }
+} catch(e){
+ result = e;
+}
+
+if(!(result === "value")){
+ $ERROR('#0: result === "value". Actual: result ==='+ result );
+}
+
+if(!(p1 === 1)){
+ $ERROR('#1: p1 === 1. Actual: p1 ==='+ p1 );
+}
+
+if(!(p2 === "x2")){
+ $ERROR('#2: p2 === "x2". Actual: p2 ==='+ p2 );
+}
+
+if(!(p3 === 3)){
+ $ERROR('#3: p3 === 3. Actual: p3 ==='+ p3 );
+}
+
+try {
+ p4;
+ $ERROR('#4: p4 is not defined');
+} catch(e) {
+}
+
+if(!(p5 === "x5")){
+ $ERROR('#5: p5 === "x5". Actual: p5 ==='+ p5 );
+}
+
+if(!(myObj.p1 === "x1")){
+ $ERROR('#6: myObj.p1 === "x1". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+
+if(!(myObj.p2 === "b")){
+ $ERROR('#7: myObj.p2 === "b". Actual: myObj.p2 ==='+ myObj.p2 );
+}
+
+if(!(myObj.p3 === undefined)){
+ $ERROR('#8: myObj.p3 === undefined. Actual: myObj.p3 ==='+ myObj.p3 );
+}
+
+if(!(myObj.p4 === undefined)){
+ $ERROR('#9: myObj.p4 === undefined. Actual: myObj.p4 ==='+ myObj.p4 );
+}
+
+if(!(myObj.p5 === undefined)){
+ $ERROR('#10: myObj.p5 === undefined. Actual: myObj.p5 ==='+ myObj.p5 );
+}
+
+if(!(st_parseInt !== parseInt)){
+ $ERROR('#11: myObj.parseInt !== parseInt');
+}
+
+if(!(st_NaN === "obj_NaN")){
+ $ERROR('#12: myObj.NaN !== NaN');
+}
+
+if(!(st_Infinity !== Infinity)){
+ $ERROR('#13: myObj.Infinity !== Infinity');
+}
+
+if(!(st_eval !== eval)){
+ $ERROR('#14: myObj.eval !== eval');
+}
+
+if(!(st_parseFloat !== parseFloat)){
+ $ERROR('#15: myObj.parseFloat !== parseFloat');
+}
+
+if(!(st_isNaN !== isNaN)){
+ $ERROR('#16: myObj.isNaN !== isNaN');
+}
+
+if(!(st_isFinite !== isFinite)){
+ $ERROR('#17: myObj.isFinite !== isFinite');
+}
+
+try{
+ value;
+ $ERROR('#18: value is not defined');
+}
+catch(e){
+}
+
+if(!(myObj.value === "myObj_value")){
+ $ERROR('#19: myObj.value === "myObj_value". Actual: myObj.value ==='+ myObj.value );
+}
+
diff --git a/js/src/tests/test262/ch12/12.10/S12.10_A1.7_T5.js b/js/src/tests/test262/ch12/12.10/S12.10_A1.7_T5.js
new file mode 100644
index 000000000..d7070388b
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.10/S12.10_A1.7_T5.js
@@ -0,0 +1,155 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * The with statement adds a computed object to the front of the
+ * scope chain of the current execution context
+ *
+ * @path ch12/12.10/S12.10_A1.7_T5.js
+ * @description Calling a function within "with" statement declared within the statement, leading to completion by exception
+ * @noStrict
+ */
+
+this.p1 = 1;
+this.p2 = 2;
+this.p3 = 3;
+var result = "result";
+var myObj = {p1: 'a',
+ p2: 'b',
+ p3: 'c',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';},
+ parseInt : function(){return 'obj_parseInt';},
+ NaN : 'obj_NaN',
+ Infinity : 'obj_Infinity',
+ eval : function(){return 'obj_eval';},
+ parseFloat : function(){return 'obj_parseFloat';},
+ isNaN : function(){return 'obj_isNaN';},
+ isFinite : function(){return 'obj_isFinite';}
+}
+var del;
+var st_p1 = "p1";
+var st_p2 = "p2";
+var st_p3 = "p3";
+var st_parseInt = "parseInt";
+var st_NaN = "NaN";
+var st_Infinity = "Infinity";
+var st_eval = "eval";
+var st_parseFloat = "parseFloat";
+var st_isNaN = "isNaN";
+var st_isFinite = "isFinite";
+
+try {
+ with(myObj){
+ var f = function(){
+ throw value;
+ st_p1 = p1;
+ st_p2 = p2;
+ st_p3 = p3;
+ st_parseInt = parseInt;
+ st_NaN = NaN;
+ st_Infinity = Infinity;
+ st_eval = eval;
+ st_parseFloat = parseFloat;
+ st_isNaN = isNaN;
+ st_isFinite = isFinite;
+ p1 = 'x1';
+ this.p2 = 'x2';
+ del = delete p3;
+ var p4 = 'x4';
+ p5 = 'x5';
+ var value = 'value';
+ }
+ f();
+ }
+} catch(e){
+ result = e;
+}
+
+if(!(result === undefined)){
+ $ERROR('#0: result === undefined. Actual: result ==='+ result );
+}
+
+if(!(p1 === 1)){
+ $ERROR('#1: p1 === 1. Actual: p1 ==='+ p1 );
+}
+
+if(!(p2 === 2)){
+ $ERROR('#2: p2 === 2. Actual: p2 ==='+ p2 );
+}
+
+if(!(p3 === 3)){
+ $ERROR('#3: p3 === 3. Actual: p3 ==='+ p3 );
+}
+
+try {
+ p4;
+ $ERROR('#4: p4 is not defined');
+} catch(e) {
+}
+
+try {
+ p5;
+ $ERROR('#5: p5 is not defined');
+} catch(e) {
+}
+
+if(!(myObj.p1 === "a")){
+ $ERROR('#6: myObj.p1 === "a". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+
+if(!(myObj.p2 === "b")){
+ $ERROR('#7: myObj.p2 === "b". Actual: myObj.p2 ==='+ myObj.p2 );
+}
+
+if(!(myObj.p3 === "c")){
+ $ERROR('#8: myObj.p3 === "c". Actual: myObj.p3 ==='+ myObj.p3 );
+}
+
+if(!(myObj.p4 === undefined)){
+ $ERROR('#9: myObj.p4 === undefined. Actual: myObj.p4 ==='+ myObj.p4 );
+}
+
+if(!(myObj.p5 === undefined)){
+ $ERROR('#10: myObj.p5 === undefined. Actual: myObj.p5 ==='+ myObj.p5 );
+}
+
+if(!(st_parseInt === "parseInt")){
+ $ERROR('#11: myObj.parseInt === "parseInt". Actual: myObj.parseInt ==='+ myObj.parseInt );
+}
+
+if(!(st_NaN === "NaN")){
+ $ERROR('#12: st_NaN === "NaN". Actual: st_NaN ==='+ st_NaN );
+}
+
+if(!(st_Infinity === "Infinity")){
+ $ERROR('#13: st_Infinity === "Infinity". Actual: st_Infinity ==='+ st_Infinity );
+}
+
+if(!(st_eval === "eval")){
+ $ERROR('#14: st_eval === "eval". Actual: st_eval ==='+ st_eval );
+}
+
+if(!(st_parseFloat === "parseFloat")){
+ $ERROR('#15: st_parseFloat === "parseFloat". Actual: st_parseFloat ==='+ st_parseFloat );
+}
+
+if(!(st_isNaN === "isNaN")){
+ $ERROR('#16: st_isNaN === "isNaN". Actual: st_isNaN ==='+ st_isNaN );
+}
+
+if(!(st_isFinite === "isFinite")){
+ $ERROR('#17: st_isFinite === "isFinite". Actual: st_isFinite ==='+ st_isFinite );
+}
+
+try{
+ value;
+ $ERROR('#18: value is not defined');
+}
+catch(e){
+}
+
+if(!(myObj.value === "myObj_value")){
+ $ERROR('#19: myObj.value === "myObj_value". Actual: myObj.value ==='+ myObj.value );
+}
+
diff --git a/js/src/tests/test262/ch12/12.10/S12.10_A1.8_T1.js b/js/src/tests/test262/ch12/12.10/S12.10_A1.8_T1.js
new file mode 100644
index 000000000..73519377b
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.10/S12.10_A1.8_T1.js
@@ -0,0 +1,144 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * The with statement adds a computed object to the front of the
+ * scope chain of the current execution context
+ *
+ * @path ch12/12.10/S12.10_A1.8_T1.js
+ * @description Declaring function constructor within "with" statement, leading to normal completion
+ * @noStrict
+ */
+
+this.p1 = 1;
+this.p2 = 2;
+this.p3 = 3;
+var result = "result";
+var myObj = {p1: 'a',
+ p2: 'b',
+ p3: 'c',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';},
+ parseInt : function(){return 'obj_parseInt';},
+ NaN : 'obj_NaN',
+ Infinity : 'obj_Infinity',
+ eval : function(){return 'obj_eval';},
+ parseFloat : function(){return 'obj_parseFloat';},
+ isNaN : function(){return 'obj_isNaN';},
+ isFinite : function(){return 'obj_isFinite';}
+}
+var del;
+var st_p1 = "p1";
+var st_p2 = "p2";
+var st_p3 = "p3";
+var st_parseInt = "parseInt";
+var st_NaN = "NaN";
+var st_Infinity = "Infinity";
+var st_eval = "eval";
+var st_parseFloat = "parseFloat";
+var st_isNaN = "isNaN";
+var st_isFinite = "isFinite";
+
+with(myObj){
+ var f = function(){
+ st_p1 = p1;
+ st_p2 = p2;
+ st_p3 = p3;
+ st_parseInt = parseInt;
+ st_NaN = NaN;
+ st_Infinity = Infinity;
+ st_eval = eval;
+ st_parseFloat = parseFloat;
+ st_isNaN = isNaN;
+ st_isFinite = isFinite;
+ p1 = 'x1';
+ this.p2 = 'x2';
+ del = delete p3;
+ var p4 = 'x4';
+ p5 = 'x5';
+ var value = 'value';
+ }
+ var obj = new f();
+}
+
+if(!(p1 === 1)){
+ $ERROR('#1: p1 === 1. Actual: p1 ==='+ p1 );
+}
+
+if(!(p2 === 2)){
+ $ERROR('#2: p2 === 2. Actual: p2 ==='+ p2 );
+}
+
+if(!(p3 === 3)){
+ $ERROR('#3: p3 === 3. Actual: p3 ==='+ p3 );
+}
+
+try {
+ p4;
+ $ERROR('#4: p4 is not defined');
+} catch(e) {
+}
+
+if(!(p5 === "x5")){
+ $ERROR('#5: p5 === "x5". Actual: p5 ==='+ p5 );
+}
+
+if(!(myObj.p1 === "x1")){
+ $ERROR('#6: myObj.p1 === "x1". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+
+if(!(myObj.p2 === "b")){
+ $ERROR('#7: myObj.p2 === "b". Actual: myObj.p2 ==='+ myObj.p2 );
+}
+
+if(!(myObj.p3 === undefined)){
+ $ERROR('#8: myObj.p3 === undefined. Actual: myObj.p3 ==='+ myObj.p3 );
+}
+
+if(!(myObj.p4 === undefined)){
+ $ERROR('#9: myObj.p4 === undefined. Actual: myObj.p4 ==='+ myObj.p4 );
+}
+
+if(!(myObj.p5 === undefined)){
+ $ERROR('#10: myObj.p5 === undefined. Actual: myObj.p5 ==='+ myObj.p5 );
+}
+
+if(!(st_parseInt !== parseInt)){
+ $ERROR('#11: myObj.parseInt !== parseInt');
+}
+
+if(!(st_NaN === "obj_NaN")){
+ $ERROR('#12: myObj.NaN !== NaN');
+}
+
+if(!(st_Infinity !== Infinity)){
+ $ERROR('#13: myObj.Infinity !== Infinity');
+}
+
+if(!(st_eval !== eval)){
+ $ERROR('#14: myObj.eval !== eval');
+}
+
+if(!(st_parseFloat !== parseFloat)){
+ $ERROR('#15: myObj.parseFloat !== parseFloat');
+}
+
+if(!(st_isNaN !== isNaN)){
+ $ERROR('#16: myObj.isNaN !== isNaN');
+}
+
+if(!(st_isFinite !== isFinite)){
+ $ERROR('#17: myObj.isFinite !== isFinite');
+}
+
+try{
+ value;
+ $ERROR('#18: value is not defined');
+}
+catch(e){
+}
+
+if(!(myObj.value === "myObj_value")){
+ $ERROR('#19: myObj.value === "myObj_value". Actual: myObj.value ==='+ myObj.value );
+}
+
diff --git a/js/src/tests/test262/ch12/12.10/S12.10_A1.8_T2.js b/js/src/tests/test262/ch12/12.10/S12.10_A1.8_T2.js
new file mode 100644
index 000000000..fd81d2bfc
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.10/S12.10_A1.8_T2.js
@@ -0,0 +1,144 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * The with statement adds a computed object to the front of the
+ * scope chain of the current execution context
+ *
+ * @path ch12/12.10/S12.10_A1.8_T2.js
+ * @description Declaring function constructor within "with" statement, leading to normal completion by "return"
+ * @noStrict
+ */
+
+this.p1 = 1;
+this.p2 = 2;
+this.p3 = 3;
+var result = "result";
+var myObj = {p1: 'a',
+ p2: 'b',
+ p3: 'c',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';},
+ parseInt : function(){return 'obj_parseInt';},
+ NaN : 'obj_NaN',
+ Infinity : 'obj_Infinity',
+ eval : function(){return 'obj_eval';},
+ parseFloat : function(){return 'obj_parseFloat';},
+ isNaN : function(){return 'obj_isNaN';},
+ isFinite : function(){return 'obj_isFinite';}
+}
+var del;
+var st_p1 = "p1";
+var st_p2 = "p2";
+var st_p3 = "p3";
+var st_parseInt = "parseInt";
+var st_NaN = "NaN";
+var st_Infinity = "Infinity";
+var st_eval = "eval";
+var st_parseFloat = "parseFloat";
+var st_isNaN = "isNaN";
+var st_isFinite = "isFinite";
+
+with(myObj){
+ var f = function(){
+ st_p1 = p1;
+ st_p2 = p2;
+ st_p3 = p3;
+ st_parseInt = parseInt;
+ st_NaN = NaN;
+ st_Infinity = Infinity;
+ st_eval = eval;
+ st_parseFloat = parseFloat;
+ st_isNaN = isNaN;
+ st_isFinite = isFinite;
+ p1 = 'x1';
+ this.p2 = 'x2';
+ del = delete p3;
+ var p4 = 'x4';
+ p5 = 'x5';
+ var value = 'value';
+ return value;
+ }
+ var obj = new f();
+}
+
+if(!(p1 === 1)){
+ $ERROR('#1: p1 === 1. Actual: p1 ==='+ p1 );
+}
+
+if(!(p2 === 2)){
+ $ERROR('#2: p2 === 2. Actual: p2 ==='+ p2 );
+}
+
+if(!(p3 === 3)){
+ $ERROR('#3: p3 === 3. Actual: p3 ==='+ p3 );
+}
+try {
+ p4;
+ $ERROR('#4: p4 is not defined');
+} catch(e) {
+}
+
+if(!(p5 === "x5")){
+ $ERROR('#5: p5 === "x5". Actual: p5 ==='+ p5 );
+}
+
+if(!(myObj.p1 === "x1")){
+ $ERROR('#6: myObj.p1 === "x1". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+
+if(!(myObj.p2 === "b")){
+ $ERROR('#7: myObj.p2 === "b". Actual: myObj.p2 ==='+ myObj.p2 );
+}
+
+if(!(myObj.p3 === undefined)){
+ $ERROR('#8: myObj.p3 === undefined. Actual: myObj.p3 ==='+ myObj.p3 );
+}
+
+if(!(myObj.p4 === undefined)){
+ $ERROR('#9: myObj.p4 === undefined. Actual: myObj.p4 ==='+ myObj.p4 );
+}
+
+if(!(myObj.p5 === undefined)){
+ $ERROR('#10: myObj.p5 === undefined. Actual: myObj.p5 ==='+ myObj.p5 );
+}
+
+if(!(st_parseInt !== parseInt)){
+ $ERROR('#11: myObj.parseInt !== parseInt');
+}
+
+if(!(st_NaN === "obj_NaN")){
+ $ERROR('#12: myObj.NaN !== NaN');
+}
+
+if(!(st_Infinity !== Infinity)){
+ $ERROR('#13: myObj.Infinity !== Infinity');
+}
+
+if(!(st_eval !== eval)){
+ $ERROR('#14: myObj.eval !== eval');
+}
+
+if(!(st_parseFloat !== parseFloat)){
+ $ERROR('#15: myObj.parseFloat !== parseFloat');
+}
+
+if(!(st_isNaN !== isNaN)){
+ $ERROR('#16: myObj.isNaN !== isNaN');
+}
+
+if(!(st_isFinite !== isFinite)){
+ $ERROR('#17: myObj.isFinite !== isFinite');
+}
+
+try{
+ value;
+ $ERROR('#18: value is not defined');
+}
+catch(e){
+}
+
+if(!(myObj.value === "myObj_value")){
+ $ERROR('#19: myObj.value === "myObj_value". Actual: myObj.value ==='+ myObj.value );
+}
+
diff --git a/js/src/tests/test262/ch12/12.10/S12.10_A1.8_T3.js b/js/src/tests/test262/ch12/12.10/S12.10_A1.8_T3.js
new file mode 100644
index 000000000..39a648266
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.10/S12.10_A1.8_T3.js
@@ -0,0 +1,147 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * The with statement adds a computed object to the front of the
+ * scope chain of the current execution context
+ *
+ * @path ch12/12.10/S12.10_A1.8_T3.js
+ * @description Declaring function constructor within "with" statement, leading to normal completion by "return"
+ * @noStrict
+ */
+
+this.p1 = 1;
+this.p2 = 2;
+this.p3 = 3;
+var result = "result";
+var myObj = {p1: 'a',
+ p2: 'b',
+ p3: 'c',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';},
+ parseInt : function(){return 'obj_parseInt';},
+ NaN : 'obj_NaN',
+ Infinity : 'obj_Infinity',
+ eval : function(){return 'obj_eval';},
+ parseFloat : function(){return 'obj_parseFloat';},
+ isNaN : function(){return 'obj_isNaN';},
+ isFinite : function(){return 'obj_isFinite';}
+}
+var del;
+var st_p1 = "p1";
+var st_p2 = "p2";
+var st_p3 = "p3";
+var st_parseInt = "parseInt";
+var st_NaN = "NaN";
+var st_Infinity = "Infinity";
+var st_eval = "eval";
+var st_parseFloat = "parseFloat";
+var st_isNaN = "isNaN";
+var st_isFinite = "isFinite";
+
+with(myObj){
+ var f = function(){
+ return value;
+ st_p1 = p1;
+ st_p2 = p2;
+ st_p3 = p3;
+ st_parseInt = parseInt;
+ st_NaN = NaN;
+ st_Infinity = Infinity;
+ st_eval = eval;
+ st_parseFloat = parseFloat;
+ st_isNaN = isNaN;
+ st_isFinite = isFinite;
+ p1 = 'x1';
+ this.p2 = 'x2';
+ del = delete p3;
+ var p4 = 'x4';
+ p5 = 'x5';
+ var value = 'value';
+ }
+ var obj = new f();
+}
+
+if(!(p1 === 1)){
+ $ERROR('#1: p1 === 1. Actual: p1 ==='+ p1 );
+}
+
+if(!(p2 === 2)){
+ $ERROR('#2: p2 === 2. Actual: p2 ==='+ p2 );
+}
+
+if(!(p3 === 3)){
+ $ERROR('#3: p3 === 3. Actual: p3 ==='+ p3 );
+}
+
+try {
+ p4;
+ $ERROR('#4: p4 is not defined');
+} catch(e) {
+}
+
+try {
+ p5;
+ $ERROR('#5: p5 is not defined');
+} catch(e) {
+}
+
+if(!(myObj.p1 === "a")){
+ $ERROR('#6: myObj.p1 === "a". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+
+if(!(myObj.p2 === "b")){
+ $ERROR('#7: myObj.p2 === "b". Actual: myObj.p2 ==='+ myObj.p2 );
+}
+
+if(!(myObj.p3 === "c")){
+ $ERROR('#8: myObj.p3 === "c". Actual: myObj.p3 ==='+ myObj.p3 );
+}
+
+if(!(myObj.p4 === undefined)){
+ $ERROR('#9: myObj.p4 === undefined. Actual: myObj.p4 ==='+ myObj.p4 );
+}
+
+if(!(myObj.p5 === undefined)){
+ $ERROR('#10: myObj.p5 === undefined. Actual: myObj.p5 ==='+ myObj.p5 );
+}
+
+if(!(st_parseInt === "parseInt")){
+ $ERROR('#11: myObj.parseInt === "parseInt". Actual: myObj.parseInt ==='+ myObj.parseInt );
+}
+
+if(!(st_NaN === "NaN")){
+ $ERROR('#12: st_NaN === "NaN". Actual: st_NaN ==='+ st_NaN );
+}
+
+if(!(st_Infinity === "Infinity")){
+ $ERROR('#13: st_Infinity === "Infinity". Actual: st_Infinity ==='+ st_Infinity );
+}
+
+if(!(st_eval === "eval")){
+ $ERROR('#14: st_eval === "eval". Actual: st_eval ==='+ st_eval );
+}
+
+if(!(st_parseFloat === "parseFloat")){
+ $ERROR('#15: st_parseFloat === "parseFloat". Actual: st_parseFloat ==='+ st_parseFloat );
+}
+
+if(!(st_isNaN === "isNaN")){
+ $ERROR('#16: st_isNaN === "isNaN". Actual: st_isNaN ==='+ st_isNaN );
+}
+
+if(!(st_isFinite === "isFinite")){
+ $ERROR('#17: st_isFinite === "isFinite". Actual: st_isFinite ==='+ st_isFinite );
+}
+
+try{
+ value;
+ $ERROR('#18: value is not defined');
+}
+catch(e){
+}
+
+if(!(myObj.value === "myObj_value")){
+ $ERROR('#19: myObj.value === "myObj_value". Actual: myObj.value ==='+ myObj.value );
+}
+
diff --git a/js/src/tests/test262/ch12/12.10/S12.10_A1.8_T4.js b/js/src/tests/test262/ch12/12.10/S12.10_A1.8_T4.js
new file mode 100644
index 000000000..f6eed2043
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.10/S12.10_A1.8_T4.js
@@ -0,0 +1,152 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * The with statement adds a computed object to the front of the
+ * scope chain of the current execution context
+ *
+ * @path ch12/12.10/S12.10_A1.8_T4.js
+ * @description Declaring function constructor within "with" statement, leading to completion by exception
+ * @noStrict
+ */
+
+this.p1 = 1;
+this.p2 = 2;
+this.p3 = 3;
+var result = "result";
+var myObj = {p1: 'a',
+ p2: 'b',
+ p3: 'c',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';},
+ parseInt : function(){return 'obj_parseInt';},
+ NaN : 'obj_NaN',
+ Infinity : 'obj_Infinity',
+ eval : function(){return 'obj_eval';},
+ parseFloat : function(){return 'obj_parseFloat';},
+ isNaN : function(){return 'obj_isNaN';},
+ isFinite : function(){return 'obj_isFinite';}
+}
+var del;
+var st_p1 = "p1";
+var st_p2 = "p2";
+var st_p3 = "p3";
+var st_parseInt = "parseInt";
+var st_NaN = "NaN";
+var st_Infinity = "Infinity";
+var st_eval = "eval";
+var st_parseFloat = "parseFloat";
+var st_isNaN = "isNaN";
+var st_isFinite = "isFinite";
+
+try {
+ with(myObj){
+ var f = function(){
+ st_p1 = p1;
+ st_p2 = p2;
+ st_p3 = p3;
+ st_parseInt = parseInt;
+ st_NaN = NaN;
+ st_Infinity = Infinity;
+ st_eval = eval;
+ st_parseFloat = parseFloat;
+ st_isNaN = isNaN;
+ st_isFinite = isFinite;
+ p1 = 'x1';
+ this.p2 = 'x2';
+ del = delete p3;
+ var p4 = 'x4';
+ p5 = 'x5';
+ var value = 'value';
+ throw value;
+ }
+ var obj = new f();
+ }
+} catch(e){
+ result = e;
+}
+
+if(!(result === "value")){
+ $ERROR('#0: result === "value". Actual: result ==='+ result );
+}
+
+if(!(p1 === 1)){
+ $ERROR('#1: p1 === 1. Actual: p1 ==='+ p1 );
+}
+
+if(!(p2 === 2)){
+ $ERROR('#2: p2 === 2. Actual: p2 ==='+ p2 );
+}
+
+if(!(p3 === 3)){
+ $ERROR('#3: p3 === 3. Actual: p3 ==='+ p3 );
+}
+try {
+ p4;
+ $ERROR('#4: p4 is not defined');
+} catch(e) {
+}
+
+if(!(p5 === "x5")){
+ $ERROR('#5: p5 === "x5". Actual: p5 ==='+ p5 );
+}
+
+if(!(myObj.p1 === "x1")){
+ $ERROR('#6: myObj.p1 === "x1". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+
+if(!(myObj.p2 === "b")){
+ $ERROR('#7: myObj.p2 === "b". Actual: myObj.p2 ==='+ myObj.p2 );
+}
+
+if(!(myObj.p3 === undefined)){
+ $ERROR('#8: myObj.p3 === undefined. Actual: myObj.p3 ==='+ myObj.p3 );
+}
+
+if(!(myObj.p4 === undefined)){
+ $ERROR('#9: myObj.p4 === undefined. Actual: myObj.p4 ==='+ myObj.p4 );
+}
+
+if(!(myObj.p5 === undefined)){
+ $ERROR('#10: myObj.p5 === undefined. Actual: myObj.p5 ==='+ myObj.p5 );
+}
+
+if(!(st_parseInt !== parseInt)){
+ $ERROR('#11: myObj.parseInt !== parseInt');
+}
+
+if(!(st_NaN === "obj_NaN")){
+ $ERROR('#12: myObj.NaN !== NaN');
+}
+
+if(!(st_Infinity !== Infinity)){
+ $ERROR('#13: myObj.Infinity !== Infinity');
+}
+
+if(!(st_eval !== eval)){
+ $ERROR('#14: myObj.eval !== eval');
+}
+
+if(!(st_parseFloat !== parseFloat)){
+ $ERROR('#15: myObj.parseFloat !== parseFloat');
+}
+
+if(!(st_isNaN !== isNaN)){
+ $ERROR('#16: myObj.isNaN !== isNaN');
+}
+
+if(!(st_isFinite !== isFinite)){
+ $ERROR('#17: myObj.isFinite !== isFinite');
+}
+
+try{
+ value;
+ $ERROR('#18: value is not defined');
+}
+catch(e){
+}
+
+if(!(myObj.value === "myObj_value")){
+ $ERROR('#19: myObj.value === "myObj_value". Actual: myObj.value ==='+ myObj.value );
+}
+
diff --git a/js/src/tests/test262/ch12/12.10/S12.10_A1.8_T5.js b/js/src/tests/test262/ch12/12.10/S12.10_A1.8_T5.js
new file mode 100644
index 000000000..c2425b1f1
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.10/S12.10_A1.8_T5.js
@@ -0,0 +1,155 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * The with statement adds a computed object to the front of the
+ * scope chain of the current execution context
+ *
+ * @path ch12/12.10/S12.10_A1.8_T5.js
+ * @description Declaring function constructor within "with" statement, leading to completion by exception
+ * @noStrict
+ */
+
+this.p1 = 1;
+this.p2 = 2;
+this.p3 = 3;
+var result = "result";
+var myObj = {p1: 'a',
+ p2: 'b',
+ p3: 'c',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';},
+ parseInt : function(){return 'obj_parseInt';},
+ NaN : 'obj_NaN',
+ Infinity : 'obj_Infinity',
+ eval : function(){return 'obj_eval';},
+ parseFloat : function(){return 'obj_parseFloat';},
+ isNaN : function(){return 'obj_isNaN';},
+ isFinite : function(){return 'obj_isFinite';}
+}
+var del;
+var st_p1 = "p1";
+var st_p2 = "p2";
+var st_p3 = "p3";
+var st_parseInt = "parseInt";
+var st_NaN = "NaN";
+var st_Infinity = "Infinity";
+var st_eval = "eval";
+var st_parseFloat = "parseFloat";
+var st_isNaN = "isNaN";
+var st_isFinite = "isFinite";
+
+try {
+ with(myObj){
+ var f = function(){
+ throw value;
+ st_p1 = p1;
+ st_p2 = p2;
+ st_p3 = p3;
+ st_parseInt = parseInt;
+ st_NaN = NaN;
+ st_Infinity = Infinity;
+ st_eval = eval;
+ st_parseFloat = parseFloat;
+ st_isNaN = isNaN;
+ st_isFinite = isFinite;
+ p1 = 'x1';
+ this.p2 = 'x2';
+ del = delete p3;
+ var p4 = 'x4';
+ p5 = 'x5';
+ var value = 'value';
+ }
+ var obj = new f();
+ }
+} catch(e){
+ result = e;
+}
+
+if(!(result === undefined)){
+ $ERROR('#0: result === undefined. Actual: result ==='+ result );
+}
+
+if(!(p1 === 1)){
+ $ERROR('#1: p1 === 1. Actual: p1 ==='+ p1 );
+}
+
+if(!(p2 === 2)){
+ $ERROR('#2: p2 === 2. Actual: p2 ==='+ p2 );
+}
+
+if(!(p3 === 3)){
+ $ERROR('#3: p3 === 3. Actual: p3 ==='+ p3 );
+}
+
+try {
+ p4;
+ $ERROR('#4: p4 is not defined');
+} catch(e) {
+}
+
+try {
+ p5;
+ $ERROR('#5: p5 is not defined');
+} catch(e) {
+}
+
+if(!(myObj.p1 === "a")){
+ $ERROR('#6: myObj.p1 === "a". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+
+if(!(myObj.p2 === "b")){
+ $ERROR('#7: myObj.p2 === "b". Actual: myObj.p2 ==='+ myObj.p2 );
+}
+
+if(!(myObj.p3 === "c")){
+ $ERROR('#8: myObj.p3 === "c". Actual: myObj.p3 ==='+ myObj.p3 );
+}
+
+if(!(myObj.p4 === undefined)){
+ $ERROR('#9: myObj.p4 === undefined. Actual: myObj.p4 ==='+ myObj.p4 );
+}
+
+if(!(myObj.p5 === undefined)){
+ $ERROR('#10: myObj.p5 === undefined. Actual: myObj.p5 ==='+ myObj.p5 );
+}
+
+if(!(st_parseInt === "parseInt")){
+ $ERROR('#11: myObj.parseInt === "parseInt". Actual: myObj.parseInt ==='+ myObj.parseInt );
+}
+
+if(!(st_NaN === "NaN")){
+ $ERROR('#12: st_NaN === "NaN". Actual: st_NaN ==='+ st_NaN );
+}
+
+if(!(st_Infinity === "Infinity")){
+ $ERROR('#13: st_Infinity === "Infinity". Actual: st_Infinity ==='+ st_Infinity );
+}
+
+if(!(st_eval === "eval")){
+ $ERROR('#14: st_eval === "eval". Actual: st_eval ==='+ st_eval );
+}
+
+if(!(st_parseFloat === "parseFloat")){
+ $ERROR('#15: st_parseFloat === "parseFloat". Actual: st_parseFloat ==='+ st_parseFloat );
+}
+
+if(!(st_isNaN === "isNaN")){
+ $ERROR('#16: st_isNaN === "isNaN". Actual: st_isNaN ==='+ st_isNaN );
+}
+
+if(!(st_isFinite === "isFinite")){
+ $ERROR('#17: st_isFinite === "isFinite". Actual: st_isFinite ==='+ st_isFinite );
+}
+
+try{
+ value;
+ $ERROR('#18: value is not defined');
+}
+catch(e){
+}
+
+if(!(myObj.value === "myObj_value")){
+ $ERROR('#19: myObj.value === "myObj_value". Actual: myObj.value ==='+ myObj.value );
+}
+
diff --git a/js/src/tests/test262/ch12/12.10/S12.10_A1.9_T1.js b/js/src/tests/test262/ch12/12.10/S12.10_A1.9_T1.js
new file mode 100644
index 000000000..629b517b4
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.10/S12.10_A1.9_T1.js
@@ -0,0 +1,144 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * The with statement adds a computed object to the front of the
+ * scope chain of the current execution context
+ *
+ * @path ch12/12.10/S12.10_A1.9_T1.js
+ * @description Using "for-in" statement within "with" statement, leading to normal completion
+ * @noStrict
+ */
+
+this.p1 = 1;
+this.p2 = 2;
+this.p3 = 3;
+var result = "result";
+var myObj = {p1: 'a',
+ p2: 'b',
+ p3: 'c',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';},
+ parseInt : function(){return 'obj_parseInt';},
+ NaN : 'obj_NaN',
+ Infinity : 'obj_Infinity',
+ eval : function(){return 'obj_eval';},
+ parseFloat : function(){return 'obj_parseFloat';},
+ isNaN : function(){return 'obj_isNaN';},
+ isFinite : function(){return 'obj_isFinite';}
+}
+var del;
+var st_p1 = "p1";
+var st_p2 = "p2";
+var st_p3 = "p3";
+var st_parseInt = "parseInt";
+var st_NaN = "NaN";
+var st_Infinity = "Infinity";
+var st_eval = "eval";
+var st_parseFloat = "parseFloat";
+var st_isNaN = "isNaN";
+var st_isFinite = "isFinite";
+
+with(myObj){
+ for(var prop in myObj){
+ if(prop === 'p1') {
+ st_p1 = p1;
+ p1 = 'x1';
+ }
+ if(prop === 'p2') {
+ st_p2 = p2;
+ this.p2 = 'x2';
+ }
+ if(prop === 'p3') {
+ st_p3 = p3;
+ del = delete p3;
+ }
+ if(prop === 'parseInt') st_parseInt = parseInt;
+ if(prop === 'NaN') st_NaN = NaN;
+ if(prop === 'Infinity') st_Infinity = Infinity;
+ if(prop === 'eval') st_eval = eval;
+ if(prop === 'parseFloat') st_parseFloat = parseFloat;
+ if(prop === 'isNaN') st_isNaN = isNaN;
+ if(prop === 'isFinite') st_isFinite = isFinite;
+ var p4 = 'x4';
+ p5 = 'x5';
+ var value = 'value';
+ }
+}
+
+if(!(p1 === 1)){
+ $ERROR('#1: p1 === 1. Actual: p1 ==='+ p1 );
+}
+
+if(!(p2 === "x2")){
+ $ERROR('#2: p2 === "x2". Actual: p2 ==='+ p2 );
+}
+
+if(!(p3 === 3)){
+ $ERROR('#3: p3 === 3. Actual: p3 ==='+ p3 );
+}
+
+if(!(p4 === "x4")){
+ $ERROR('#4: p4 === "x4". Actual: p4 ==='+ p4 );
+}
+
+if(!(p5 === "x5")){
+ $ERROR('#5: p5 === "x5". Actual: p5 ==='+ p5 );
+}
+
+if(!(myObj.p1 === "x1")){
+ $ERROR('#6: myObj.p1 === "x1". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+
+if(!(myObj.p2 === "b")){
+ $ERROR('#7: myObj.p2 === "b". Actual: myObj.p2 ==='+ myObj.p2 );
+}
+
+if(!(myObj.p3 === undefined)){
+ $ERROR('#8: myObj.p3 === undefined. Actual: myObj.p3 ==='+ myObj.p3 );
+}
+
+if(!(myObj.p4 === undefined)){
+ $ERROR('#9: myObj.p4 === undefined. Actual: myObj.p4 ==='+ myObj.p4 );
+}
+
+if(!(myObj.p5 === undefined)){
+ $ERROR('#10: myObj.p5 === undefined. Actual: myObj.p5 ==='+ myObj.p5 );
+}
+
+if(!(st_parseInt !== parseInt)){
+ $ERROR('#11: myObj.parseInt !== parseInt');
+}
+
+if(!(st_NaN === "obj_NaN")){
+ $ERROR('#12: myObj.NaN !== NaN');
+}
+
+if(!(st_Infinity !== Infinity)){
+ $ERROR('#13: myObj.Infinity !== Infinity');
+}
+
+if(!(st_eval !== eval)){
+ $ERROR('#14: myObj.eval !== eval');
+}
+
+if(!(st_parseFloat !== parseFloat)){
+ $ERROR('#15: myObj.parseFloat !== parseFloat');
+}
+
+if(!(st_isNaN !== isNaN)){
+ $ERROR('#16: myObj.isNaN !== isNaN');
+}
+
+if(!(st_isFinite !== isFinite)){
+ $ERROR('#17: myObj.isFinite !== isFinite');
+}
+
+if(!(value === undefined)){
+ $ERROR('#18: value === undefined. Actual: value ==='+ value );
+}
+
+if(!(myObj.value === "value")){
+ $ERROR('#19: myObj.value === "value". Actual: myObj.value ==='+ myObj.value );
+}
+
diff --git a/js/src/tests/test262/ch12/12.10/S12.10_A1.9_T2.js b/js/src/tests/test262/ch12/12.10/S12.10_A1.9_T2.js
new file mode 100644
index 000000000..8e82e60eb
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.10/S12.10_A1.9_T2.js
@@ -0,0 +1,139 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * The with statement adds a computed object to the front of the
+ * scope chain of the current execution context
+ *
+ * @path ch12/12.10/S12.10_A1.9_T2.js
+ * @description Using "for-in" statement within "with" statement, leading to completion by break
+ * @noStrict
+ */
+
+this.p1 = 1;
+this.p2 = 2;
+this.p3 = 3;
+var result = "result";
+var myObj = {p1: 'a',
+ p2: 'b',
+ p3: 'c',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';},
+ parseInt : function(){return 'obj_parseInt';},
+ NaN : 'obj_NaN',
+ Infinity : 'obj_Infinity',
+ eval : function(){return 'obj_eval';},
+ parseFloat : function(){return 'obj_parseFloat';},
+ isNaN : function(){return 'obj_isNaN';},
+ isFinite : function(){return 'obj_isFinite';}
+}
+var del;
+var st_p1 = "p1";
+var st_p2 = "p2";
+var st_p3 = "p3";
+var st_parseInt = "parseInt";
+var st_NaN = "NaN";
+var st_Infinity = "Infinity";
+var st_eval = "eval";
+var st_parseFloat = "parseFloat";
+var st_isNaN = "isNaN";
+var st_isFinite = "isFinite";
+
+with(myObj){
+ for(var prop in myObj){
+ st_p1 = p1;
+ p1 = 'x1';
+ st_p2 = p2;
+ this.p2 = 'x2';
+ st_p3 = p3;
+ del = delete p3;
+ st_parseInt = parseInt;
+ st_NaN = NaN;
+ st_Infinity = Infinity;
+ st_eval = eval;
+ st_parseFloat = parseFloat;
+ st_isNaN = isNaN;
+ st_isFinite = isFinite;
+ var p4 = 'x4';
+ p5 = 'x5';
+ var value = 'value';
+ break;
+ }
+}
+
+if(!(p1 === 1)){
+ $ERROR('#1: p1 === 1. Actual: p1 ==='+ p1 );
+}
+
+if(!(p2 === "x2")){
+ $ERROR('#2: p2 === "x2". Actual: p2 ==='+ p2 );
+}
+
+if(!(p3 === 3)){
+ $ERROR('#3: p3 === 3. Actual: p3 ==='+ p3 );
+}
+
+if(!(p4 === "x4")){
+ $ERROR('#4: p4 === "x4". Actual: p4 ==='+ p4 );
+}
+
+if(!(p5 === "x5")){
+ $ERROR('#5: p5 === "x5". Actual: p5 ==='+ p5 );
+}
+
+if(!(myObj.p1 === "x1")){
+ $ERROR('#6: myObj.p1 === "x1". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+
+if(!(myObj.p2 === "b")){
+ $ERROR('#7: myObj.p2 === "b". Actual: myObj.p2 ==='+ myObj.p2 );
+}
+
+if(!(myObj.p3 === undefined)){
+ $ERROR('#8: myObj.p3 === undefined. Actual: myObj.p3 ==='+ myObj.p3 );
+}
+
+if(!(myObj.p4 === undefined)){
+ $ERROR('#9: myObj.p4 === undefined. Actual: myObj.p4 ==='+ myObj.p4 );
+}
+
+if(!(myObj.p5 === undefined)){
+ $ERROR('#10: myObj.p5 === undefined. Actual: myObj.p5 ==='+ myObj.p5 );
+}
+
+if(!(st_parseInt !== parseInt)){
+ $ERROR('#11: myObj.parseInt !== parseInt');
+}
+
+if(!(st_NaN === "obj_NaN")){
+ $ERROR('#12: myObj.NaN !== NaN');
+}
+
+if(!(st_Infinity !== Infinity)){
+ $ERROR('#13: myObj.Infinity !== Infinity');
+}
+
+if(!(st_eval !== eval)){
+ $ERROR('#14: myObj.eval !== eval');
+}
+
+if(!(st_parseFloat !== parseFloat)){
+ $ERROR('#15: myObj.parseFloat !== parseFloat');
+}
+
+if(!(st_isNaN !== isNaN)){
+ $ERROR('#16: myObj.isNaN !== isNaN');
+}
+
+if(!(st_isFinite !== isFinite)){
+ $ERROR('#17: myObj.isFinite !== isFinite');
+}
+
+if(!(value === undefined)){
+ $ERROR('#18: value === undefined. Actual: value ==='+ value );
+}
+
+if(!(myObj.value === "value")){
+ $ERROR('#19: myObj.value === "value". Actual: myObj.value ==='+ myObj.value );
+}
+
diff --git a/js/src/tests/test262/ch12/12.10/S12.10_A1.9_T3.js b/js/src/tests/test262/ch12/12.10/S12.10_A1.9_T3.js
new file mode 100644
index 000000000..52ba815fc
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.10/S12.10_A1.9_T3.js
@@ -0,0 +1,147 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * The with statement adds a computed object to the front of the
+ * scope chain of the current execution context
+ *
+ * @path ch12/12.10/S12.10_A1.9_T3.js
+ * @description Using "for-in" statement within "with" statement, leading to completion by break
+ * @noStrict
+ */
+
+this.p1 = 1;
+this.p2 = 2;
+this.p3 = 3;
+var result = "result";
+var myObj = {p1: 'a',
+ p2: 'b',
+ p3: 'c',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';},
+ parseInt : function(){return 'obj_parseInt';},
+ NaN : 'obj_NaN',
+ Infinity : 'obj_Infinity',
+ eval : function(){return 'obj_eval';},
+ parseFloat : function(){return 'obj_parseFloat';},
+ isNaN : function(){return 'obj_isNaN';},
+ isFinite : function(){return 'obj_isFinite';}
+}
+var del;
+var st_p1 = "p1";
+var st_p2 = "p2";
+var st_p3 = "p3";
+var st_parseInt = "parseInt";
+var st_NaN = "NaN";
+var st_Infinity = "Infinity";
+var st_eval = "eval";
+var st_parseFloat = "parseFloat";
+var st_isNaN = "isNaN";
+var st_isFinite = "isFinite";
+
+with(myObj){
+ for(var prop in myObj){
+ break;
+ if(prop === 'p1') {
+ st_p1 = p1;
+ p1 = 'x1';
+ }
+ if(prop === 'p2') {
+ st_p2 = p2;
+ this.p2 = 'x2';
+ }
+ if(prop === 'p3') {
+ st_p3 = p3;
+ del = delete p3;
+ }
+ if(prop === 'parseInt') st_parseInt = parseInt;
+ if(prop === 'NaN') st_NaN = NaN;
+ if(prop === 'Infinity') st_Infinity = Infinity;
+ if(prop === 'eval') st_eval = eval;
+ if(prop === 'parseFloat') st_parseFloat = parseFloat;
+ if(prop === 'isNaN') st_isNaN = isNaN;
+ if(prop === 'isFinite') st_isFinite = isFinite;
+ var p4 = 'x4';
+ p5 = 'x5';
+ var value = 'value';
+ }
+}
+
+if(!(p1 === 1)){
+ $ERROR('#1: p1 === 1. Actual: p1 ==='+ p1 );
+}
+
+if(!(p2 === 2)){
+ $ERROR('#2: p2 === 2. Actual: p2 ==='+ p2 );
+}
+
+if(!(p3 === 3)){
+ $ERROR('#3: p3 === 3. Actual: p3 ==='+ p3 );
+}
+
+if(!(p4 === undefined)){
+ $ERROR('#4: p4 === undefined. Actual: p4 ==='+ p4 );
+}
+
+try {
+ p5;
+ $ERROR('#5: p5 is not defined');
+} catch(e) {
+}
+
+if(!(myObj.p1 === "a")){
+ $ERROR('#6: myObj.p1 === "a". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+
+if(!(myObj.p2 === "b")){
+ $ERROR('#7: myObj.p2 === "b". Actual: myObj.p2 ==='+ myObj.p2 );
+}
+
+if(!(myObj.p3 === "c")){
+ $ERROR('#8: myObj.p3 === "c". Actual: myObj.p3 ==='+ myObj.p3 );
+}
+
+if(!(myObj.p4 === undefined)){
+ $ERROR('#9: myObj.p4 === undefined. Actual: myObj.p4 ==='+ myObj.p4 );
+}
+
+if(!(myObj.p5 === undefined)){
+ $ERROR('#10: myObj.p5 === undefined. Actual: myObj.p5 ==='+ myObj.p5 );
+}
+
+if(!(st_parseInt === "parseInt")){
+ $ERROR('#11: myObj.parseInt === "parseInt". Actual: myObj.parseInt ==='+ myObj.parseInt );
+}
+
+if(!(st_NaN === "NaN")){
+ $ERROR('#12: st_NaN === "NaN". Actual: st_NaN ==='+ st_NaN );
+}
+
+if(!(st_Infinity === "Infinity")){
+ $ERROR('#13: st_Infinity === "Infinity". Actual: st_Infinity ==='+ st_Infinity );
+}
+
+if(!(st_eval === "eval")){
+ $ERROR('#14: st_eval === "eval". Actual: st_eval ==='+ st_eval );
+}
+
+if(!(st_parseFloat === "parseFloat")){
+ $ERROR('#15: st_parseFloat === "parseFloat". Actual: st_parseFloat ==='+ st_parseFloat );
+}
+
+if(!(st_isNaN === "isNaN")){
+ $ERROR('#16: st_isNaN === "isNaN". Actual: st_isNaN ==='+ st_isNaN );
+}
+
+if(!(st_isFinite === "isFinite")){
+ $ERROR('#17: st_isFinite === "isFinite". Actual: st_isFinite ==='+ st_isFinite );
+}
+
+if(!(value === undefined)){
+ $ERROR('#18: value === undefined. Actual: value ==='+ value );
+}
+
+if(!(myObj.value === "myObj_value")){
+ $ERROR('#19: myObj.value === "myObj_value". Actual: myObj.value ==='+ myObj.value );
+}
+
diff --git a/js/src/tests/test262/ch12/12.10/S12.10_A3.10_T1.js b/js/src/tests/test262/ch12/12.10/S12.10_A3.10_T1.js
new file mode 100644
index 000000000..17fd49b0a
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.10/S12.10_A3.10_T1.js
@@ -0,0 +1,47 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * No matter how control leaves the embedded 'Statement',
+ * the scope chain is always restored to its former state
+ *
+ * @path ch12/12.10/S12.10_A3.10_T1.js
+ * @description Using iteration statement within "with" statement, leading to normal completion
+ * @noStrict
+ */
+
+this.p1 = 1;
+
+var result = "result";
+
+var myObj = {
+ p1: 'a',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';}
+}
+
+with(myObj){
+ do{
+ p1 = 'x1';
+ } while(false);
+}
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if(p1 !== 1){
+ $ERROR('#1: p1 === 1. Actual: p1 ==='+ p1 );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if(myObj.p1 !== "x1"){
+ $ERROR('#2: myObj.p1 === "x1". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+
+
+
diff --git a/js/src/tests/test262/ch12/12.10/S12.10_A3.10_T2.js b/js/src/tests/test262/ch12/12.10/S12.10_A3.10_T2.js
new file mode 100644
index 000000000..12c26bd86
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.10/S12.10_A3.10_T2.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.
+
+/**
+ * No matter how control leaves the embedded 'Statement',
+ * the scope chain is always restored to its former state
+ *
+ * @path ch12/12.10/S12.10_A3.10_T2.js
+ * @description Using iteration statement within "with" statement, leading completion by exception
+ * @noStrict
+ */
+
+this.p1 = 1;
+
+var result = "result";
+
+var myObj = {
+ p1: 'a',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';}
+}
+
+try {
+ with(myObj){
+ do{
+ p1 = 'x1';
+ throw value;
+ } while(false);
+ }
+} catch(e){
+ result = p1;
+}
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if(result !== 1){
+ $ERROR('#1: result === 1. Actual: result ==='+ result );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if(p1 !== 1){
+ $ERROR('#2: p1 === 1. Actual: p1 ==='+ p1 );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if(myObj.p1 !== "x1"){
+ $ERROR('#3: myObj.p1 === "x1". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch12/12.10/S12.10_A3.10_T3.js b/js/src/tests/test262/ch12/12.10/S12.10_A3.10_T3.js
new file mode 100644
index 000000000..32c27cce4
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.10/S12.10_A3.10_T3.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.
+
+/**
+ * No matter how control leaves the embedded 'Statement',
+ * the scope chain is always restored to its former state
+ *
+ * @path ch12/12.10/S12.10_A3.10_T3.js
+ * @description Using iteration statement within "with" statement, leading completion by exception
+ * @noStrict
+ */
+
+this.p1 = 1;
+
+var result = "result";
+
+var myObj = {
+ p1: 'a',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';}
+}
+
+try {
+ with(myObj){
+ do{
+ throw value;
+ p1 = 'x1';
+ } while(false);
+ }
+} catch(e){
+ result = p1;
+}
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if(result !== 1){
+ $ERROR('#1: result === 1. Actual: result ==='+ result );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if(p1 !== 1){
+ $ERROR('#2: p1 === 1. Actual: p1 ==='+ p1 );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if(myObj.p1 !== "a"){
+ $ERROR('#3: myObj.p1 === "a". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch12/12.10/S12.10_A3.10_T4.js b/js/src/tests/test262/ch12/12.10/S12.10_A3.10_T4.js
new file mode 100644
index 000000000..5f55777e2
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.10/S12.10_A3.10_T4.js
@@ -0,0 +1,47 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * No matter how control leaves the embedded 'Statement',
+ * the scope chain is always restored to its former state
+ *
+ * @path ch12/12.10/S12.10_A3.10_T4.js
+ * @description Using iteration statement within "with" statement, leading completion be break
+ * @noStrict
+ */
+
+this.p1 = 1;
+
+var result = "result";
+
+var myObj = {
+ p1: 'a',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';}
+}
+
+with(myObj){
+ do{
+ p1 = 'x1';
+ break;
+ } while(false);
+}
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if(p1 !== 1){
+ $ERROR('#1: p1 === 1. Actual: p1 ==='+ p1 );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if(myObj.p1 !== "x1"){
+ $ERROR('#2: myObj.p1 === "x1". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+
+
diff --git a/js/src/tests/test262/ch12/12.10/S12.10_A3.10_T5.js b/js/src/tests/test262/ch12/12.10/S12.10_A3.10_T5.js
new file mode 100644
index 000000000..b26cd9d43
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.10/S12.10_A3.10_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.
+
+/**
+ * No matter how control leaves the embedded 'Statement',
+ * the scope chain is always restored to its former state
+ *
+ * @path ch12/12.10/S12.10_A3.10_T5.js
+ * @description Using iteration statement within "with" statement, leading completion be break
+ * @noStrict
+ */
+
+this.p1 = 1;
+
+var result = "result";
+
+var myObj = {
+ p1: 'a',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';}
+}
+
+with(myObj){
+ do{
+ break;
+ p1 = 'x1';
+ } while(false);
+}
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if(p1 !== 1){
+ $ERROR('#1: p1 === 1. Actual: p1 ==='+ p1 );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if(myObj.p1 !== "a"){
+ $ERROR('#2: myObj.p1 === "a". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch12/12.10/S12.10_A3.11_T1.js b/js/src/tests/test262/ch12/12.10/S12.10_A3.11_T1.js
new file mode 100644
index 000000000..8d15c1486
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.10/S12.10_A3.11_T1.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.
+
+/**
+ * No matter how control leaves the embedded 'Statement',
+ * the scope chain is always restored to its former state
+ *
+ * @path ch12/12.10/S12.10_A3.11_T1.js
+ * @description Calling a function within "with" statement declared without the statement, leading to normal completion
+ * @noStrict
+ */
+
+this.p1 = 1;
+var result = "result";
+var myObj = {p1: 'a',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';}
+}
+
+var f = function(){
+ p1 = 'x1';
+}
+
+with(myObj){
+ f();
+}
+
+if(!(p1 === "x1")){
+ $ERROR('#1: p1 === "x1". Actual: p1 ==='+ p1 );
+}
+
+if(!(myObj.p1 === "a")){
+ $ERROR('#2: myObj.p1 === "a". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+
diff --git a/js/src/tests/test262/ch12/12.10/S12.10_A3.11_T2.js b/js/src/tests/test262/ch12/12.10/S12.10_A3.11_T2.js
new file mode 100644
index 000000000..81cdcc6af
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.10/S12.10_A3.11_T2.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.
+
+/**
+ * No matter how control leaves the embedded 'Statement',
+ * the scope chain is always restored to its former state
+ *
+ * @path ch12/12.10/S12.10_A3.11_T2.js
+ * @description Calling a function within "with" statement declared without the statement, leading to normal completion by "return"
+ * @noStrict
+ */
+
+this.p1 = 1;
+var result = "result";
+var value = "value";
+var myObj = {p1: 'a',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';}
+}
+
+var f = function(){
+ p1 = 'x1';
+ return value;
+}
+
+with(myObj){
+ result = f();
+}
+
+if(!(p1 === "x1")){
+ $ERROR('#1: p1 === "x1". Actual: p1 ==='+ p1 );
+}
+
+if(!(myObj.p1 === "a")){
+ $ERROR('#2: myObj.p1 === "a". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+
+if(!(result === "value")){
+ $ERROR('#3: result === "value". Actual: result ==='+ result );
+}
+
diff --git a/js/src/tests/test262/ch12/12.10/S12.10_A3.11_T3.js b/js/src/tests/test262/ch12/12.10/S12.10_A3.11_T3.js
new file mode 100644
index 000000000..35e24fee0
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.10/S12.10_A3.11_T3.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.
+
+/**
+ * No matter how control leaves the embedded 'Statement',
+ * the scope chain is always restored to its former state
+ *
+ * @path ch12/12.10/S12.10_A3.11_T3.js
+ * @description Calling a function within "with" statement declared without the statement, leading to normal completion by "return"
+ * @noStrict
+ */
+
+this.p1 = 1;
+var result = "result";
+var value = "value";
+var myObj = {p1: 'a',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';}
+}
+
+var f = function(){
+ return value;
+ p1 = 'x1';
+}
+
+with(myObj){
+ result = f();
+}
+
+if(!(p1 === 1)){
+ $ERROR('#1: p1 === 1. Actual: p1 ==='+ p1 );
+}
+
+if(!(myObj.p1 === "a")){
+ $ERROR('#2: myObj.p1 === "a". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+
+if(!(result === "value")){
+ $ERROR('#3: result === "value". Actual: result ==='+ result );
+}
+
+
diff --git a/js/src/tests/test262/ch12/12.10/S12.10_A3.11_T4.js b/js/src/tests/test262/ch12/12.10/S12.10_A3.11_T4.js
new file mode 100644
index 000000000..7056d6181
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.10/S12.10_A3.11_T4.js
@@ -0,0 +1,47 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * No matter how control leaves the embedded 'Statement',
+ * the scope chain is always restored to its former state
+ *
+ * @path ch12/12.10/S12.10_A3.11_T4.js
+ * @description Calling a function within "with" statement declared without the statement, leading to completion by exception
+ * @noStrict
+ */
+
+this.p1 = 1;
+var result = "result";
+var value = "value";
+var myObj = {p1: 'a',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';}
+}
+
+try {
+ var f = function(){
+ p1 = 'x1';
+ throw value;
+ }
+
+ with(myObj){
+ f();
+ }
+} catch(e){
+ result = e;
+}
+
+if(!(p1 === "x1")){
+ $ERROR('#1: p1 === "x1". Actual: p1 ==='+ p1 );
+}
+
+if(!(myObj.p1 === "a")){
+ $ERROR('#2: myObj.p1 === "a". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+
+if(!(result === "value")){
+ $ERROR('#3: result === "value". Actual: result ==='+ result );
+}
+
+
+
diff --git a/js/src/tests/test262/ch12/12.10/S12.10_A3.11_T5.js b/js/src/tests/test262/ch12/12.10/S12.10_A3.11_T5.js
new file mode 100644
index 000000000..ebce27c9f
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.10/S12.10_A3.11_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.
+
+/**
+ * No matter how control leaves the embedded 'Statement',
+ * the scope chain is always restored to its former state
+ *
+ * @path ch12/12.10/S12.10_A3.11_T5.js
+ * @description Calling a function within "with" statement declared without the statement, leading to completion by exception
+ * @noStrict
+ */
+
+this.p1 = 1;
+var result = "result";
+var value = "value";
+var myObj = {p1: 'a',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';}
+}
+
+try {
+ var f = function(){
+ throw value;
+ p1 = 'x1';
+ }
+ with(myObj){
+ f();
+ }
+} catch(e){
+ result = e;
+}
+
+if(!(p1 === 1)){
+ $ERROR('#1: p1 === 1. Actual: p1 ==='+ p1 );
+}
+
+if(!(myObj.p1 === "a")){
+ $ERROR('#2: myObj.p1 === "a". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+
+if(!(result === "value")){
+ $ERROR('#3: result === "value". Actual: result ==='+ result );
+}
+
+
diff --git a/js/src/tests/test262/ch12/12.10/S12.10_A3.12_T1.js b/js/src/tests/test262/ch12/12.10/S12.10_A3.12_T1.js
new file mode 100644
index 000000000..1ec9f7607
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.10/S12.10_A3.12_T1.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.
+
+/**
+ * No matter how control leaves the embedded 'Statement',
+ * the scope chain is always restored to its former state
+ *
+ * @path ch12/12.10/S12.10_A3.12_T1.js
+ * @description Calling a function without "with" statement declared within the statement, leading to normal completion
+ * @noStrict
+ */
+
+this.p1 = 1;
+var result = "result";
+var myObj = {p1: 'a',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';}
+}
+
+with(myObj){
+ var f = function(){
+ p1 = 'x1';
+ }
+}
+
+f();
+
+if(!(p1 === 1)){
+ $ERROR('#1: p1 === 1. Actual: p1 ==='+ p1 );
+}
+
+if(!(myObj.p1 === "x1")){
+ $ERROR('#2: myObj.p1 === "x1". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+
diff --git a/js/src/tests/test262/ch12/12.10/S12.10_A3.12_T2.js b/js/src/tests/test262/ch12/12.10/S12.10_A3.12_T2.js
new file mode 100644
index 000000000..171ef5808
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.10/S12.10_A3.12_T2.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.
+
+/**
+ * No matter how control leaves the embedded 'Statement',
+ * the scope chain is always restored to its former state
+ *
+ * @path ch12/12.10/S12.10_A3.12_T2.js
+ * @description Calling a function without "with" statement declared within the statement, leading to normal completion by "return"
+ * @noStrict
+ */
+
+this.p1 = 1;
+var result = "result";
+var value = "value";
+var myObj = {p1: 'a',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';}
+}
+
+with(myObj){
+ var f = function(){
+ p1 = 'x1'
+ return value;
+ }
+}
+
+result = f();
+
+if(!(p1 === 1)){
+ $ERROR('#1: p1 === 1. Actual: p1 ==='+ p1 );
+}
+
+if(!(myObj.p1 === "x1")){
+ $ERROR('#2: myObj.p1 === "x1". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+
+if(!(result === "myObj_value")){
+ $ERROR('#3: result === "myObj_value". Actual: result ==='+ result );
+}
+
diff --git a/js/src/tests/test262/ch12/12.10/S12.10_A3.12_T3.js b/js/src/tests/test262/ch12/12.10/S12.10_A3.12_T3.js
new file mode 100644
index 000000000..3cea6bc58
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.10/S12.10_A3.12_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.
+
+/**
+ * No matter how control leaves the embedded 'Statement',
+ * the scope chain is always restored to its former state
+ *
+ * @path ch12/12.10/S12.10_A3.12_T3.js
+ * @description Calling a function without "with" statement declared within the statement, leading to normal completion by "return"
+ * @noStrict
+ */
+
+this.p1 = 1;
+var result = "result";
+var value = "value";
+var myObj = {p1: 'a',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';}
+}
+
+with(myObj){
+ var f = function(){
+ return value;
+ p1 = 'x1';
+ }
+}
+result = f();
+
+if(!(p1 === 1)){
+ $ERROR('#1: p1 === 1. Actual: p1 ==='+ p1 );
+}
+
+if(!(myObj.p1 === "a")){
+ $ERROR('#2: myObj.p1 === "a". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+
+if(!(result === "myObj_value")){
+ $ERROR('#3: result === "myObj_value". Actual: result ==='+ result );
+}
+
diff --git a/js/src/tests/test262/ch12/12.10/S12.10_A3.12_T4.js b/js/src/tests/test262/ch12/12.10/S12.10_A3.12_T4.js
new file mode 100644
index 000000000..1049d25fe
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.10/S12.10_A3.12_T4.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.
+
+/**
+ * No matter how control leaves the embedded 'Statement',
+ * the scope chain is always restored to its former state
+ *
+ * @path ch12/12.10/S12.10_A3.12_T4.js
+ * @description Calling a function without "with" statement declared within the statement, leading to completion by exception
+ * @noStrict
+ */
+
+this.p1 = 1;
+var result = "result";
+var value = "value";
+var myObj = {p1: 'a',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';}
+}
+
+try {
+ with(myObj){
+ var f = function(){
+ p1 = 'x1';
+ throw value;
+ }
+ }
+ f();
+} catch(e){
+ result = e;
+}
+
+if(!(p1 === 1)){
+ $ERROR('#1: p1 === 1. Actual: p1 ==='+ p1 );
+}
+
+if(!(myObj.p1 === "x1")){
+ $ERROR('#2: myObj.p1 === "x1". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+
+if(!(result === "myObj_value")){
+ $ERROR('#3: result === "myObj_value". Actual: result ==='+ result );
+}
+
+
diff --git a/js/src/tests/test262/ch12/12.10/S12.10_A3.12_T5.js b/js/src/tests/test262/ch12/12.10/S12.10_A3.12_T5.js
new file mode 100644
index 000000000..9d3c9fed9
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.10/S12.10_A3.12_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.
+
+/**
+ * No matter how control leaves the embedded 'Statement',
+ * the scope chain is always restored to its former state
+ *
+ * @path ch12/12.10/S12.10_A3.12_T5.js
+ * @description Calling a function without "with" statement declared within the statement, leading to completion by exception
+ * @noStrict
+ */
+
+this.p1 = 1;
+var result = "result";
+var value = "value";
+var myObj = {p1: 'a',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';}
+}
+
+try {
+ with(myObj){
+ var f = function(){
+ throw value;
+ p1 = 'x1';
+ }
+ }
+ f();
+} catch(e){
+ result = e;
+}
+
+if(!(p1 === 1)){
+ $ERROR('#1: p1 === 1. Actual: p1 ==='+ p1 );
+}
+
+if(!(myObj.p1 === "a")){
+ $ERROR('#2: myObj.p1 === "a". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+
+if(!(result === "myObj_value")){
+ $ERROR('#3: result === "myObj_value". Actual: result ==='+ result );
+}
+
diff --git a/js/src/tests/test262/ch12/12.10/S12.10_A3.1_T1.js b/js/src/tests/test262/ch12/12.10/S12.10_A3.1_T1.js
new file mode 100644
index 000000000..58ee15b9c
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.10/S12.10_A3.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.
+
+/**
+ * No matter how control leaves the embedded 'Statement',
+ * the scope chain is always restored to its former state
+ *
+ * @path ch12/12.10/S12.10_A3.1_T1.js
+ * @description Using "with" statement within global context - normal completion
+ * @noStrict
+ */
+
+this.p1 = 1;
+
+var result = "result";
+
+var myObj = {
+ p1: 'a',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';}
+}
+
+
+with(myObj){
+ p1 = 'x1';
+}
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if(p1 !== 1){
+ $ERROR('#1: p1 === 1. Actual: p1 ==='+ p1 );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if(myObj.p1 !== "x1"){
+ $ERROR('#2: myObj.p1 === "x1". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+
+
diff --git a/js/src/tests/test262/ch12/12.10/S12.10_A3.1_T2.js b/js/src/tests/test262/ch12/12.10/S12.10_A3.1_T2.js
new file mode 100644
index 000000000..12b72b2c2
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.10/S12.10_A3.1_T2.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.
+
+/**
+ * No matter how control leaves the embedded 'Statement',
+ * the scope chain is always restored to its former state
+ *
+ * @path ch12/12.10/S12.10_A3.1_T2.js
+ * @description Using "with" statement within global context, leading to completion by exception
+ * @noStrict
+ */
+
+this.p1 = 1;
+
+var result = "result";
+
+var myObj = {
+ p1: 'a',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';}
+}
+
+try {
+
+ with(myObj){
+
+ p1 = 'x1'
+ throw value;
+
+ }
+} catch(e){
+ result = p1;
+}
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if(result !== 1){
+ $ERROR('#1: result === 1. Actual: result ==='+ result );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if(p1 !== 1){
+ $ERROR('#2: p1 === 1. Actual: p1 ==='+ p1 );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if (myObj.p1 !== "x1") {
+ $ERROR('#3: myObj.p1 === "x1". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch12/12.10/S12.10_A3.1_T3.js b/js/src/tests/test262/ch12/12.10/S12.10_A3.1_T3.js
new file mode 100644
index 000000000..f78052019
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.10/S12.10_A3.1_T3.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.
+
+/**
+ * No matter how control leaves the embedded 'Statement',
+ * the scope chain is always restored to its former state
+ *
+ * @path ch12/12.10/S12.10_A3.1_T3.js
+ * @description Using "with" statement within global context, leading to completion by exception
+ * @noStrict
+ */
+
+this.p1 = 1;
+var result = "result";
+var myObj = {p1: 'a',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';}
+}
+
+try {
+
+ with(myObj){
+
+ throw value;
+ p1 = 'x1'
+ }
+} catch(e){
+ result = p1;
+}
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if(!(result === 1)){
+ $ERROR('#1: result === 1. Actual: result ==='+ result );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if(!(p1 === 1)){
+ $ERROR('#2: p1 === 1. Actual: p1 ==='+ p1 );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if(!(myObj.p1 === "a")){
+ $ERROR('#3: myObj.p1 === "a". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+
+
+
+
diff --git a/js/src/tests/test262/ch12/12.10/S12.10_A3.2_T1.js b/js/src/tests/test262/ch12/12.10/S12.10_A3.2_T1.js
new file mode 100644
index 000000000..0d3e11beb
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.10/S12.10_A3.2_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.
+
+/**
+ * No matter how control leaves the embedded 'Statement',
+ * the scope chain is always restored to its former state
+ *
+ * @path ch12/12.10/S12.10_A3.2_T1.js
+ * @description Declaring "with" statement within a function body, leading to normal completion
+ * @noStrict
+ */
+
+this.p1 = 1;
+
+var result = "result";
+
+var myObj = {
+ p1: 'a',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';}
+}
+
+var f = function(){
+ with(myObj){
+ p1 = 'x1';
+ }
+}
+
+f();
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if(p1 !== 1){
+ $ERROR('#1: p1 === 1. Actual: p1 ==='+ p1 );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if(myObj.p1 !== "x1"){
+ $ERROR('#2: myObj.p1 === "x1". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch12/12.10/S12.10_A3.2_T2.js b/js/src/tests/test262/ch12/12.10/S12.10_A3.2_T2.js
new file mode 100644
index 000000000..2ef4889d4
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.10/S12.10_A3.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.
+
+/**
+ * No matter how control leaves the embedded 'Statement',
+ * the scope chain is always restored to its former state
+ *
+ * @path ch12/12.10/S12.10_A3.2_T2.js
+ * @description Declaring "with" statement within a function body, leading to normal completion by "return"
+ * @noStrict
+ */
+
+this.p1 = 1;
+
+var result = "result";
+
+var myObj = {
+ p1: 'a',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';}
+}
+
+var f = function(){
+ with(myObj){
+ p1 = 'x1';
+ return value;
+ }
+};
+
+f();
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if(p1 !== 1){
+ $ERROR('#1: p1 === 1. Actual: p1 ==='+ p1 );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if(myObj.p1 !== "x1"){
+ $ERROR('#1: myObj.p1 === "x1". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+
+
diff --git a/js/src/tests/test262/ch12/12.10/S12.10_A3.2_T3.js b/js/src/tests/test262/ch12/12.10/S12.10_A3.2_T3.js
new file mode 100644
index 000000000..8f46552e7
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.10/S12.10_A3.2_T3.js
@@ -0,0 +1,47 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * No matter how control leaves the embedded 'Statement',
+ * the scope chain is always restored to its former state
+ *
+ * @path ch12/12.10/S12.10_A3.2_T3.js
+ * @description Declaring "with" statement within a function body, leading to normal completion by "return"
+ * @noStrict
+ */
+
+this.p1 = 1;
+
+var result = "result";
+
+var myObj = {
+ p1: 'a',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';}
+}
+
+var f = function(){
+ with(myObj){
+ return value;
+ p1 = 'x1';
+ }
+};
+
+f();
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if(p1 !== 1){
+ $ERROR('#1: p1 === 1. Actual: p1 ==='+ p1 );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if(myObj.p1 !== "a"){
+ $ERROR('#2: myObj.p1 === "a". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch12/12.10/S12.10_A3.2_T4.js b/js/src/tests/test262/ch12/12.10/S12.10_A3.2_T4.js
new file mode 100644
index 000000000..3c5598088
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.10/S12.10_A3.2_T4.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.
+
+/**
+ * No matter how control leaves the embedded 'Statement',
+ * the scope chain is always restored to its former state
+ *
+ * @path ch12/12.10/S12.10_A3.2_T4.js
+ * @description Declaring "with" statement within a function body, leading to completion by exception
+ * @noStrict
+ */
+
+this.p1 = 1;
+
+var result = "result";
+
+var myObj = {
+ p1: 'a',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';}
+}
+
+try {
+ var f = function(){
+ with(myObj){
+ p1 = 'x1';
+ throw value;
+ }
+ };
+
+ f();
+} catch(e){
+ result = p1;
+}
+
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if(result !== 1){
+ $ERROR('#1: result === 1. Actual: result ==='+ result );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if(p1 !== 1){
+ $ERROR('#2: p1 === 1. Actual: p1 ==='+ p1 );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if(myObj.p1 !== "x1"){
+ $ERROR('#3: myObj.p1 === "x1". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch12/12.10/S12.10_A3.2_T5.js b/js/src/tests/test262/ch12/12.10/S12.10_A3.2_T5.js
new file mode 100644
index 000000000..61d86905a
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.10/S12.10_A3.2_T5.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.
+
+/**
+ * No matter how control leaves the embedded 'Statement',
+ * the scope chain is always restored to its former state
+ *
+ * @path ch12/12.10/S12.10_A3.2_T5.js
+ * @description Declaring "with" statement within a function body, leading to completion by exception
+ * @noStrict
+ */
+
+this.p1 = 1;
+
+var result = "result";
+
+var myObj = {
+ p1: 'a',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';}
+};
+
+try {
+ var f = function(){
+ with(myObj){
+ throw value;
+ p1 = 'x1';
+ }
+ };
+ f();
+} catch(e){
+ result = p1;
+}
+
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if(result !== 1){
+ $ERROR('#1: result === 1. Actual: result ==='+ result );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if(p1 !== 1){
+ $ERROR('#2: p1 === 1. Actual: p1 ==='+ p1 );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if(myObj.p1 !== "a"){
+ $ERROR('#3: myObj.p1 === "a". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+
+
+
+
diff --git a/js/src/tests/test262/ch12/12.10/S12.10_A3.3_T1.js b/js/src/tests/test262/ch12/12.10/S12.10_A3.3_T1.js
new file mode 100644
index 000000000..27a310837
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.10/S12.10_A3.3_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.
+
+/**
+ * No matter how control leaves the embedded 'Statement',
+ * the scope chain is always restored to its former state
+ *
+ * @path ch12/12.10/S12.10_A3.3_T1.js
+ * @description Declaring "with" statement within a function constructor, leading to normal completion
+ * @noStrict
+ */
+
+this.p1 = 1;
+
+var result = "result";
+
+var myObj = {
+ p1: 'a',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';}
+}
+
+function __FACTORY(){
+ with(myObj){
+ p1 = 'x1';
+ }
+}
+
+var obj = new __FACTORY();
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if(p1 !== 1){
+ $ERROR('#1: p1 === 1. Actual: p1 ==='+ p1 );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if(myObj.p1 !== "x1"){
+ $ERROR('#2: myObj.p1 === "x1". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+
+
diff --git a/js/src/tests/test262/ch12/12.10/S12.10_A3.3_T2.js b/js/src/tests/test262/ch12/12.10/S12.10_A3.3_T2.js
new file mode 100644
index 000000000..de6faab31
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.10/S12.10_A3.3_T2.js
@@ -0,0 +1,47 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * No matter how control leaves the embedded 'Statement',
+ * the scope chain is always restored to its former state
+ *
+ * @path ch12/12.10/S12.10_A3.3_T2.js
+ * @description Declaring "with" statement within a function constructor, leading to normal completion by "return"
+ * @noStrict
+ */
+
+this.p1 = 1;
+
+var result = "result";
+
+var myObj = {
+ p1: 'a',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';}
+}
+
+function __FACTORY(){
+ with(myObj){
+ p1 = 'x1';
+ return value;
+ }
+}
+
+var obj = new __FACTORY;
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if(p1 !== 1){
+ $ERROR('#1: p1 === 1. Actual: p1 ==='+ p1 );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if(myObj.p1 !== "x1"){
+ $ERROR('#2: myObj.p1 === "x1". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch12/12.10/S12.10_A3.3_T3.js b/js/src/tests/test262/ch12/12.10/S12.10_A3.3_T3.js
new file mode 100644
index 000000000..4a981756a
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.10/S12.10_A3.3_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.
+
+/**
+ * No matter how control leaves the embedded 'Statement',
+ * the scope chain is always restored to its former state
+ *
+ * @path ch12/12.10/S12.10_A3.3_T3.js
+ * @description Declaring "with" statement within a function constructor, leading to normal completion by "return"
+ * @noStrict
+ */
+
+this.p1 = 1;
+
+var result = "result";
+
+var myObj = {
+ p1: 'a',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';}
+}
+
+function __FACTORY(){
+ with(myObj){
+ return value;
+ p1 = 'x1';
+ }
+}
+
+var obj = new __FACTORY;
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if(p1 !== 1){
+ $ERROR('#1: p1 === 1. Actual: p1 ==='+ p1 );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if(myObj.p1 !== "a"){
+ $ERROR('#2: myObj.p1 === "a". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+
+
diff --git a/js/src/tests/test262/ch12/12.10/S12.10_A3.3_T4.js b/js/src/tests/test262/ch12/12.10/S12.10_A3.3_T4.js
new file mode 100644
index 000000000..3eeb2ed5e
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.10/S12.10_A3.3_T4.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.
+
+/**
+ * No matter how control leaves the embedded 'Statement', the scope chain is always restored to its former state
+ *
+ * @path ch12/12.10/S12.10_A3.3_T4.js
+ * @description Declaring "with" statement within a function constructor, leading to completion by exception
+ * @noStrict
+ */
+
+this.p1 = 1;
+
+var result = "result";
+
+var myObj = {
+ p1: 'a',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';}
+};
+
+function __FACTORY(){
+ with(myObj){
+ var p1 = 'x1';
+ throw value;
+ }
+}
+
+try {
+ var obj = new __FACTORY();
+} catch(e){
+ result = p1;
+}
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (result !== 1) {
+ $ERROR('#1: result === 1. Actual: result ==='+ result );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (p1 !== 1) {
+ $ERROR('#2: p1 === 1. Actual: p1 ==='+ p1 );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if (myObj.p1 !== "x1") {
+ $ERROR('#3: myObj.p1 === "x1". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch12/12.10/S12.10_A3.4_T1.js b/js/src/tests/test262/ch12/12.10/S12.10_A3.4_T1.js
new file mode 100644
index 000000000..1ef21667b
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.10/S12.10_A3.4_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.
+
+/**
+ * No matter how control leaves the embedded 'Statement',
+ * the scope chain is always restored to its former state
+ *
+ * @path ch12/12.10/S12.10_A3.4_T1.js
+ * @description Using "with" statement within iteration statement, leading to normal completion
+ * @noStrict
+ */
+
+this.p1 = 1;
+
+var result = "result";
+
+var myObj = {
+ p1: 'a',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';}
+}
+
+do {
+ with(myObj){
+ p1 = 'x1';
+ }
+} while(false);
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if(p1 !== 1){
+ $ERROR('#1: p1 === 1. Actual: p1 ==='+ p1 );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if(myObj.p1 !== "x1"){
+ $ERROR('#2: myObj.p1 === "x1". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+
+
diff --git a/js/src/tests/test262/ch12/12.10/S12.10_A3.4_T2.js b/js/src/tests/test262/ch12/12.10/S12.10_A3.4_T2.js
new file mode 100644
index 000000000..801c592aa
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.10/S12.10_A3.4_T2.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.
+
+/**
+ * No matter how control leaves the embedded 'Statement',
+ * the scope chain is always restored to its former state
+ *
+ * @path ch12/12.10/S12.10_A3.4_T2.js
+ * @description Using "with" statement within iteration statement, leading to completion by exception
+ * @noStrict
+ */
+
+this.p1 = 1;
+
+var result = "result";
+
+var myObj = {
+ p1: 'a',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';}
+}
+
+try {
+ do{
+ with(myObj){
+ p1 = 'x1';
+ throw value;
+ }
+ } while(false);
+} catch(e){
+ result = p1;
+}
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if(result !== 1){
+ $ERROR('#1: result === 1. Actual: result ==='+ result );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if(p1 !== 1){
+ $ERROR('#2: p1 === 1. Actual: p1 ==='+ p1 );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if(myObj.p1 !== "x1"){
+ $ERROR('#3: myObj.p1 === "x1". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch12/12.10/S12.10_A3.4_T3.js b/js/src/tests/test262/ch12/12.10/S12.10_A3.4_T3.js
new file mode 100644
index 000000000..56698024e
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.10/S12.10_A3.4_T3.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.
+
+/**
+ * No matter how control leaves the embedded 'Statement',
+ * the scope chain is always restored to its former state
+ *
+ * @path ch12/12.10/S12.10_A3.4_T3.js
+ * @description Using "with" statement within iteration statement, leading to completion by exception
+ * @noStrict
+ */
+
+this.p1 = 1;
+
+var result = "result";
+
+var myObj = {
+ p1: 'a',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';}
+}
+
+try {
+ do{
+ with(myObj){
+ throw value;
+ p1 = 'x1';
+ }
+ } while(false);
+} catch(e){
+ result = p1;
+}
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if(result !== 1){
+ $ERROR('#1: result === 1. Actual: result ==='+ result );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if(p1 !== 1){
+ $ERROR('#2: p1 === 1. Actual: p1 ==='+ p1 );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if(myObj.p1 !== "a"){
+ $ERROR('#3: myObj.p1 === "a". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch12/12.10/S12.10_A3.4_T4.js b/js/src/tests/test262/ch12/12.10/S12.10_A3.4_T4.js
new file mode 100644
index 000000000..557666a9c
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.10/S12.10_A3.4_T4.js
@@ -0,0 +1,47 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * No matter how control leaves the embedded 'Statement',
+ * the scope chain is always restored to its former state
+ *
+ * @path ch12/12.10/S12.10_A3.4_T4.js
+ * @description Using "with" statement within iteration statement, leading to completion by break
+ * @noStrict
+ */
+
+this.p1 = 1;
+
+var result = "result";
+
+var myObj = {
+ p1: 'a',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';}
+}
+
+do {
+ with(myObj){
+ p1 = 'x1';
+ break;
+ }
+} while(false);
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if(p1 !== 1){
+ $ERROR('#1: p1 === 1. Actual: p1 ==='+ p1 );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if(myObj.p1 !== "x1"){
+ $ERROR('#2: myObj.p1 === "x1". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+
+
diff --git a/js/src/tests/test262/ch12/12.10/S12.10_A3.4_T5.js b/js/src/tests/test262/ch12/12.10/S12.10_A3.4_T5.js
new file mode 100644
index 000000000..06816be05
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.10/S12.10_A3.4_T5.js
@@ -0,0 +1,47 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * No matter how control leaves the embedded 'Statement',
+ * the scope chain is always restored to its former state
+ *
+ * @path ch12/12.10/S12.10_A3.4_T5.js
+ * @description Using "with" statement within iteration statement, leading to completion by break
+ * @noStrict
+ */
+
+this.p1 = 1;
+
+var result = "result";
+
+var myObj = {
+ p1: 'a',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';}
+}
+
+do {
+ with(myObj){
+ break;
+ p1 = 'x1';
+ }
+} while(false);
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if(p1 !== 1){
+ $ERROR('#1: p1 === 1. Actual: p1 ==='+ p1 );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if(myObj.p1 !== "a"){
+ $ERROR('#2: myObj.p1 === "a". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+
+
diff --git a/js/src/tests/test262/ch12/12.10/S12.10_A3.5_T1.js b/js/src/tests/test262/ch12/12.10/S12.10_A3.5_T1.js
new file mode 100644
index 000000000..b49962dc1
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.10/S12.10_A3.5_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.
+
+/**
+ * No matter how control leaves the embedded 'Statement',
+ * the scope chain is always restored to its former state
+ *
+ * @path ch12/12.10/S12.10_A3.5_T1.js
+ * @description Using "with" statement within "for-in" statement, leading to normal completion
+ * @noStrict
+ */
+
+this.p1 = 1;
+
+var result = "result";
+
+var myObj = {
+ p1: 'a',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';}
+}
+
+for(var prop in myObj){
+ with(myObj){
+ p1 = 'x1';
+ }
+}
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if(p1 !== 1){
+ $ERROR('#1: p1 === 1. Actual: p1 ==='+ p1 );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if(myObj.p1 !== "x1"){
+ $ERROR('#2: myObj.p1 === "x1". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch12/12.10/S12.10_A3.5_T2.js b/js/src/tests/test262/ch12/12.10/S12.10_A3.5_T2.js
new file mode 100644
index 000000000..e1ec1d611
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.10/S12.10_A3.5_T2.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.
+
+/**
+ * No matter how control leaves the embedded 'Statement',
+ * the scope chain is always restored to its former state
+ *
+ * @path ch12/12.10/S12.10_A3.5_T2.js
+ * @description Using "with" statement within "for-in" statement, leading to completion by exception
+ * @noStrict
+ */
+
+this.p1 = 1;
+
+var result = "result";
+
+var myObj = {
+ p1: 'a',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';}
+}
+
+try {
+ for(var prop in myObj){
+ with(myObj){
+ p1 = 'x1';
+ throw value;
+ }
+ }
+} catch(e){
+ result = p1;
+}
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if(result !== 1){
+ $ERROR('#1: result === 1. Actual: result ==='+ result );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if(p1 !== 1){
+ $ERROR('#2: p1 === 1. Actual: p1 ==='+ p1 );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if(myObj.p1 !== "x1"){
+ $ERROR('#3: myObj.p1 === "x1". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch12/12.10/S12.10_A3.5_T3.js b/js/src/tests/test262/ch12/12.10/S12.10_A3.5_T3.js
new file mode 100644
index 000000000..d85bca3bf
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.10/S12.10_A3.5_T3.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.
+
+/**
+ * No matter how control leaves the embedded 'Statement',
+ * the scope chain is always restored to its former state
+ *
+ * @path ch12/12.10/S12.10_A3.5_T3.js
+ * @description Using "with" statement within "for-in" statement, leading to completion by exception
+ * @noStrict
+ */
+
+this.p1 = 1;
+
+var result = "result";
+
+var myObj = {
+ p1: 'a',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';}
+}
+
+try {
+ for(var prop in myObj){
+ with(myObj){
+ throw value;
+ p1 = 'x1';
+ }
+ }
+} catch(e){
+ result = p1;
+}
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if(result !== 1){
+ $ERROR('#1: result === 1. Actual: result ==='+ result );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if(p1 !== 1){
+ $ERROR('#2: p1 === 1. Actual: p1 ==='+ p1 );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if(myObj.p1 !== "a"){
+ $ERROR('#3: myObj.p1 === "a". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch12/12.10/S12.10_A3.5_T4.js b/js/src/tests/test262/ch12/12.10/S12.10_A3.5_T4.js
new file mode 100644
index 000000000..f85657a82
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.10/S12.10_A3.5_T4.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.
+
+/**
+ * No matter how control leaves the embedded 'Statement',
+ * the scope chain is always restored to its former state
+ *
+ * @path ch12/12.10/S12.10_A3.5_T4.js
+ * @description Using "with" statement within "for-in" statement, leading to completion by break
+ * @noStrict
+ */
+
+this.p1 = 1;
+
+var result = "result";
+
+var myObj = {
+ p1: 'a',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';}
+}
+
+for(var prop in myObj){
+ with(myObj){
+ p1 = 'x1';
+ break;
+ }
+}
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if(p1 !== 1){
+ $ERROR('#1: p1 === 1. Actual: p1 ==='+ p1 );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if(myObj.p1 !== "x1"){
+ $ERROR('#2: myObj.p1 === "x1". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch12/12.10/S12.10_A3.5_T5.js b/js/src/tests/test262/ch12/12.10/S12.10_A3.5_T5.js
new file mode 100644
index 000000000..78b526fc3
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.10/S12.10_A3.5_T5.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.
+
+/**
+ * No matter how control leaves the embedded 'Statement',
+ * the scope chain is always restored to its former state
+ *
+ * @path ch12/12.10/S12.10_A3.5_T5.js
+ * @description Using "with" statement within "for-in" statement, leading to completion by break
+ * @noStrict
+ */
+
+this.p1 = 1;
+
+var result = "result";
+
+var myObj = {
+ p1: 'a',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';}
+}
+
+for(var prop in myObj){
+ with(myObj){
+ break;
+ p1 = 'x1';
+ }
+}
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if(p1 !== 1){
+ $ERROR('#1: p1 === 1. Actual: p1 ==='+ p1 );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if(myObj.p1 !== "a"){
+ $ERROR('#1: myObj.p1 === "a". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+
+
+
diff --git a/js/src/tests/test262/ch12/12.10/S12.10_A3.6_T1.js b/js/src/tests/test262/ch12/12.10/S12.10_A3.6_T1.js
new file mode 100644
index 000000000..4042e9b71
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.10/S12.10_A3.6_T1.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.
+
+/**
+ * No matter how control leaves the embedded 'Statement',
+ * the scope chain is always restored to its former state
+ *
+ * @path ch12/12.10/S12.10_A3.6_T1.js
+ * @description Using "with" statement within another "with" statement, leading to normal completion
+ * @noStrict
+ */
+
+this.p1 = 1;
+
+var result = "result";
+
+var myObj = {
+ p1: 'a',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';}
+}
+
+var theirObj = {
+ p1: true,
+ value: 'theirObj_value',
+ valueOf : function(){return 'thr_valueOf';}
+}
+
+with(myObj){
+ with(theirObj){
+ p1 = 'x1';
+ }
+}
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if(p1 !== 1){
+ $ERROR('#1: p1 === 1. Actual: p1 ==='+ p1 );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if(myObj.p1 !== "a"){
+ $ERROR('#2: myObj.p1 === "a". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if(theirObj.p1 !== "x1"){
+ $ERROR('#3: theirObj.p1 === "x1". Actual: theirObj.p1 ==='+ theirObj.p1 );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+
+
diff --git a/js/src/tests/test262/ch12/12.10/S12.10_A3.6_T2.js b/js/src/tests/test262/ch12/12.10/S12.10_A3.6_T2.js
new file mode 100644
index 000000000..db1d04dfb
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.10/S12.10_A3.6_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.
+
+/**
+ * No matter how control leaves the embedded 'Statement',
+ * the scope chain is always restored to its former state
+ *
+ * @path ch12/12.10/S12.10_A3.6_T2.js
+ * @description Using "with" statement within another "with" statement, leading to completion by exception
+ * @noStrict
+ */
+
+this.p1 = 1;
+
+var result = "result";
+
+var myObj = {
+ p1: 'a',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';}
+}
+
+var theirObj = {
+ p1: true,
+ value: 'theirObj_value',
+ valueOf : function(){return 'thr_valueOf';}
+}
+
+
+try {
+ with(myObj){
+ with(theirObj){
+ p1 = 'x1';
+ throw value;
+ }
+ }
+} catch(e){
+ result = p1;
+}
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if(p1 !== 1){
+ $ERROR('#1: p1 === 1. Actual: p1 ==='+ p1 );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if(myObj.p1 !== "a"){
+ $ERROR('#2: myObj.p1 === "a". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if(theirObj.p1 !== "x1"){
+ $ERROR('#3: theirObj.p1 === "x1". Actual: theirObj.p1 ==='+ theirObj.p1 );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+
diff --git a/js/src/tests/test262/ch12/12.10/S12.10_A3.6_T3.js b/js/src/tests/test262/ch12/12.10/S12.10_A3.6_T3.js
new file mode 100644
index 000000000..ade4cdc5f
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.10/S12.10_A3.6_T3.js
@@ -0,0 +1,66 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * No matter how control leaves the embedded 'Statement',
+ * the scope chain is always restored to its former state
+ *
+ * @path ch12/12.10/S12.10_A3.6_T3.js
+ * @description Using "with" statement within another "with" statement, leading to completion by exception
+ * @noStrict
+ */
+
+this.p1 = 1;
+
+var result = "result";
+
+var myObj = {
+ p1: 'a',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';}
+}
+
+var theirObj = {
+ p1: true,
+ value: 'theirObj_value',
+ valueOf : function(){return 'thr_valueOf';}
+}
+
+
+try {
+ with(myObj){
+ with(theirObj){
+ throw value;
+ p1 = 'x1';
+
+ }
+ }
+} catch(e){
+ result = p1;
+}
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if(p1 !== 1){
+ $ERROR('#1: p1 === 1. Actual: p1 ==='+ p1 );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if(myObj.p1 !== "a"){
+ $ERROR('#2: myObj.p1 === "a". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if(theirObj.p1 !== true){
+ $ERROR('#3: theirObj.p1 === true. Actual: theirObj.p1 ==='+ theirObj.p1 );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+
diff --git a/js/src/tests/test262/ch12/12.10/S12.10_A3.7_T1.js b/js/src/tests/test262/ch12/12.10/S12.10_A3.7_T1.js
new file mode 100644
index 000000000..b24f131a4
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.10/S12.10_A3.7_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.
+
+/**
+ * No matter how control leaves the embedded 'Statement',
+ * the scope chain is always restored to its former state
+ *
+ * @path ch12/12.10/S12.10_A3.7_T1.js
+ * @description Declaring and calling a function within "with" statement, leading to normal completion
+ * @noStrict
+ */
+
+this.p1 = 1;
+
+var result = "result";
+
+var myObj = {
+ p1: 'a',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';}
+}
+
+with(myObj){
+ (function(){
+ p1 = 'x1';
+ })();
+}
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if(p1 !== 1){
+ $ERROR('#1: p1 === 1. Actual: p1 ==='+ p1 );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if(myObj.p1 !== "x1"){
+ $ERROR('#2: myObj.p1 === "x1". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+
+
diff --git a/js/src/tests/test262/ch12/12.10/S12.10_A3.7_T2.js b/js/src/tests/test262/ch12/12.10/S12.10_A3.7_T2.js
new file mode 100644
index 000000000..7494fa7f3
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.10/S12.10_A3.7_T2.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.
+
+/**
+ * No matter how control leaves the embedded 'Statement',
+ * the scope chain is always restored to its former state
+ *
+ * @path ch12/12.10/S12.10_A3.7_T2.js
+ * @description Declaring and calling a function within "with" statement, leading to normal completion by "return"
+ * @noStrict
+ */
+
+this.p1 = 1;
+
+var result = "result";
+
+var myObj = {
+ p1: 'a',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';}
+}
+
+with(myObj){
+ result=(function(){
+ p1 = 'x1';
+ return value;
+ })();
+}
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if(p1 !== 1){
+ $ERROR('#1: p1 === 1. Actual: p1 ==='+ p1 );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if(result !== "myObj_value"){
+ $ERROR('#2: result === "myObj_value". Actual: result ==='+ result );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if(myObj.p1 !== "x1"){
+ $ERROR('#3: myObj.p1 === "x1". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+
+
diff --git a/js/src/tests/test262/ch12/12.10/S12.10_A3.7_T3.js b/js/src/tests/test262/ch12/12.10/S12.10_A3.7_T3.js
new file mode 100644
index 000000000..d3b72e03d
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.10/S12.10_A3.7_T3.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.
+
+/**
+ * No matter how control leaves the embedded 'Statement',
+ * the scope chain is always restored to its former state
+ *
+ * @path ch12/12.10/S12.10_A3.7_T3.js
+ * @description Declaring and calling a function within "with" statement, leading to normal completion by "return"
+ * @noStrict
+ */
+
+this.p1 = 1;
+
+var result = "result";
+
+var myObj = {
+ p1: 'a',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';}
+}
+
+with(myObj){
+ result=(function(){
+ return value;
+ p1 = 'x1';
+ })();
+}
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if(p1 !== 1){
+ $ERROR('#1: p1 === 1. Actual: p1 ==='+ p1 );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if(result !== 'myObj_value'){
+ $ERROR('#2: result === \'myObj_value\'. Actual: result ==='+ result );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if(myObj.p1 !== "a"){
+ $ERROR('#3: myObj.p1 === "a". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch12/12.10/S12.10_A3.7_T4.js b/js/src/tests/test262/ch12/12.10/S12.10_A3.7_T4.js
new file mode 100644
index 000000000..cd97c3c1b
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.10/S12.10_A3.7_T4.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.
+
+/**
+ * No matter how control leaves the embedded 'Statement',
+ * the scope chain is always restored to its former state
+ *
+ * @path ch12/12.10/S12.10_A3.7_T4.js
+ * @description Declaring and calling a function within "with" statement, leading to completion by exception
+ * @noStrict
+ */
+
+this.p1 = 1;
+
+var result = "result";
+
+var myObj = {
+ p1: 'a',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';}
+}
+
+try {
+ with(myObj){
+ (function (){
+ p1 = 'x1';
+ throw value;
+ })();
+ }
+} catch(e){
+ result = p1;
+}
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if(result !== 1){
+ $ERROR('#1: result === 1. Actual: result ==='+ result );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if(p1 !== 1){
+ $ERROR('#2: p1 === 1. Actual: p1 ==='+ p1 );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if(myObj.p1 !== "x1"){
+ $ERROR('#3: myObj.p1 === "x1". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch12/12.10/S12.10_A3.7_T5.js b/js/src/tests/test262/ch12/12.10/S12.10_A3.7_T5.js
new file mode 100644
index 000000000..c0d9d84a2
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.10/S12.10_A3.7_T5.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.
+
+/**
+ * No matter how control leaves the embedded 'Statement',
+ * the scope chain is always restored to its former state
+ *
+ * @path ch12/12.10/S12.10_A3.7_T5.js
+ * @description Declaring and calling a function within "with" statement, leading to completion by exception
+ * @noStrict
+ */
+
+this.p1 = 1;
+
+var result = "result";
+
+var myObj = {
+ p1: 'a',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';}
+}
+
+try {
+ with(myObj){
+ (function f(){
+ throw value;
+ p1 = 'x1';
+ })();
+ }
+} catch(e){
+ result = p1;
+}
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if(result !== 1){
+ $ERROR('#1: result === 1. Actual: result ==='+ result );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if(p1 !== 1){
+ $ERROR('#2: p1 === 1. Actual: p1 ==='+ p1 );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if(myObj.p1 !== "a"){
+ $ERROR('#3: myObj.p1 === "a". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch12/12.10/S12.10_A3.8_T1.js b/js/src/tests/test262/ch12/12.10/S12.10_A3.8_T1.js
new file mode 100644
index 000000000..efe008e85
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.10/S12.10_A3.8_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.
+
+/**
+ * No matter how control leaves the embedded 'Statement',
+ * the scope chain is always restored to its former state
+ *
+ * @path ch12/12.10/S12.10_A3.8_T1.js
+ * @description Declaring function constructor within "with" statement, leading to normal completion
+ * @noStrict
+ */
+
+this.p1 = 1;
+
+var result = "result";
+
+var myObj = {
+ p1: 'a',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';}
+}
+
+with(myObj){
+ var __FACTORY = function(){
+ p1 = 'x1';
+ }
+ var obj = new __FACTORY;
+}
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if(p1 !== 1){
+ $ERROR('#1: p1 === 1. Actual: p1 ==='+ p1 );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if(myObj.p1 !== "x1"){
+ $ERROR('#2: myObj.p1 === "x1". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch12/12.10/S12.10_A3.8_T2.js b/js/src/tests/test262/ch12/12.10/S12.10_A3.8_T2.js
new file mode 100644
index 000000000..948270d0f
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.10/S12.10_A3.8_T2.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.
+
+/**
+ * No matter how control leaves the embedded 'Statement',
+ * the scope chain is always restored to its former state
+ *
+ * @path ch12/12.10/S12.10_A3.8_T2.js
+ * @description Declaring function constructor within "with" statement, leading to normal completion by "return"
+ * @noStrict
+ */
+
+this.p1 = 1;
+
+var result = "result";
+
+var myObj = {
+ p1: 'a',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';}
+}
+
+with(myObj){
+ var __FACTORY = function(){
+ p1 = 'x1';
+ return value;
+ }
+ var obj = new __FACTORY;
+}
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if(p1 !== 1){
+ $ERROR('#1: p1 === 1. Actual: p1 ==='+ p1 );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if(myObj.p1 !== "x1"){
+ $ERROR('#2: myObj.p1 === "x1". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch12/12.10/S12.10_A3.8_T3.js b/js/src/tests/test262/ch12/12.10/S12.10_A3.8_T3.js
new file mode 100644
index 000000000..f104c10f3
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.10/S12.10_A3.8_T3.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.
+
+/**
+ * No matter how control leaves the embedded 'Statement',
+ * the scope chain is always restored to its former state
+ *
+ * @path ch12/12.10/S12.10_A3.8_T3.js
+ * @description Declaring function constructor within "with" statement, leading to normal completion by "return"
+ * @noStrict
+ */
+
+this.p1 = 1;
+
+var result = "result";
+
+var myObj = {
+ p1: 'a',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';}
+}
+
+with(myObj){
+ var __FACTORY = function(){
+ return value;
+ p1 = 'x1';
+ }
+ var obj = new __FACTORY;
+}
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if(p1 !== 1){
+ $ERROR('#1: p1 === 1. Actual: p1 ==='+ p1 );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if(myObj.p1 !== "a"){
+ $ERROR('#2: myObj.p1 === "a". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch12/12.10/S12.10_A3.8_T4.js b/js/src/tests/test262/ch12/12.10/S12.10_A3.8_T4.js
new file mode 100644
index 000000000..2f034a106
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.10/S12.10_A3.8_T4.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.
+
+/**
+ * No matter how control leaves the embedded 'Statement',
+ * the scope chain is always restored to its former state
+ *
+ * @path ch12/12.10/S12.10_A3.8_T4.js
+ * @description Declaring function constructor within "with" statement, leading to completion by exception
+ * @noStrict
+ */
+
+this.p1 = 1;
+
+var result = "result";
+
+var myObj = {
+ p1: 'a',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';}
+}
+
+try {
+ with(myObj){
+ var __FACTORY = function(){
+ p1 = 'x1';
+ throw value;
+ }
+ var obj = new __FACTORY;
+ }
+} catch(e){
+ result = p1;
+}
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if(result !== 1){
+ $ERROR('#1: result === 1. Actual: result ==='+ result );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if(p1 !== 1){
+ $ERROR('#2: p1 === 1. Actual: p1 ==='+ p1 );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if(myObj.p1 !== "x1"){
+ $ERROR('#3: myObj.p1 === "x1". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch12/12.10/S12.10_A3.8_T5.js b/js/src/tests/test262/ch12/12.10/S12.10_A3.8_T5.js
new file mode 100644
index 000000000..7484ca06a
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.10/S12.10_A3.8_T5.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.
+
+/**
+ * No matter how control leaves the embedded 'Statement',
+ * the scope chain is always restored to its former state
+ *
+ * @path ch12/12.10/S12.10_A3.8_T5.js
+ * @description Declaring function constructor within "with" statement, leading to completion by exception
+ * @noStrict
+ */
+
+this.p1 = 1;
+
+var result = "result";
+
+var myObj = {
+ p1: 'a',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';}
+}
+
+try {
+ with(myObj){
+ var __FACTORY = function(){
+ throw value;
+ p1 = 'x1';
+ }
+ var obj = new __FACTORY;
+ }
+} catch(e){
+ result = p1;
+}
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if(result !== 1){
+ $ERROR('#1: result === 1. Actual: result ==='+ result );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if(p1 !== 1){
+ $ERROR('#2: p1 === 1. Actual: p1 ==='+ p1 );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if(myObj.p1 !== "a"){
+ $ERROR('#3: myObj.p1 === "a". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch12/12.10/S12.10_A3.9_T1.js b/js/src/tests/test262/ch12/12.10/S12.10_A3.9_T1.js
new file mode 100644
index 000000000..f54c2087b
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.10/S12.10_A3.9_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.
+
+/**
+ * No matter how control leaves the embedded 'Statement',
+ * the scope chain is always restored to its former state
+ *
+ * @path ch12/12.10/S12.10_A3.9_T1.js
+ * @description Using "for-in" statement within "with" statement, leading to normal completion
+ * @noStrict
+ */
+
+this.p1 = 1;
+
+var result = "result";
+
+var myObj = {
+ p1: 'a',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';}
+}
+
+with(myObj){
+ for(var prop in myObj){
+ p1 = 'x1';
+ }
+}
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if(p1 !== 1){
+ $ERROR('#1: p1 === 1. Actual: p1 ==='+ p1 );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if(myObj.p1 !== "x1"){
+ $ERROR('#2: myObj.p1 === "x1". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+
+
diff --git a/js/src/tests/test262/ch12/12.10/S12.10_A3.9_T2.js b/js/src/tests/test262/ch12/12.10/S12.10_A3.9_T2.js
new file mode 100644
index 000000000..a1bb6dfe9
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.10/S12.10_A3.9_T2.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.
+
+/**
+ * No matter how control leaves the embedded 'Statement',
+ * the scope chain is always restored to its former state
+ *
+ * @path ch12/12.10/S12.10_A3.9_T2.js
+ * @description Using "for-in" statement within "with" statement, leading to completion by break
+ * @noStrict
+ */
+
+this.p1 = 1;
+
+var result = "result";
+
+var myObj = {
+ p1: 'a',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';}
+}
+
+with(myObj){
+ for(var prop in myObj){
+ p1 = 'x1';
+ break;
+ }
+}
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if(p1 !== 1){
+ $ERROR('#1: p1 === 1. Actual: p1 ==='+ p1 );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if(myObj.p1 !== "x1"){
+ $ERROR('#2: myObj.p1 === "x1". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+
diff --git a/js/src/tests/test262/ch12/12.10/S12.10_A3.9_T3.js b/js/src/tests/test262/ch12/12.10/S12.10_A3.9_T3.js
new file mode 100644
index 000000000..c00200340
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.10/S12.10_A3.9_T3.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.
+
+/**
+ * No matter how control leaves the embedded 'Statement',
+ * the scope chain is always restored to its former state
+ *
+ * @path ch12/12.10/S12.10_A3.9_T3.js
+ * @description Using "for-in" statement within "with" statement, leading to completion by break
+ * @noStrict
+ */
+
+this.p1 = 1;
+
+var result = "result";
+
+var myObj = {
+ p1: 'a',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';}
+}
+
+with(myObj){
+ for(var prop in myObj){
+ break;
+ p1 = 'x1';
+ }
+}
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if(p1 !== 1){
+ $ERROR('#1: p1 === 1. Actual: p1 ==='+ p1 );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if(myObj.p1 !== "a"){
+ $ERROR('#2: myObj.p1 === "a". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+
diff --git a/js/src/tests/test262/ch12/12.10/S12.10_A4_T1.js b/js/src/tests/test262/ch12/12.10/S12.10_A4_T1.js
new file mode 100644
index 000000000..6deef5b1a
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.10/S12.10_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.
+
+/**
+ * Changing property using "eval" statement containing "with" statement
+ *
+ * @path ch12/12.10/S12.10_A4_T1.js
+ * @description Changing string property
+ * @noStrict
+ */
+
+this.p1 = 1;
+var myObj = {
+ p1: 'a',
+}
+eval("with(myObj){p1='b'}");
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if(myObj.p1 !== 'b'){
+ $ERROR('#1: myObj.p1 === "b". Actual: myObj.p1 ==='+ myObj.p1 );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if(myObj.p1 === 1){
+ $ERROR('#2: myObj.p1 !== 1');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch12/12.10/S12.10_A4_T2.js b/js/src/tests/test262/ch12/12.10/S12.10_A4_T2.js
new file mode 100644
index 000000000..e31f52b84
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.10/S12.10_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.
+
+/**
+ * Changing property using "eval" statement containing "with" statement
+ *
+ * @path ch12/12.10/S12.10_A4_T2.js
+ * @description Changing number property
+ * @noStrict
+ */
+
+this.p1 = 'a';
+var myObj = {
+ p1: 1,
+}
+eval("with(myObj){p1=2}");
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if(myObj.p1 !== 2){
+ $ERROR('#1: myObj.p1 === 2. Actual: myObj.p1 ==='+ myObj.p1 );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if(myObj.p1 === 'a'){
+ $ERROR('#2: myObj.p1 !== \'a\'');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch12/12.10/S12.10_A4_T3.js b/js/src/tests/test262/ch12/12.10/S12.10_A4_T3.js
new file mode 100644
index 000000000..94c58701c
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.10/S12.10_A4_T3.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.
+
+/**
+ * Changing property using "eval" statement containing "with" statement
+ *
+ * @path ch12/12.10/S12.10_A4_T3.js
+ * @description Changing boolean property
+ * @noStrict
+ */
+
+this.p1 = 'a';
+var myObj = {
+ p1: true,
+}
+eval("with(myObj){p1=false}");
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if(myObj.p1 !== false){
+ $ERROR('#1: myObj.p1 === false. Actual: myObj.p1 ==='+ myObj.p1 );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if(myObj.p1 === 'a'){
+ $ERROR('#2: myObj.p1 !== \'a\'');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch12/12.10/S12.10_A4_T4.js b/js/src/tests/test262/ch12/12.10/S12.10_A4_T4.js
new file mode 100644
index 000000000..042d0dfc5
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.10/S12.10_A4_T4.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.
+
+/**
+ * Changing property using "eval" statement containing "with" statement
+ *
+ * @path ch12/12.10/S12.10_A4_T4.js
+ * @description Changing object property
+ * @noStrict
+ */
+
+this.p1 = 'a';
+var myObj = {
+ p1: {a:"hello"},
+}
+eval("with(myObj){p1={b:'hi'}}");
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if(myObj.p1.a === "hello"){
+ $ERROR('#1: myObj.p1.a !== "hello"');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if(myObj.p1.b !== "hi"){
+ $ERROR('#2: myObj.p1.b === "hi". Actual: myObj.p1.b ==='+ myObj.p1.b );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if(myObj.p1 === 'a'){
+ $ERROR('#3: myObj.p1 !== \'a\'');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch12/12.10/S12.10_A4_T5.js b/js/src/tests/test262/ch12/12.10/S12.10_A4_T5.js
new file mode 100644
index 000000000..38a743b03
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.10/S12.10_A4_T5.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.
+
+/**
+ * Changing property using "eval" statement containing "with" statement
+ *
+ * @path ch12/12.10/S12.10_A4_T5.js
+ * @description Changing array property
+ * @noStrict
+ */
+
+this.p1 = 'a';
+var myObj = {
+ p1: [1,2,3],
+}
+eval("with(myObj){p1=[3,2,1]}");
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if(myObj.p1[2] !== 1){
+ $ERROR('#1: myObj.p1[2] === 1. Actual: myObj.p1[2] ==='+ myObj.p1[2] );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if(myObj.p1 === 'a'){
+ $ERROR('#2: myObj.p1 !== \'a\'');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch12/12.10/S12.10_A4_T6.js b/js/src/tests/test262/ch12/12.10/S12.10_A4_T6.js
new file mode 100644
index 000000000..fce451118
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.10/S12.10_A4_T6.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.
+
+/**
+ * Changing property using "eval" statement containing "with" statement
+ *
+ * @path ch12/12.10/S12.10_A4_T6.js
+ * @description Changing function property
+ * @noStrict
+ */
+
+this.p1 = 'a';
+var myObj = {
+ p1: function(){return 0;},
+}
+eval("with(myObj){p1=function(){return 1;}}");
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if(myObj.p1() !== 1){
+ $ERROR('#1: myObj.p1 === 1. Actual: myObj.p1 ==='+ myObj.p1 );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if(myObj.p1 === 'a'){
+ $ERROR('#2: myObj.p1 !== \'a\'');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch12/12.10/S12.10_A5_T1.js b/js/src/tests/test262/ch12/12.10/S12.10_A5_T1.js
new file mode 100644
index 000000000..351e4bb9d
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.10/S12.10_A5_T1.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.
+
+/**
+ * Deleting property using "eval" statement containing "with" statement
+ *
+ * @path ch12/12.10/S12.10_A5_T1.js
+ * @description Deleting string property
+ * @noStrict
+ */
+
+this.p1 = 1;
+var myObj = {
+ p1: 'a',
+ del:false
+}
+eval("with(myObj){del = delete p1}");
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if(myObj.p1 === 'a'){
+ $ERROR('#1: myObj.p1 !== "a"');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if(myObj.p1 !== undefined){
+ $ERROR('#2: myObj.p1 === undefined. Actual: myObj.p1 ==='+ myObj.p1 );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if(myObj.del !== true){
+ $ERROR('#3: myObj.del === true. Actual: myObj.del ==='+ myObj.del );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#4
+if(myObj.p1 === 1){
+ $ERROR('#4: myObj.p1 !== 1');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch12/12.10/S12.10_A5_T2.js b/js/src/tests/test262/ch12/12.10/S12.10_A5_T2.js
new file mode 100644
index 000000000..909d79d03
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.10/S12.10_A5_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.
+
+/**
+ * Deleting property using "eval" statement containing "with" statement
+ *
+ * @path ch12/12.10/S12.10_A5_T2.js
+ * @description Deleting number property
+ * @noStrict
+ */
+
+this.p1 = 'a';
+var myObj = {
+ p1: 1,
+ del:false
+}
+eval("with(myObj){del = delete p1}");
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if(myObj.p1 === 1){
+ $ERROR('#1: myObj.p1 !== 1');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if(myObj.p1 !== undefined){
+ $ERROR('#2: myObj.p1 === undefined . Actual: myObj.p1 ==='+ myObj.p1 );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if(myObj.del !== true){
+ $ERROR('#3: myObj.del === true. Actual: myObj.del ===. Actual: myObj.del ==='+ myObj.del +myObj.del);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#4
+if(myObj.p1 === 'a'){
+ $ERROR('#4: myObj.p1 !== \'a\'');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch12/12.10/S12.10_A5_T3.js b/js/src/tests/test262/ch12/12.10/S12.10_A5_T3.js
new file mode 100644
index 000000000..cd2ec3487
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.10/S12.10_A5_T3.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.
+
+/**
+ * Deleting property using "eval" statement containing "with" statement
+ *
+ * @path ch12/12.10/S12.10_A5_T3.js
+ * @description Deleting boolean property
+ * @noStrict
+ */
+
+this.p1 = 'a';
+var myObj = {
+ p1: true,
+ del:false
+}
+
+eval("with(myObj){del = delete p1}");
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if(myObj.p1 === true){
+ $ERROR('#1: myObj.p1 !== true ');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if(myObj.p1 !== undefined){
+ $ERROR('#2: myObj.p1 === undefined . Actual: myObj.p1 ==='+ myObj.p1 );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if(myObj.del !== true){
+ $ERROR('#3: myObj.del === true . Actual: myObj.del ==='+ myObj.del );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#4
+if(myObj.p1 === 'a'){
+ $ERROR('#4: myObj.p1 !== \'a\'');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch12/12.10/S12.10_A5_T4.js b/js/src/tests/test262/ch12/12.10/S12.10_A5_T4.js
new file mode 100644
index 000000000..96f2ded29
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.10/S12.10_A5_T4.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.
+
+/**
+ * Deleting property using "eval" statement containing "with" statement
+ *
+ * @path ch12/12.10/S12.10_A5_T4.js
+ * @description Deleting object property
+ * @noStrict
+ */
+
+this.p1 = 'a';
+var myObj = {
+ p1: {a:"hello"},
+ del:false
+}
+eval("with(myObj){del = delete p1}");
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+try{
+if(myObj.p1.a === "hello"){
+ $ERROR('#1: myObj.p1.a !== "hello" ');
+}
+}catch(e){var x=1};
+if(x !== 1){
+ $ERROR('#1: x === 1. Actual: x ==='+ x );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if(myObj.p1 !== undefined){
+ $ERROR('#2: myObj.p1 === undefined . Actual: myObj.p1 ==='+ myObj.p1 );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if(myObj.del !== true){
+ $ERROR('#3: myObj.del === true . Actual: myObj.del ==='+ myObj.del );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#4
+if(myObj.p1 === 'a'){
+ $ERROR('#4: myObj.p1 !== \'a\'');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch12/12.10/S12.10_A5_T5.js b/js/src/tests/test262/ch12/12.10/S12.10_A5_T5.js
new file mode 100644
index 000000000..f0b52d07a
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.10/S12.10_A5_T5.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.
+
+/**
+ * Deleting property using "eval" statement containing "with" statement
+ *
+ * @path ch12/12.10/S12.10_A5_T5.js
+ * @description Deleting array property
+ * @noStrict
+ */
+
+this.p1 = 'a';
+var myObj = {
+ p1: [1,2,3],
+ del:false
+}
+eval("with(myObj){del = delete p1}");
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+try{
+if(myObj.p1[2] === 3){
+ $ERROR('#1: myObj.p1[2] !== 3 ');
+}
+}catch(e){var x=1};
+if(x !== 1){
+ $ERROR('#1: x === 1. Actual: x ==='+ x );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if(myObj.p1 !== undefined){
+ $ERROR('#2: myObj.p1 === undefined . Actual: myObj.p1 ==='+ myObj.p1 );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if(myObj.del !== true){
+ $ERROR('#3: myObj.del === true . Actual: myObj.del ==='+ myObj.del );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#4
+if(myObj.p1 === 'a'){
+ $ERROR('#4: myObj.p1 !== \'a\'');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch12/12.10/S12.10_A5_T6.js b/js/src/tests/test262/ch12/12.10/S12.10_A5_T6.js
new file mode 100644
index 000000000..67c79398a
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.10/S12.10_A5_T6.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.
+
+/**
+ * Deleting property using "eval" statement containing "with" statement
+ *
+ * @path ch12/12.10/S12.10_A5_T6.js
+ * @description Deleting function property
+ * @noStrict
+ */
+
+this.p1 = 'a';
+var myObj = {
+ p1: function(){return 0;},
+ del:false
+}
+eval("with(myObj){del = delete p1}");
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+try{
+if(myObj.p1() === 0){
+ $ERROR('#1: myObj.p1() !== 0 ');
+}
+}catch(e){var x=1};
+if(x !== 1){
+ $ERROR('#1: x === 1. Actual: x ==='+ x );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if(myObj.p1 !== undefined){
+ $ERROR('#2: myObj.p1 === undefined . Actual: myObj.p1 ==='+ myObj.p1 );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if(myObj.del !== true){
+ $ERROR('#3: myObj.del === true . Actual: myObj.del ==='+ myObj.del );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#4
+if(myObj.p1 === 'a'){
+ $ERROR('#4: myObj.p1 !== \'a\'');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch12/12.10/browser.js b/js/src/tests/test262/ch12/12.10/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.10/browser.js
diff --git a/js/src/tests/test262/ch12/12.10/shell.js b/js/src/tests/test262/ch12/12.10/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.10/shell.js
diff --git a/js/src/tests/test262/ch12/12.11/S12.11_A1_T1.js b/js/src/tests/test262/ch12/12.11/S12.11_A1_T1.js
new file mode 100644
index 000000000..0d637da55
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.11/S12.11_A1_T1.js
@@ -0,0 +1,74 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * If Result.type is break and Result.target is in the current
+ * label set, return (normal, Result.value, empty)
+ *
+ * @path ch12/12.11/S12.11_A1_T1.js
+ * @description Simple test using switch statement
+ */
+
+function SwitchTest(value){
+ var result = 0;
+
+ switch(value) {
+ case 0:
+ result += 2;
+ case 1:
+ result += 4;
+ break;
+ case 2:
+ result += 8;
+ case 3:
+ result += 16;
+ default:
+ result += 32;
+ break;
+ case 4:
+ result += 64;
+ }
+
+ return result;
+}
+
+if(!(SwitchTest(0) === 6)){
+ $ERROR("#1: SwitchTest(0) === 6. Actual: SwitchTest(0) ==="+ SwitchTest(0) );
+}
+
+if(!(SwitchTest(1) === 4)){
+ $ERROR("#2: SwitchTest(1) === 4. Actual: SwitchTest(1) ==="+ SwitchTest(1) );
+}
+
+if(!(SwitchTest(2) === 56)){
+ $ERROR("#3: SwitchTest(2) === 56. Actual: SwitchTest(2) ==="+ SwitchTest(2) );
+}
+
+if(!(SwitchTest(3) === 48)){
+ $ERROR("#4: SwitchTest(3) === 48. Actual: SwitchTest(3) ==="+ SwitchTest(3) );
+}
+
+if(!(SwitchTest(4) === 64)){
+ $ERROR("#5: SwitchTest(4) === 64. Actual: SwitchTest(4) ==="+ SwitchTest(4) );
+}
+
+if(!(SwitchTest(true) === 32)){
+ $ERROR("#6: SwitchTest(true) === 32. Actual: SwitchTest(true) ==="+ SwitchTest(true) );
+}
+
+if(!(SwitchTest(false) === 32)){
+ $ERROR("#7: SwitchTest(false) === 32. Actual: SwitchTest(false) ==="+ SwitchTest(false) );
+}
+
+if(!(SwitchTest(null) === 32)){
+ $ERROR("#8: SwitchTest(null) === 32. Actual: SwitchTest(null) ==="+ SwitchTest(null) );
+}
+
+if(!(SwitchTest(void 0) === 32)){
+ $ERROR("#9: SwitchTest(void 0) === 32. Actual: SwitchTest(void 0) ==="+ SwitchTest(void 0) );
+}
+
+if(!(SwitchTest('0') === 32)){
+ $ERROR("#10: SwitchTest('0') === 32. Actual: SwitchTest('0') ==="+ SwitchTest('0') );
+}
+
diff --git a/js/src/tests/test262/ch12/12.11/S12.11_A1_T2.js b/js/src/tests/test262/ch12/12.11/S12.11_A1_T2.js
new file mode 100644
index 000000000..a7b4abc59
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.11/S12.11_A1_T2.js
@@ -0,0 +1,88 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * If Result.type is break and Result.target is in the current
+ * label set, return (normal, Result.value, empty)
+ *
+ * @path ch12/12.11/S12.11_A1_T2.js
+ * @description Switch with different types of variables
+ */
+
+var x = new Number(2);
+
+function SwitchTest(value){
+ var result = 0;
+
+ switch(value) {
+ case 0:
+ result += 2;
+ case '1':
+ result += 4;
+ break;
+ case new Number(2):
+ result += 8;
+ case 3:
+ result += 16;
+ default:
+ result += 32;
+ break;
+ case 4:
+ result += 64;
+ break;
+ case x:
+ result += 128;
+ break;
+ case 0:
+ result += 256;
+ case 1:
+ result += 512;
+ }
+
+ return result;
+}
+
+if(!(SwitchTest(0) === 6)){
+ $ERROR("#1: SwitchTest(0) === 6. Actual: SwitchTest(0) ==="+ SwitchTest(0) );
+}
+
+if(!(SwitchTest(1) === 512)){
+ $ERROR("#2: SwitchTest(1) === 512. Actual: SwitchTest(1) ==="+ SwitchTest(1) );
+}
+
+if(!(SwitchTest(2) === 32)){
+ $ERROR("#3: SwitchTest(2) === 32. Actual: SwitchTest(2) ==="+ SwitchTest(2) );
+}
+
+if(!(SwitchTest(3) === 48)){
+ $ERROR("#4: SwitchTest(3) === 48. Actual: SwitchTest(3) ==="+ SwitchTest(3) );
+}
+
+if(!(SwitchTest(4) === 64)){
+ $ERROR("#5: SwitchTest(4) === 64. Actual: SwitchTest(4) ==="+ SwitchTest(4) );
+}
+
+if(!(SwitchTest(true) === 32)){
+ $ERROR("#6: SwitchTest(true) === 32. Actual: SwitchTest(true) ==="+ SwitchTest(true) );
+}
+
+if(!(SwitchTest(false) === 32)){
+ $ERROR("#7: SwitchTest(false) === 32. Actual: SwitchTest(false) ==="+ SwitchTest(false) );
+}
+
+if(!(SwitchTest(null) === 32)){
+ $ERROR("#8: SwitchTest(null) === 32. Actual: SwitchTest(null) ==="+ SwitchTest(null) );
+}
+
+if(!(SwitchTest(void 0) === 32)){
+ $ERROR("#9: SwitchTest(void 0) === 32. Actual: SwitchTest(void 0) ==="+ SwitchTest(void 0) );
+}
+
+if(!(SwitchTest('0') === 32)){
+ $ERROR("#10: SwitchTest('0') === 32. Actual: SwitchTest('0') ==="+ SwitchTest('0') );
+}
+
+if(!(SwitchTest(x) === 128)){
+ $ERROR("#10: SwitchTest(x) === 128. Actual: SwitchTest(x) ==="+ SwitchTest(x) );
+}
+
diff --git a/js/src/tests/test262/ch12/12.11/S12.11_A1_T3.js b/js/src/tests/test262/ch12/12.11/S12.11_A1_T3.js
new file mode 100644
index 000000000..3171a6661
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.11/S12.11_A1_T3.js
@@ -0,0 +1,92 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * If Result.type is break and Result.target is in the current
+ * label set, return (normal, Result.value, empty)
+ *
+ * @path ch12/12.11/S12.11_A1_T3.js
+ * @description Using case with null, NaN, Infinity
+ */
+
+function SwitchTest(value){
+ var result = 0;
+
+ switch(value) {
+ case 0:
+ result += 2;
+ case 1:
+ result += 4;
+ break;
+ case 2:
+ result += 8;
+ case 3:
+ result += 16;
+ default:
+ result += 32;
+ break;
+ case null:
+ result += 64;
+ case NaN:
+ result += 128;
+ break;
+ case Infinity:
+ result += 256;
+ case 2+3:
+ result += 512;
+ break;
+ case undefined:
+ result += 1024;
+ }
+
+ return result;
+}
+
+if(!(SwitchTest(0) === 6)){
+ $ERROR("#1: SwitchTest(0) === 6. Actual: SwitchTest(0) ==="+ SwitchTest(0) );
+}
+
+if(!(SwitchTest(1) === 4)){
+ $ERROR("#2: SwitchTest(1) === 4. Actual: SwitchTest(1) ==="+ SwitchTest(1) );
+}
+
+if(!(SwitchTest(2) === 56)){
+ $ERROR("#3: SwitchTest(2) === 56. Actual: SwitchTest(2) ==="+ SwitchTest(2) );
+}
+
+if(!(SwitchTest(3) === 48)){
+ $ERROR("#4: SwitchTest(3) === 48. Actual: SwitchTest(3) ==="+ SwitchTest(3) );
+}
+
+if(!(SwitchTest(4) === 32)){
+ $ERROR("#5: SwitchTest(4) === 32. Actual: SwitchTest(4) ==="+ SwitchTest(4) );
+}
+
+if(!(SwitchTest(5) === 512)){
+ $ERROR("#5: SwitchTest(5) === 512. Actual: SwitchTest(5) ==="+ SwitchTest(5) );
+}
+
+if(!(SwitchTest(true) === 32)){
+ $ERROR("#6: SwitchTest(true) === 32. Actual: SwitchTest(true) ==="+ SwitchTest(true) );
+}
+
+if(!(SwitchTest(false) === 32)){
+ $ERROR("#7: SwitchTest(false) === 32. Actual: SwitchTest(false) ==="+ SwitchTest(false) );
+}
+
+if(!(SwitchTest(null) === 192)){
+ $ERROR("#8: SwitchTest(null) === 192. Actual: SwitchTest(null) ==="+ SwitchTest(null) );
+}
+
+if(!(SwitchTest(void 0) === 1024)){
+ $ERROR("#9: SwitchTest(void 0) === 1024. Actual: SwitchTest(void 0) ==="+ SwitchTest(void 0) );
+}
+
+if(!(SwitchTest(NaN) === 32)){
+ $ERROR("#10: SwitchTest(NaN) === 32. Actual: SwitchTest(NaN) ==="+ SwitchTest(NaN) );
+}
+
+if(!(SwitchTest(Infinity) === 768)){
+ $ERROR("#10: SwitchTest(NaN) === 768. Actual: SwitchTest(NaN) ==="+ SwitchTest(NaN) );
+}
+
diff --git a/js/src/tests/test262/ch12/12.11/S12.11_A1_T4.js b/js/src/tests/test262/ch12/12.11/S12.11_A1_T4.js
new file mode 100644
index 000000000..0182397fe
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.11/S12.11_A1_T4.js
@@ -0,0 +1,80 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * If Result.type is break and Result.target is in the current
+ * label set, return (normal, Result.value, empty)
+ *
+ * @path ch12/12.11/S12.11_A1_T4.js
+ * @description Using case with isNaN and isNaN(value)
+ */
+
+function SwitchTest(value){
+ var result = 0;
+
+ switch(value) {
+ case 0:
+ result += 2;
+ case 1:
+ result += 4;
+ break;
+ case 2:
+ result += 8;
+ case isNaN(value):
+ result += 16;
+ default:
+ result += 32;
+ break;
+ case null:
+ result += 64;
+ case isNaN:
+ result += 128;
+ break;
+ case Infinity:
+ result += 256;
+ case 2+3:
+ result += 512;
+ break;
+ case undefined:
+ result += 1024;
+ }
+
+ return result;
+}
+
+if(!(SwitchTest(eval('Number(false)')) === 6)){
+ $ERROR("#1: SwitchTest(0) === 6. Actual: SwitchTest(0) ==="+ SwitchTest(0) );
+}
+
+if(!(SwitchTest(parseInt) === 32)){
+ $ERROR("#2: SwitchTest(parseInt) === 32. Actual: SwitchTest(parseInt) ==="+ SwitchTest(parseInt) );
+}
+
+if(!(SwitchTest(isNaN) === 128)){
+ $ERROR("#3: SwitchTest(isNaN) === 128. Actual: SwitchTest(isNaN) ==="+ SwitchTest(isNaN) );
+}
+
+if(!(SwitchTest(true) === 32)){
+ $ERROR("#6: SwitchTest(true) === 32. Actual: SwitchTest(true) ==="+ SwitchTest(true) );
+}
+
+if(!(SwitchTest(false) === 48)){
+ $ERROR("#7: SwitchTest(false) === 48. Actual: SwitchTest(false) ==="+ SwitchTest(false) );
+}
+
+if(!(SwitchTest(null) === 192)){
+ $ERROR("#8: SwitchTest(null) === 192. Actual: SwitchTest(null) ==="+ SwitchTest(null) );
+}
+
+if(!(SwitchTest(void 0) === 1024)){
+ $ERROR("#9: SwitchTest(void 0) === 1024. Actual: SwitchTest(void 0) ==="+ SwitchTest(void 0) );
+}
+
+if(!(SwitchTest(NaN) === 32)){
+ $ERROR("#10: SwitchTest(NaN) === 32. Actual: SwitchTest(NaN) ==="+ SwitchTest(NaN) );
+}
+
+if(!(SwitchTest(Infinity) === 768)){
+ $ERROR("#10: SwitchTest(NaN) === 768. Actual: SwitchTest(NaN) ==="+ SwitchTest(NaN) );
+}
+
diff --git a/js/src/tests/test262/ch12/12.11/S12.11_A2_T1.js b/js/src/tests/test262/ch12/12.11/S12.11_A2_T1.js
new file mode 100644
index 000000000..247437638
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.11/S12.11_A2_T1.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.
+
+/**
+ * There can be only one DefaultClause
+ *
+ * @path ch12/12.11/S12.11_A2_T1.js
+ * @description Duplicate DefaultClause
+ * @negative
+ */
+
+function SwitchTest(value){
+ var result = 0;
+
+ switch(value) {
+ case 0:
+ result += 2;
+ default:
+ result += 32;
+ break;
+ default:
+ result += 32;
+ break;
+ }
+
+ return result;
+}
+
+var x = SwitchTest(0);
+
diff --git a/js/src/tests/test262/ch12/12.11/S12.11_A3_T1.js b/js/src/tests/test262/ch12/12.11/S12.11_A3_T1.js
new file mode 100644
index 000000000..feab32852
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.11/S12.11_A3_T1.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.
+
+/**
+ * Syntax constructions of switch statement
+ *
+ * @path ch12/12.11/S12.11_A3_T1.js
+ * @description Checking if execution of "switch() {}" fails
+ * @negative
+ */
+
+function SwitchTest(value){
+ var result = 0;
+
+ switch() {
+ case 0:
+ result += 2;
+ default:
+ result += 32;
+ break;
+ }
+
+ return result;
+}
+
+var x = SwitchTest(0);
+
diff --git a/js/src/tests/test262/ch12/12.11/S12.11_A3_T2.js b/js/src/tests/test262/ch12/12.11/S12.11_A3_T2.js
new file mode 100644
index 000000000..d879d6028
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.11/S12.11_A3_T2.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.
+
+/**
+ * Syntax constructions of switch statement
+ *
+ * @path ch12/12.11/S12.11_A3_T2.js
+ * @description Checking if execution of "switch {}" fails
+ * @negative
+ */
+
+function SwitchTest(value){
+ var result = 0;
+
+ switch {
+ case 0:
+ result += 2;
+ default:
+ result += 32;
+ break;
+ }
+
+ return result;
+}
+
+var x = SwitchTest(0);
+
diff --git a/js/src/tests/test262/ch12/12.11/S12.11_A3_T3.js b/js/src/tests/test262/ch12/12.11/S12.11_A3_T3.js
new file mode 100644
index 000000000..03d3898dc
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.11/S12.11_A3_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.
+
+/**
+ * Syntax constructions of switch statement
+ *
+ * @path ch12/12.11/S12.11_A3_T3.js
+ * @description Checking if execution of "switch(value)" fails
+ * @negative
+ */
+
+switch(value);
+
diff --git a/js/src/tests/test262/ch12/12.11/S12.11_A3_T4.js b/js/src/tests/test262/ch12/12.11/S12.11_A3_T4.js
new file mode 100644
index 000000000..00def2926
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.11/S12.11_A3_T4.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.
+
+/**
+ * Syntax constructions of switch statement
+ *
+ * @path ch12/12.11/S12.11_A3_T4.js
+ * @description Using "case" that has no Expresson after it. "CaseClause: case Expression : [StatementList]"
+ * @negative
+ */
+
+function SwitchTest(value){
+ var result = 0;
+
+ switch(value) {
+ case:
+ result += 2;
+ default:
+ result += 32;
+ break;
+ }
+
+ return result;
+}
+
+var x = SwitchTest(0);
+
diff --git a/js/src/tests/test262/ch12/12.11/S12.11_A3_T5.js b/js/src/tests/test262/ch12/12.11/S12.11_A3_T5.js
new file mode 100644
index 000000000..02cd94bd9
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.11/S12.11_A3_T5.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.
+
+/**
+ * Syntax constructions of switch statement
+ *
+ * @path ch12/12.11/S12.11_A3_T5.js
+ * @description Introducing statement not followed by "case" keyword
+ * @negative
+ */
+
+function SwitchTest(value){
+ var result = 0;
+
+ switch(value) {
+ result =2;
+ case 0:
+ result += 2;
+ default:
+ result += 32;
+ break;
+ }
+
+ return result;
+}
+
+var x = SwitchTest(0);
+
diff --git a/js/src/tests/test262/ch12/12.11/S12.11_A4_T1.js b/js/src/tests/test262/ch12/12.11/S12.11_A4_T1.js
new file mode 100644
index 000000000..8fbafbc81
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.11/S12.11_A4_T1.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.
+
+/**
+ * Embedded syntax constructions of switch statement
+ *
+ * @path ch12/12.11/S12.11_A4_T1.js
+ * @description Nesting one "switch" statement into StatementList of the other's
+ */
+
+function SwitchTest(value){
+ var result = 0;
+
+ switch(value) {
+ case 0:
+ switch(value) {
+ case 0:
+ result += 3;
+ break;
+ default:
+ result += 32;
+ break;
+ }
+ result *= 2;
+ break;
+ result=3;
+ default:
+ result += 32;
+ break;
+ }
+ return result;
+}
+
+var x = SwitchTest(0);
+if(x!==6) $ERROR("#1: SwitchTest(0) === 6. Actual: SwitchTest(0) ==="+ SwitchTest(0) );
+
diff --git a/js/src/tests/test262/ch12/12.11/browser.js b/js/src/tests/test262/ch12/12.11/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.11/browser.js
diff --git a/js/src/tests/test262/ch12/12.11/shell.js b/js/src/tests/test262/ch12/12.11/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.11/shell.js
diff --git a/js/src/tests/test262/ch12/12.12/S12.12_A1_T1.js b/js/src/tests/test262/ch12/12.12/S12.12_A1_T1.js
new file mode 100644
index 000000000..c88e0650a
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.12/S12.12_A1_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.
+
+/**
+ * Labelled statements are only used in conjunction with labelled
+ * break and continue statements
+ *
+ * @path ch12/12.12/S12.12_A1_T1.js
+ * @description Checking if labelled break works. See continue and break sections
+ */
+
+var object = {p1: 1, p2: 1};
+var result = 0;
+lbl: for(var i in object){
+ result += object[i];
+ break lbl;
+}
+
+if(!(result === 1)){
+ $ERROR("'break label' should break execution of labelled iteration statement");
+}
+
diff --git a/js/src/tests/test262/ch12/12.12/browser.js b/js/src/tests/test262/ch12/12.12/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.12/browser.js
diff --git a/js/src/tests/test262/ch12/12.12/shell.js b/js/src/tests/test262/ch12/12.12/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.12/shell.js
diff --git a/js/src/tests/test262/ch12/12.13/S12.13_A1.js b/js/src/tests/test262/ch12/12.13/S12.13_A1.js
new file mode 100644
index 000000000..bc2463577
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.13/S12.13_A1.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.
+
+/**
+ * Sanity test for throw statement
+ *
+ * @path ch12/12.13/S12.13_A1.js
+ * @description Trying to throw exception with "throw"
+ * @negative
+ */
+
+throw "error";
+
diff --git a/js/src/tests/test262/ch12/12.13/S12.13_A2_T1.js b/js/src/tests/test262/ch12/12.13/S12.13_A2_T1.js
new file mode 100644
index 000000000..bca31ea80
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.13/S12.13_A2_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.
+
+/**
+ * "throw Expression" returns (throw, GetValue(Result(1)), empty), where 1 evaluates Expression
+ *
+ * @path ch12/12.13/S12.13_A2_T1.js
+ * @description Throwing undefined
+ */
+
+// CHECK#1
+try{
+ throw undefined;
+}
+catch(e){
+ if (e!==undefined) $ERROR('#1: Exception === undefined. Actual: Exception ==='+ e );
+}
+
diff --git a/js/src/tests/test262/ch12/12.13/S12.13_A2_T2.js b/js/src/tests/test262/ch12/12.13/S12.13_A2_T2.js
new file mode 100644
index 000000000..e068f39f6
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.13/S12.13_A2_T2.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.
+
+/**
+ * "throw Expression" returns (throw, GetValue(Result(1)), empty), where 1 evaluates Expression
+ *
+ * @path ch12/12.13/S12.13_A2_T2.js
+ * @description Throwing null
+ */
+
+// CHECK#1
+try{
+ throw null;
+}
+catch(e){
+ if (e!==null) $ERROR('#1: Exception === null. Actual: Exception ==='+ e );
+}
+
diff --git a/js/src/tests/test262/ch12/12.13/S12.13_A2_T3.js b/js/src/tests/test262/ch12/12.13/S12.13_A2_T3.js
new file mode 100644
index 000000000..37592ac19
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.13/S12.13_A2_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.
+
+/**
+ * "throw Expression" returns (throw, GetValue(Result(1)), empty), where 1 evaluates Expression
+ *
+ * @path ch12/12.13/S12.13_A2_T3.js
+ * @description Throwing boolean
+ */
+
+// CHECK#1
+try{
+ throw true;
+}
+catch(e){
+ if (e!==true) $ERROR('#1: Exception ===true. Actual: Exception ==='+ e );
+}
+
+// CHECK#2
+try{
+ throw false;
+}
+catch(e){
+ if (e!==false) $ERROR('#2: Exception ===false. Actual: Exception ==='+ e );
+}
+
+// CHECK#3
+var b=false;
+try{
+ throw b;
+}
+catch(e){
+ if (e!==false) $ERROR('#3: Exception ===false. Actual: Exception ==='+ e );
+}
+
+// CHECK#4
+var b=true;
+try{
+ throw b;
+}
+catch(e){
+ if (e!==true) $ERROR('#4: Exception ===true. Actual: Exception ==='+ e );
+}
+
diff --git a/js/src/tests/test262/ch12/12.13/S12.13_A2_T4.js b/js/src/tests/test262/ch12/12.13/S12.13_A2_T4.js
new file mode 100644
index 000000000..bddf2dac3
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.13/S12.13_A2_T4.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.
+
+/**
+ * "throw Expression" returns (throw, GetValue(Result(1)), empty), where 1 evaluates Expression
+ *
+ * @path ch12/12.13/S12.13_A2_T4.js
+ * @description Throwing string
+ */
+
+// CHECK#1
+try{
+ throw "exception #1";
+}
+catch(e){
+ if (e!=="exception #1") $ERROR('#1: Exception ==="exception #1". Actual: Exception ==='+ e );
+}
+
+// CHECK#2
+var b="exception #1";
+try{
+ throw b;
+}
+catch(e){
+ if (e!=="exception #1") $ERROR('#2: Exception ==="exception #1". Actual: Exception ==='+ e );
+}
+
diff --git a/js/src/tests/test262/ch12/12.13/S12.13_A2_T5.js b/js/src/tests/test262/ch12/12.13/S12.13_A2_T5.js
new file mode 100644
index 000000000..8d8084849
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.13/S12.13_A2_T5.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.
+
+/**
+ * "throw Expression" returns (throw, GetValue(Result(1)), empty), where 1 evaluates Expression
+ *
+ * @path ch12/12.13/S12.13_A2_T5.js
+ * @description Throwing number
+ */
+
+// CHECK#1
+try{
+ throw 13;
+}
+catch(e){
+ if (e!==13) $ERROR('#1: Exception ===13. Actual: Exception ==='+ e );
+}
+
+// CHECK#2
+var b=13;
+try{
+ throw b;
+}
+catch(e){
+ if (e!==13) $ERROR('#2: Exception ===13. Actual: Exception ==='+ e );
+}
+
+// CHECK#3
+try{
+ throw 2.13;
+}
+catch(e){
+ if (e!==2.13) $ERROR('#3: Exception ===2.13. Actual: Exception ==='+ e );
+}
+
+// CHECK#4
+try{
+ throw NaN;
+}
+catch(e){
+ if (!isNaN(e)) $ERROR('#4: Exception is NaN');
+}
+
+// CHECK#5
+try{
+ throw +Infinity;
+}
+catch(e){
+ if (e!==+Infinity) $ERROR('#5: Exception ===+Infinity. Actual: Exception ==='+ e );
+}
+
+// CHECK#6
+try{
+ throw -Infinity;
+}
+catch(e){
+ if (e!==-Infinity) $ERROR('#6: Exception ===-Infinity. Actual: Exception ==='+ e );
+}
+
+// CHECK#7
+try{
+ throw +0;
+}
+catch(e){
+ if (e!==+0) $ERROR('#7: Exception ===+0. Actual: Exception ==='+ e );
+}
+
+// CHECK#8
+try{
+ throw -0;
+}
+catch(e){
+ if (e!==-0) $ERROR('#8: Exception ===-0. Actual: Exception ==='+ e );
+}
+
diff --git a/js/src/tests/test262/ch12/12.13/S12.13_A2_T6.js b/js/src/tests/test262/ch12/12.13/S12.13_A2_T6.js
new file mode 100644
index 000000000..39e799852
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.13/S12.13_A2_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.
+
+/**
+ * "throw Expression" returns (throw, GetValue(Result(1)), empty), where 1 evaluates Expression
+ *
+ * @path ch12/12.13/S12.13_A2_T6.js
+ * @description Throwing object
+ */
+
+var myObj = {p1: 'a',
+ p2: 'b',
+ p3: 'c',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';},
+ parseInt : function(){return 'obj_parseInt';},
+ NaN : 'obj_NaN',
+ Infinity : 'obj_Infinity',
+ eval : function(){return 'obj_eval';},
+ parseFloat : function(){return 'obj_parseFloat';},
+ isNaN : function(){return 'obj_isNaN';},
+ isFinite : function(){return 'obj_isFinite';},
+ i:7
+}
+
+try{
+ throw myObj;
+}
+catch(e){
+// CHECK#1
+ if (e.p1!=="a") $ERROR('#1: e.p1 === "a". Actual: e.p1 ==='+ e.p1 );
+// CHECK#2
+ if (e.value!=='myObj_value') $ERROR('#2: e.p1 === \'myObj_value\'. Actual: e.p1 ==='+ e.p1 );
+// CHECK#3
+ if (e.eval()!=='obj_eval') $ERROR('#3: e.p1 === \'obj_eval\'. Actual: e.p1 ==='+ e.p1 );
+}
+
+// CHECK#4
+myObj.i=6
+try{
+ throw myObj;
+}
+catch(e){}
+if (myObj.i!==6) $ERROR('#4: Handling of catch must be correct');
+
diff --git a/js/src/tests/test262/ch12/12.13/S12.13_A2_T7.js b/js/src/tests/test262/ch12/12.13/S12.13_A2_T7.js
new file mode 100644
index 000000000..bf633f868
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.13/S12.13_A2_T7.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.
+
+/**
+ * "throw Expression" returns (throw, GetValue(Result(1)), empty), where 1 evaluates Expression
+ *
+ * @path ch12/12.13/S12.13_A2_T7.js
+ * @description Throwing Array
+ */
+
+var mycars = new Array();
+mycars[0] = "Saab";
+mycars[1] = "Volvo";
+mycars[2] = "BMW";
+
+var mycars2 = new Array();
+mycars2[0] = "Mercedes";
+mycars2[1] = "Jeep";
+mycars2[2] = "Suzuki";
+
+// CHECK#1
+try{
+ throw mycars;
+}
+catch(e){
+ for (var i=0;i<3;i++){
+ if (e[i]!==mycars[i]) $ERROR('#1.'+i+': Exception['+i+'] === mycars['+i+']. Actual: Exception['+i+'] ==='+ e[i] );
+ }
+}
+
diff --git a/js/src/tests/test262/ch12/12.13/S12.13_A3_T1.js b/js/src/tests/test262/ch12/12.13/S12.13_A3_T1.js
new file mode 100644
index 000000000..7843a6459
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.13/S12.13_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.
+
+/**
+ * 1. Evaluate Expression
+ *
+ * @path ch12/12.13/S12.13_A3_T1.js
+ * @description Evaluating boolean expression
+ */
+
+// CHECK#1
+var b=true;
+try{
+ throw b&&false;
+}
+catch(e){
+ if (e!==false) $ERROR('#1: Exception === false(operaton &&). Actual: Exception ==='+ e );
+}
+
+// CHECK#2
+var b=true;
+try{
+ throw b||false;
+}
+catch(e){
+ if (e!==true) $ERROR('#2: Exception === true(operaton ||). Actual: Exception ==='+ e );
+}
+
+// CHECK#3
+try{
+ throw !false;
+}
+catch(e){
+ if (e!==true) $ERROR('#3: Exception === true(operaton !). Actual: Exception ==='+ e );
+}
+
+// CHECK#4
+var b=true;
+try{
+ throw !(b&&false);
+}
+catch(e){
+ if (e!==true) $ERROR('#4: Exception === true(operaton &&). Actual: Exception ==='+ e );
+}
+
diff --git a/js/src/tests/test262/ch12/12.13/S12.13_A3_T2.js b/js/src/tests/test262/ch12/12.13/S12.13_A3_T2.js
new file mode 100644
index 000000000..f8cb92203
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.13/S12.13_A3_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.
+
+/**
+ * 1. Evaluate Expression
+ *
+ * @path ch12/12.13/S12.13_A3_T2.js
+ * @description Evaluating string expression
+ */
+
+// CHECK#1
+try{
+ throw "exception"+" #1";
+}
+catch(e){
+ if (e!=="exception #1") $ERROR('#1: Exception === "exception #1"(operaton +). Actual: Exception ==='+ e );
+}
+
+// CHECK#2
+var b="exception"
+var a=" #1";
+try{
+ throw b+a;
+}
+catch(e){
+ if (e!=="exception #1") $ERROR('#2: Exception === "exception #1"(operaton +). Actual: Exception ==='+ e );
+}
+
diff --git a/js/src/tests/test262/ch12/12.13/S12.13_A3_T3.js b/js/src/tests/test262/ch12/12.13/S12.13_A3_T3.js
new file mode 100644
index 000000000..44c9d075c
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.13/S12.13_A3_T3.js
@@ -0,0 +1,92 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * 1. Evaluate Expression
+ *
+ * @path ch12/12.13/S12.13_A3_T3.js
+ * @description Evaluating number expression
+ */
+
+// CHECK#1
+try{
+ throw 10+3;
+}
+catch(e){
+ if (e!==13) $ERROR('#1: Exception ===13(operaton +). Actual: Exception ==='+ e);
+}
+
+// CHECK#2
+var b=10;
+var a=3;
+try{
+ throw a+b;
+}
+catch(e){
+ if (e!==13) $ERROR('#2: Exception ===13(operaton +). Actual: Exception ==='+ e);
+}
+
+// CHECK#3
+try{
+ throw 3.15-1.02;
+}
+catch(e){
+ if (e!==2.13) $ERROR('#3: Exception ===2.13(operaton -). Actual: Exception ==='+ e);
+}
+
+// CHECK#4
+try{
+ throw 2*2;
+}
+catch(e){
+ if (e!==4) $ERROR('#4: Exception ===4(operaton *). Actual: Exception ==='+ e);
+}
+
+// CHECK#5
+try{
+ throw 1+Infinity;
+}
+catch(e){
+ if (e!==+Infinity) $ERROR('#5: Exception ===+Infinity(operaton +). Actual: Exception ==='+ e);
+}
+
+// CHECK#6
+try{
+ throw 1-Infinity;
+}
+catch(e){
+ if (e!==-Infinity) $ERROR('#6: Exception ===-Infinity(operaton -). Actual: Exception ==='+ e);
+}
+
+// CHECK#7
+try{
+ throw 10/5;
+}
+catch(e){
+ if (e!==2) $ERROR('#7: Exception ===2(operaton /). Actual: Exception ==='+ e);
+}
+
+// CHECK#8
+try{
+ throw 8>>2;
+}
+catch(e){
+ if (e!==2) $ERROR('#8: Exception ===2(operaton >>). Actual: Exception ==='+ e);
+}
+
+// CHECK#9
+try{
+ throw 2<<2;
+}
+catch(e){
+ if (e!==8) $ERROR('#9: Exception ===8(operaton <<). Actual: Exception ==='+ e);
+}
+
+// CHECK#10
+try{
+ throw 123%100;
+}
+catch(e){
+ if (e!==23) $ERROR('#10: Exception ===23(operaton %). Actual: Exception ==='+ e);
+}
+
diff --git a/js/src/tests/test262/ch12/12.13/S12.13_A3_T4.js b/js/src/tests/test262/ch12/12.13/S12.13_A3_T4.js
new file mode 100644
index 000000000..9a6e010f0
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.13/S12.13_A3_T4.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.
+
+/**
+ * 1. Evaluate Expression
+ *
+ * @path ch12/12.13/S12.13_A3_T4.js
+ * @description Evaluating array expression
+ */
+
+var mycars = new Array();
+mycars[0] = "Saab";
+mycars[1] = "Volvo";
+mycars[2] = "BMW";
+
+var mycars2 = new Array();
+mycars2[0] = "Mercedes";
+mycars2[1] = "Jeep";
+mycars2[2] = "Suzuki";
+
+// CHECK#1
+try{
+ throw mycars.concat(mycars2);
+}
+catch(e){
+ for (var i=0;i<3;i++){
+ if (e[i]!==mycars[i]) $ERROR('#1.'+i+': Exception['+i+']===mycars['+i+'](operation .concat). Actual: Exception['+i+']==='+ e[i] );
+ }
+ for (var i=3;i<6;i++){
+ if (e[i]!==mycars2[i-3]) $ERROR('#1.'+i+': Exception['+i+']===mycars2['+(i-3)+'](operation .concat). Actual: Exception['+i+']==='+ e[i] );
+ }
+}
+
+// CHECK#2
+try{
+ throw new Array("Mercedes","Jeep","Suzuki");
+}
+catch(e){
+ for (var i=0;i<3;i++){
+ if (e[i]!==mycars2[i]) $ERROR('#2.'+i+': Exception['+i+']===mycars2['+i+'](operation new). Actual: Exception['+i+']==='+ e[i] );
+ }
+}
+
+// CHECK#3
+try{
+ throw mycars.concat(new Array("Mercedes","Jeep","Suzuki"));
+}
+catch(e){
+ for (var i=0;i<3;i++){
+ if (e[i]!==mycars[i]) $ERROR('#3.'+i+': Exception['+i+']===mycars['+i+'](operation .concat(new)). Actual: Exception['+i+']==='+ e[i] );
+ }
+ for (var i=3;i<6;i++){
+ if (e[i]!==mycars2[i-3]) $ERROR('#3.'+i+': Exception['+i+']===mycars2['+(i-3)+'](operation .concat(new)). Actual: Exception['+i+']==='+ e[i] );
+ }
+}
+
diff --git a/js/src/tests/test262/ch12/12.13/S12.13_A3_T5.js b/js/src/tests/test262/ch12/12.13/S12.13_A3_T5.js
new file mode 100644
index 000000000..69fb016d5
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.13/S12.13_A3_T5.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.
+
+/**
+ * 1. Evaluate Expression
+ *
+ * @path ch12/12.13/S12.13_A3_T5.js
+ * @description Evaluating equation expression
+ */
+
+// CHECK#1
+var a=true;
+var b=false;
+try{
+ throw ((a&&(!b))?"exception":" #1");
+}
+catch(e){
+ if (e!=="exception") $ERROR('#1: Exception ==="exception"(operaton ? , ). Actual: Exception ==='+e );
+}
+
diff --git a/js/src/tests/test262/ch12/12.13/S12.13_A3_T6.js b/js/src/tests/test262/ch12/12.13/S12.13_A3_T6.js
new file mode 100644
index 000000000..7191c6bd6
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.13/S12.13_A3_T6.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.
+
+/**
+ * 1. Evaluate Expression
+ *
+ * @path ch12/12.13/S12.13_A3_T6.js
+ * @description Evaluating functions
+ */
+
+// CHECK#1
+var i=0;
+function adding1(){
+ i++;
+ return 1;
+}
+try{
+ throw (adding1());
+}
+catch(e){
+ if (e!==1) $ERROR('#1: Exception ===1. Actual: Exception ==='+ e);
+}
+
+// CHECK#2
+var i=0;
+function adding2(){
+ i++;
+ return i;
+}
+try{
+ throw adding2();
+}
+catch(e){}
+if (i!==1) $ERROR('#2: i===1. Actual: i==='+ i);
+
+// CHECK#3
+var i=0;
+function adding3(){
+ i++;
+}
+try{
+ throw adding3();
+}
+catch(e){}
+if (i!==1) $ERROR('#3: i===1. Actual: i==='+i);
+
+// CHECK#4
+function adding4(i){
+ i++;
+ return i;
+}
+try{
+ throw (adding4(1));
+}
+catch(e){
+ if (e!==2) $ERROR('#4: Exception ===2. Actual: Exception ==='+ e);
+}
+
diff --git a/js/src/tests/test262/ch12/12.13/browser.js b/js/src/tests/test262/ch12/12.13/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.13/browser.js
diff --git a/js/src/tests/test262/ch12/12.13/shell.js b/js/src/tests/test262/ch12/12.13/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.13/shell.js
diff --git a/js/src/tests/test262/ch12/12.14/12.14-1.js b/js/src/tests/test262/ch12/12.14/12.14-1.js
new file mode 100644
index 000000000..47bff810b
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.14/12.14-1.js
@@ -0,0 +1,23 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch12/12.14/12.14-1.js
+ * @description catch doesn't change declaration scope - var initializer in catch with same name as catch parameter changes parameter
+ */
+
+
+function testcase() {
+ foo = "prior to throw";
+ try {
+ throw new Error();
+ }
+ catch (foo) {
+ var foo = "initializer in catch";
+ }
+ return foo === "prior to throw";
+
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch12/12.14/12.14-10.js b/js/src/tests/test262/ch12/12.14/12.14-10.js
new file mode 100644
index 000000000..1bdf8273d
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.14/12.14-10.js
@@ -0,0 +1,31 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch12/12.14/12.14-10.js
+ * @description catch introduces scope - name lookup finds function parameter
+ */
+
+
+function testcase() {
+ function f(o) {
+
+ function innerf(o, x) {
+ try {
+ throw o;
+ }
+ catch (e) {
+ return x;
+ }
+ }
+
+ return innerf(o, 42);
+ }
+
+ if (f({}) === 42) {
+ return true;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch12/12.14/12.14-11.js b/js/src/tests/test262/ch12/12.14/12.14-11.js
new file mode 100644
index 000000000..6fded5bee
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.14/12.14-11.js
@@ -0,0 +1,33 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch12/12.14/12.14-11.js
+ * @description catch introduces scope - name lookup finds inner variable
+ */
+
+
+function testcase() {
+ function f(o) {
+
+ function innerf(o) {
+ var x = 42;
+
+ try {
+ throw o;
+ }
+ catch (e) {
+ return x;
+ }
+ }
+
+ return innerf(o);
+ }
+
+ if (f({}) === 42) {
+ return true;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch12/12.14/12.14-12.js b/js/src/tests/test262/ch12/12.14/12.14-12.js
new file mode 100644
index 000000000..c92580cfe
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.14/12.14-12.js
@@ -0,0 +1,31 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch12/12.14/12.14-12.js
+ * @description catch introduces scope - name lookup finds property
+ */
+
+
+function testcase() {
+ function f(o) {
+
+ function innerf(o) {
+ try {
+ throw o;
+ }
+ catch (e) {
+ return e.x;
+ }
+ }
+
+ return innerf(o);
+ }
+
+ if (f({x:42}) === 42) {
+ return true;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch12/12.14/12.14-13.js b/js/src/tests/test262/ch12/12.14/12.14-13.js
new file mode 100644
index 000000000..3efb98913
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.14/12.14-13.js
@@ -0,0 +1,42 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch12/12.14/12.14-13.js
+ * @description catch introduces scope - updates are based on scope
+ */
+
+
+function testcase() {
+ var res1 = false;
+ var res2 = false;
+ var res3 = false;
+
+ var x_12_14_13 = 'local';
+ try {
+ function foo() {
+ this.x_12_14_13 = 'instance';
+ }
+
+ try {
+ throw foo;
+ }
+ catch (e) {
+ res1 = (x_12_14_13 === 'local');
+ e();
+ res2 = (x_12_14_13 === 'local');
+ }
+ res3 = (x_12_14_13 === 'local');
+
+ if (res1 === true &&
+ res2 === true &&
+ res3 === true) {
+ return true;
+ }
+ } finally {
+ delete this.x_12_14_13;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch12/12.14/12.14-14.js b/js/src/tests/test262/ch12/12.14/12.14-14.js
new file mode 100644
index 000000000..40b2c82c8
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.14/12.14-14.js
@@ -0,0 +1,26 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch12/12.14/12.14-14.js
+ * @description Exception object is a function, when an exception parameter is called as a function in catch block, global object is passed as the this value
+ */
+
+
+function testcase() {
+ try {
+ throw function () {
+ this._12_14_14_foo = "test";
+ };
+ return false;
+ } catch (e) {
+ e();
+ return fnGlobalObject()._12_14_14_foo === "test";
+ }
+ finally {
+ delete fnGlobalObject()._12_14_14_foo;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch12/12.14/12.14-15.js b/js/src/tests/test262/ch12/12.14/12.14-15.js
new file mode 100644
index 000000000..e4397c17c
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.14/12.14-15.js
@@ -0,0 +1,28 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch12/12.14/12.14-15.js
+ * @description Exception object is a function which is a property of an object, when an exception parameter is called as a function in catch block, global object is passed as the this value
+ */
+
+
+function testcase() {
+ var obj = {};
+ obj.test = function () {
+ this._12_14_15_foo = "test";
+ };
+ try {
+ throw obj.test;
+ return false;
+ } catch (e) {
+ e();
+ return fnGlobalObject()._12_14_15_foo === "test";
+ }
+ finally {
+ delete fnGlobalObject()._12_14_15_foo;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch12/12.14/12.14-16.js b/js/src/tests/test262/ch12/12.14/12.14-16.js
new file mode 100644
index 000000000..e160e3d37
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.14/12.14-16.js
@@ -0,0 +1,32 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch12/12.14/12.14-16.js
+ * @description Exception object is a function which update in catch block, when an exception parameter is called as a function in catch block, global object is passed as the this value
+ */
+
+
+function testcase() {
+ try {
+ throw function () {
+ this._12_14_16_foo = "test";
+ };
+ return false;
+ } catch (e) {
+ var obj = {};
+ obj.test = function () {
+ this._12_14_16_foo = "test1";
+ };
+ e = obj.test;
+ e();
+ return fnGlobalObject()._12_14_16_foo === "test1";
+ }
+ finally {
+ delete fnGlobalObject()._12_14_16_foo;
+ }
+
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch12/12.14/12.14-2.js b/js/src/tests/test262/ch12/12.14/12.14-2.js
new file mode 100644
index 000000000..16d08d34c
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.14/12.14-2.js
@@ -0,0 +1,24 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch12/12.14/12.14-2.js
+ * @description catch doesn't change declaration scope - var initializer in catch with same name as catch parameter changes parameter
+ */
+
+
+function testcase() {
+ function capturedFoo() {return foo};
+ foo = "prior to throw";
+ try {
+ throw new Error();
+ }
+ catch (foo) {
+ var foo = "initializer in catch";
+ return capturedFoo() !== "initializer in catch";
+ }
+
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch12/12.14/12.14-3.js b/js/src/tests/test262/ch12/12.14/12.14-3.js
new file mode 100644
index 000000000..6cd541061
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.14/12.14-3.js
@@ -0,0 +1,30 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * local vars must not be visible outside with block
+ * local functions must not be visible outside with block
+ * local function expresssions should not be visible outside with block
+ * local vars must shadow outer vars
+ * local functions must shadow outer functions
+ * local function expresssions must shadow outer function expressions
+ * eval should use the appended object to the scope chain
+ *
+ * @path ch12/12.14/12.14-3.js
+ * @description catch doesn't change declaration scope - var declaration are visible outside when name different from catch parameter
+ */
+
+
+function testcase() {
+ try {
+ throw new Error();
+ }
+ catch (e) {
+ var foo = "declaration in catch";
+ }
+
+ return foo === "declaration in catch";
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch12/12.14/12.14-4.js b/js/src/tests/test262/ch12/12.14/12.14-4.js
new file mode 100644
index 000000000..1d3cb1b16
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.14/12.14-4.js
@@ -0,0 +1,34 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * local vars must not be visible outside with block
+ * local functions must not be visible outside with block
+ * local function expresssions should not be visible outside with block
+ * local vars must shadow outer vars
+ * local functions must shadow outer functions
+ * local function expresssions must shadow outer function expressions
+ * eval should use the appended object to the scope chain
+ *
+ * @path ch12/12.14/12.14-4.js
+ * @description catch introduces scope - block-local vars must shadow outer vars
+ */
+
+
+function testcase() {
+ var o = { foo : 42};
+
+ try {
+ throw o;
+ }
+ catch (e) {
+ var foo;
+
+ if (foo === undefined) {
+ return true;
+ }
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch12/12.14/12.14-6.js b/js/src/tests/test262/ch12/12.14/12.14-6.js
new file mode 100644
index 000000000..ae31f846e
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.14/12.14-6.js
@@ -0,0 +1,33 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * local vars must not be visible outside with block
+ * local functions must not be visible outside with block
+ * local function expresssions should not be visible outside with block
+ * local vars must shadow outer vars
+ * local functions must shadow outer functions
+ * local function expresssions must shadow outer function expressions
+ * eval should use the appended object to the scope chain
+ *
+ * @path ch12/12.14/12.14-6.js
+ * @description catch introduces scope - block-local function expression must shadow outer function expression
+ */
+
+
+function testcase() {
+ var o = {foo : function () { return 42;}};
+
+ try {
+ throw o;
+ }
+ catch (e) {
+ var foo = function () {};
+ if (foo() === undefined) {
+ return true;
+ }
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch12/12.14/12.14-7.js b/js/src/tests/test262/ch12/12.14/12.14-7.js
new file mode 100644
index 000000000..b7f8dbc36
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.14/12.14-7.js
@@ -0,0 +1,39 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * local vars must not be visible outside with block
+ * local functions must not be visible outside with block
+ * local function expresssions should not be visible outside with block
+ * local vars must shadow outer vars
+ * local functions must shadow outer functions
+ * local function expresssions must shadow outer function expressions
+ * eval should use the appended object to the scope chain
+ *
+ * @path ch12/12.14/12.14-7.js
+ * @description catch introduces scope - scope removed when exiting catch block
+ */
+
+
+function testcase() {
+ var o = {foo: 1};
+ var catchAccessed = false;
+
+ try {
+ throw o;
+ }
+ catch (expObj) {
+ catchAccessed = (expObj.foo == 1);
+ }
+
+ try {
+ expObj;
+ }
+ catch (e) {
+ return catchAccessed && e instanceof ReferenceError
+ }
+ return false;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch12/12.14/12.14-8.js b/js/src/tests/test262/ch12/12.14/12.14-8.js
new file mode 100644
index 000000000..d2e059cd9
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.14/12.14-8.js
@@ -0,0 +1,34 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * local vars must not be visible outside with block
+ * local functions must not be visible outside with block
+ * local function expresssions should not be visible outside with block
+ * local vars must shadow outer vars
+ * local functions must shadow outer functions
+ * local function expresssions must shadow outer function expressions
+ * eval should use the appended object to the scope chain
+ *
+ * @path ch12/12.14/12.14-8.js
+ * @description catch introduces scope - scope removed when exiting catch block (properties)
+ */
+
+
+function testcase() {
+ var o = {foo: 42};
+
+ try {
+ throw o;
+ }
+ catch (e) {
+ var foo = 1;
+ }
+
+ if (o.foo === 42) {
+ return true;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch12/12.14/12.14-9.js b/js/src/tests/test262/ch12/12.14/12.14-9.js
new file mode 100644
index 000000000..2236dd169
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.14/12.14-9.js
@@ -0,0 +1,32 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch12/12.14/12.14-9.js
+ * @description catch introduces scope - name lookup finds outer variable
+ */
+
+
+function testcase() {
+ function f(o) {
+ var x = 42;
+
+ function innerf(o) {
+ try {
+ throw o;
+ }
+ catch (e) {
+ return x;
+ }
+ }
+
+ return innerf(o);
+ }
+
+ if (f({}) === 42) {
+ return true;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch12/12.14/12.14.1/12.14.1-1-s.js b/js/src/tests/test262/ch12/12.14/12.14.1/12.14.1-1-s.js
new file mode 100644
index 000000000..894a13501
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.14/12.14.1/12.14.1-1-s.js
@@ -0,0 +1,25 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch12/12.14/12.14.1/12.14.1-1-s.js
+ * @description Strict Mode - SyntaxError is thrown if a TryStatement with a Catch occurs within strict code and the Identifier of the Catch production is eval
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+
+ try {
+ eval("\
+ try {} catch (eval) { }\
+ ");
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch12/12.14/12.14.1/12.14.1-1gs.js b/js/src/tests/test262/ch12/12.14/12.14.1/12.14.1-1gs.js
new file mode 100644
index 000000000..04708c31e
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.14/12.14.1/12.14.1-1gs.js
@@ -0,0 +1,16 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+
+/**
+ * @path ch12/12.14/12.14.1/12.14.1-1gs.js
+ * @description Strict Mode - SyntaxError is thrown if a TryStatement with a Catch occurs within strict code and the Identifier of the Catch production is eval
+ * @onlyStrict
+ * @negative ^((?!NotEarlyError).)*$
+ */
+
+"use strict";
+throw NotEarlyError;
+try { } catch (eval) { }
diff --git a/js/src/tests/test262/ch12/12.14/12.14.1/12.14.1-2-s.js b/js/src/tests/test262/ch12/12.14/12.14.1/12.14.1-2-s.js
new file mode 100644
index 000000000..b0e660bd0
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.14/12.14.1/12.14.1-2-s.js
@@ -0,0 +1,25 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch12/12.14/12.14.1/12.14.1-2-s.js
+ * @description Strict Mode - SyntaxError is thrown if a TryStatement with a Catch occurs within strict code and the Identifier of the Catch production is arguments
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+
+ try {
+ eval("\
+ try {} catch (arguments) { }\
+ ");
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch12/12.14/12.14.1/12.14.1-3-s.js b/js/src/tests/test262/ch12/12.14/12.14.1/12.14.1-3-s.js
new file mode 100644
index 000000000..3c477785b
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.14/12.14.1/12.14.1-3-s.js
@@ -0,0 +1,33 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch12/12.14/12.14.1/12.14.1-3-s.js
+ * @description Strict Mode - SyntaxError isn't thrown if a TryStatement with a Catch occurs within strict code and the Identifier of the Catch production is EVAL but throws SyntaxError if it is eval
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+
+ try{ eval(" try { \
+ throw new Error(\"...\");\
+ return false;\
+ } catch (EVAL) {\
+ try\
+ {\
+ throw new Error(\"...\");\
+ }catch(eval)\
+ {\
+ return EVAL instanceof Error;\
+ }\
+ }");
+ return false;
+ } catch(e) {
+ return e instanceof SyntaxError;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch12/12.14/12.14.1/12.14.1-4-s.js b/js/src/tests/test262/ch12/12.14/12.14.1/12.14.1-4-s.js
new file mode 100644
index 000000000..58f372cba
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.14/12.14.1/12.14.1-4-s.js
@@ -0,0 +1,23 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch12/12.14/12.14.1/12.14.1-4-s.js
+ * @description Strict Mode - SyntaxError isn't thrown if a TryStatement with a Catch occurs within strict code and the Identifier of the Catch production is EVAL
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+
+ try {
+ throw new Error("...");
+ return false;
+ } catch (EVAL) {
+ return EVAL instanceof Error;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch12/12.14/12.14.1/12.14.1-5-s.js b/js/src/tests/test262/ch12/12.14/12.14.1/12.14.1-5-s.js
new file mode 100644
index 000000000..84e85593a
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.14/12.14.1/12.14.1-5-s.js
@@ -0,0 +1,23 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch12/12.14/12.14.1/12.14.1-5-s.js
+ * @description Strict Mode - SyntaxError isn't thrown if a TryStatement with a Catch occurs within strict code and the Identifier of the Catch production is Arguments
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+
+ try {
+ throw new Error("...");
+ return false;
+ } catch (Arguments) {
+ return Arguments instanceof Error;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch12/12.14/12.14.1/12.14.1-6-s.js b/js/src/tests/test262/ch12/12.14/12.14.1/12.14.1-6-s.js
new file mode 100644
index 000000000..edd8bb558
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.14/12.14.1/12.14.1-6-s.js
@@ -0,0 +1,23 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch12/12.14/12.14.1/12.14.1-6-s.js
+ * @description Strict Mode - SyntaxError isn't thrown if a TryStatement with a Catch occurs within strict code and the Identifier of the Catch production is ARGUMENTS
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+
+ try {
+ throw new Error("...");
+ return false;
+ } catch (ARGUMENTS) {
+ return ARGUMENTS instanceof Error;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch12/12.14/12.14.1/browser.js b/js/src/tests/test262/ch12/12.14/12.14.1/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.14/12.14.1/browser.js
diff --git a/js/src/tests/test262/ch12/12.14/12.14.1/shell.js b/js/src/tests/test262/ch12/12.14/12.14.1/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.14/12.14.1/shell.js
diff --git a/js/src/tests/test262/ch12/12.14/S12.14_A1.js b/js/src/tests/test262/ch12/12.14/S12.14_A1.js
new file mode 100644
index 000000000..894376009
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.14/S12.14_A1.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.
+
+/**
+ * The production TryStatement : try Block Catch is evaluated as follows: 2. If Result(1).type is not throw, return Result(1)
+ *
+ * @path ch12/12.14/S12.14_A1.js
+ * @description Executing TryStatement : try Block Catch. The statements doesn't cause actual exceptions
+ */
+
+// CHECK#1
+try {
+ var x=0;
+}
+catch (e) {
+ $ERROR('#1: If Result(1).type is not throw, return Result(1). Actual: 4 Return(Result(3))');
+}
+
+// CHECK#2
+var c1=0;
+try{
+ var x1=1;
+}
+finally
+{
+ c1=1;
+}
+if(x1!==1){
+ $ERROR('#2.1: "try" block must be evaluated. Actual: try Block has not been evaluated');
+}
+if (c1!==1){
+ $ERROR('#2.2: "finally" block must be evaluated. Actual: finally Block has not been evaluated');
+}
+
+// CHECK#3
+var c2=0;
+try{
+ var x2=1;
+}
+catch(e){
+ $ERROR('#3.1: If Result(1).type is not throw, return Result(1). Actual: 4 Return(Result(3))');
+}
+finally{
+ c2=1;
+}
+if(x2!==1){
+ $ERROR('#3.2: "try" block must be evaluated. Actual: try Block has not been evaluated');
+}
+if (c2!==1){
+ $ERROR('#3.3: "finally" block must be evaluated. Actual: finally Block has not been evaluated');
+}
+
diff --git a/js/src/tests/test262/ch12/12.14/S12.14_A10_T1.js b/js/src/tests/test262/ch12/12.14/S12.14_A10_T1.js
new file mode 100644
index 000000000..c7a7c4651
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.14/S12.14_A10_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.
+
+/**
+ * Using "try" with "catch" or "finally" statement within/without a "while" statement
+ *
+ * @path ch12/12.14/S12.14_A10_T1.js
+ * @description Throwing exception while executing iteration statement placed into try Block
+ */
+
+// CHECK#1
+var i=0;
+try{
+while(i<10){
+ if(i===5) throw i;
+ i++;
+}
+}
+catch(e){
+ if(e!==5)$ERROR('#1: Exception === 5. Actual: Exception ==='+ e );
+}
+
diff --git a/js/src/tests/test262/ch12/12.14/S12.14_A10_T2.js b/js/src/tests/test262/ch12/12.14/S12.14_A10_T2.js
new file mode 100644
index 000000000..1826b48a8
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.14/S12.14_A10_T2.js
@@ -0,0 +1,116 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * Using "try" with "catch" or "finally" statement within/without a "while" statement
+ *
+ * @path ch12/12.14/S12.14_A10_T2.js
+ * @description Try statement inside loop, where use continue loop
+ */
+
+// CHECK#1
+var c1=0,fin=0;
+while(c1<2){
+ try{
+ c1+=1;
+ continue;
+ }
+ catch(er1){}
+ finally{
+ fin=1;
+ }
+ fin=-1;
+};
+if(fin!==1){
+ $ERROR('#1: "finally" block must be evaluated at "try{continue} catch finally" construction');
+}
+
+// CHECK#2
+var c2=0,fin2=0;
+while(c2<2){
+ try{
+ throw "ex1";
+ }
+ catch(er1){
+ c2+=1;
+ continue;
+ }
+ finally{
+ fin2=1;
+ }
+ fin2=-1;
+}
+if(fin2!==1){
+ $ERROR('#2: "finally" block must be evaluated at "try catch{continue} finally" construction');
+}
+
+// CHECK#3
+var c3=0,fin3=0;
+while(c3<2){
+ try{
+ throw "ex1";
+ }
+ catch(er1){
+ c3+=1;
+ }
+ finally{
+ fin3=1;
+ continue;
+ }
+ fin3=0;
+}
+if(fin3!==1){
+ $ERROR('#3: "finally" block must be evaluated at "try catch finally{continue}" construction');
+}
+
+// CHECK#4
+var c4=0,fin4=0;
+while(c4<2){
+ try{
+ c4+=1;
+ continue;
+ }
+ finally{
+ fin4=1;
+ }
+ fin4=-1;
+};
+if(fin4!==1){
+ $ERROR('#4: "finally" block must be evaluated at "try{continue} finally" construction');
+}
+
+// CHECK#5
+var c5=0;
+while(c5<2){
+ try{
+ throw "ex1";
+ }
+ catch(er1){
+ c5+=1;
+ continue;
+ }
+}
+if(c5!==2){
+ $ERROR('#5: "try catch{continue}" must work correctly');
+}
+
+// CHECK#6
+var c6=0,fin6=0;
+while(c6<2){
+ try{
+ c6+=1;
+ throw "ex1"
+ }
+ finally{
+ fin6=1;
+ continue;
+ }
+ fin6=-1;
+}
+if(fin6!==1){
+ $ERROR('#6.1: "finally" block must be evaluated');
+}
+if(c6!==2){
+ $ERROR('#6.2: "try finally{continue}" must work correctly');
+}
+
diff --git a/js/src/tests/test262/ch12/12.14/S12.14_A10_T3.js b/js/src/tests/test262/ch12/12.14/S12.14_A10_T3.js
new file mode 100644
index 000000000..88e56168a
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.14/S12.14_A10_T3.js
@@ -0,0 +1,151 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * Using "try" with "catch" or "finally" statement within/without a "while" statement
+ *
+ * @path ch12/12.14/S12.14_A10_T3.js
+ * @description Try statement inside loop, where use break
+ */
+
+// CHECK#1
+var c1=0,fin=0;
+while(c1<2){
+ try{
+ c1+=1;
+ break;
+ }
+ catch(er1){}
+ finally{
+ fin=1;
+ }
+ fin=-1;
+ c1+=2;
+}
+if(fin!==1){
+ $ERROR('#1.1: "finally" block must be evaluated');
+}
+if(c1!==1){
+ $ERROR('#1.2: "try{break}catch finally" must work correctly');
+}
+
+// CHECK#2
+var c2=0,fin2=0;
+while(c2<2){
+ try{
+ throw "ex1";
+ }
+ catch(er1){
+ c2+=1;
+ break;
+ }
+ finally{
+ fin2=1;
+ }
+ c2+=2;
+ fin2=-1;
+}
+if(fin2!==1){
+ $ERROR('#2.1: "finally" block must be evaluated');
+}
+if(c2!==1){
+ $ERROR('#2.2: "try catch{break} finally" must work correctly');
+}
+
+// CHECK#3
+var c3=0,fin3=0;
+while(c3<2){
+ try{
+ throw "ex1";
+ }
+ catch(er1){
+ c3+=1;
+ }
+ finally{
+ fin3=1;
+ break;
+ }
+ c3+=2;
+ fin3=0;
+}
+if(fin3!==1){
+ $ERROR('#3.1: "finally" block must be evaluated');
+}
+if(c3!==1){
+ $ERROR('#3.2: "try catch finally{break}" must work correctly');
+}
+
+// CHECK#4
+var c4=0,fin4=0;
+while(c4<2){
+ try{
+ c4+=1;
+ break;
+ }
+ finally{
+ fin4=1;
+ }
+ fin4=-1;
+ c4+=2;
+}
+if(fin4!==1){
+ $ERROR('#4.1: "finally" block must be evaluated');
+}
+if(c4!==1){
+ $ERROR('#4.2: "try{break} finally" must work correctly');
+}
+
+// CHECK#5
+var c5=0;
+while(c5<2){
+ try{
+ throw "ex1";
+ }
+ catch(er1){
+ break;
+ }
+}
+if(c5!==0){
+ $ERROR('#5: "try catch{break}" must work correctly');
+}
+
+// CHECK#6
+var c6=0;
+while(c6<2){
+ try{
+ c6+=1;
+ break;
+ }
+ catch(er1){}
+ c6+=2;
+}
+if(c6!==1){
+ $ERROR('#6: "try{break} catch" must work correctly');
+}
+
+// CHECK#7
+var c7=0,fin7=0;
+try{
+ while(c7<2){
+ try{
+ c7+=1;
+ throw "ex1";
+ }
+ finally{
+ fin7=1;
+ break;
+ }
+ fin7=-1;
+ c7+=2;
+ }
+}
+catch(ex1){
+ c7=10;
+}
+if(fin7!==1){
+ $ERROR('#7.1: "finally" block must be evaluated');
+}
+if(c7!==1){
+ $ERROR('#7.2: "try finally{break}" must work correctly');
+}
+
diff --git a/js/src/tests/test262/ch12/12.14/S12.14_A10_T4.js b/js/src/tests/test262/ch12/12.14/S12.14_A10_T4.js
new file mode 100644
index 000000000..926e564d3
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.14/S12.14_A10_T4.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.
+
+/**
+ * Using "try" with "catch" or "finally" statement within/without a "while" statement
+ *
+ * @path ch12/12.14/S12.14_A10_T4.js
+ * @description Try statement inside loop, where combinate using break and continue
+ */
+
+// CHECK#1
+var c1=0,fin=0;
+while(c1<2){
+ try{
+ c1+=1;
+ break;
+ }
+ catch(er1){}
+ finally{
+ fin=1;
+ continue;
+ }
+ fin=-1;
+ c1+=2;
+}
+if(fin!==1){
+ $ERROR('#1.1: "finally" block must be evaluated');
+}
+if(c1!==2){
+ $ERROR('#1.2: "try{break} catch finally{continue}" must work correctly');
+}
+
+// CHECK#2
+var c2=0,fin2=0;
+while(c2<2){
+ try{
+ throw "ex1";
+ }
+ catch(er1){
+ c2+=1;
+ break;
+ }
+ finally{
+ fin2=1;
+ continue;
+ }
+ c2+=2;
+ fin2=-1;
+}
+if(fin2!==1){
+ $ERROR('#2.1: "finally" block must be evaluated');
+}
+if(c2!==2){
+ $ERROR('#2.2: "try catch{break} finally{continue} must work correctly');
+}
+
diff --git a/js/src/tests/test262/ch12/12.14/S12.14_A10_T5.js b/js/src/tests/test262/ch12/12.14/S12.14_A10_T5.js
new file mode 100644
index 000000000..e840e9395
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.14/S12.14_A10_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.
+
+/**
+ * Using "try" with "catch" or "finally" statement within/without a "while" statement
+ *
+ * @path ch12/12.14/S12.14_A10_T5.js
+ * @description Throw some exceptions from different place of loop body
+ */
+
+// CHECK#1
+var c=0, i=0;
+var fin=0;
+while(i<10){
+ i+=1;
+ try{
+ if(c===0){
+ throw "ex1";
+ $ERROR('#1.1: throw "ex1" lead to throwing exception');
+ }
+ c+=2;
+ if(c===1){
+ throw "ex2";
+ $ERROR('#1.2: throw "ex2" lead to throwing exception');
+ }
+ }
+ catch(er1){
+ c-=1;
+ continue;
+ $ERROR('#1.3: "try catch{continue} finally" must work correctly');
+ }
+ finally{
+ fin+=1;
+ }
+}
+if(fin!==10){
+ $ERROR('#1.4: "finally" block must be evaluated');
+}
+
diff --git a/js/src/tests/test262/ch12/12.14/S12.14_A11_T1.js b/js/src/tests/test262/ch12/12.14/S12.14_A11_T1.js
new file mode 100644
index 000000000..41cfdb0a5
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.14/S12.14_A11_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.
+
+/**
+ * Using "try" with "catch" or "finally" statement within/without a "for" statement
+ *
+ * @path ch12/12.14/S12.14_A11_T1.js
+ * @description Loop inside try Block, where throw exception
+ */
+
+// CHECK#1
+try{
+ for(var i=0;i<10;i++){
+ if(i===5) throw i;
+ }
+}
+catch(e){
+ if(e!==5)$ERROR('#1: Exception === 5. Actual: Exception ==='+ e );
+}
+
diff --git a/js/src/tests/test262/ch12/12.14/S12.14_A11_T2.js b/js/src/tests/test262/ch12/12.14/S12.14_A11_T2.js
new file mode 100644
index 000000000..7453936fd
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.14/S12.14_A11_T2.js
@@ -0,0 +1,123 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * Using "try" with "catch" or "finally" statement within/without a "for" statement
+ *
+ * @path ch12/12.14/S12.14_A11_T2.js
+ * @description Try statement inside loop, where use continue loop
+ */
+
+// CHECK#1
+var fin=0;
+for(var i=0;i<5;i++){
+ try{
+ i+=1;
+ continue;
+ }
+ catch(er1){}
+ finally{
+ fin=1;
+ }
+ fin=-1;
+}
+if(fin!==1){
+ $ERROR('#1: "finally" block must be evaluated at "try{continue} catch finally" construction');
+}
+
+// CHECK#2
+var c2=0,fin2=0;
+for(var i=0;i<5;i++){
+ try{
+ throw "ex1";
+ }
+ catch(er1){
+ c2+=1;
+ continue;
+ }
+ finally{
+ fin2=1;
+ }
+ fin2=-1;
+}
+if(fin2!==1){
+ $ERROR('#2.1: "finally" block must be evaluated');
+}
+if(c2!==5){
+ $ERROR('#2.1: "try catch{continue} finally" must work correctly');
+}
+
+// CHECK#3
+var c3=0,fin3=0;
+for(var i=0;i<5;i++){
+ try{
+ throw "ex1";
+ }
+ catch(er1){
+ c3+=1;
+ }
+ finally{
+ fin3=1;
+ continue;
+ }
+ fin3=0;
+}
+if(fin3!==1){
+ $ERROR('#3.1: "finally" block must be evaluated');
+}
+if(c3!==5){
+ $ERROR('#3.2: "try catch finally{continue}" must work correctly');
+}
+
+// CHECK#4
+var fin=0;
+for(var i=0;i<5;i++){
+ try{
+ i+=1;
+ continue;
+ }
+ finally{
+ fin=1;
+ }
+ fin=-1;
+};
+if(fin!==1){
+ $ERROR('#4: "finally" block must be evaluated at "try{continue} finally" construction');
+}
+
+// CHECK#5
+var c5=0;
+for(var c5=0;c5<10;){
+ try{
+ throw "ex1";
+ }
+ catch(er1){
+ c5+=1;
+ continue;
+ }
+ c5+=12;
+};
+if(c5!==10){
+ $ERROR('#5: "try catch{continue} must work correctly');
+}
+
+// CHECK#6
+var c6=0,fin6=0;
+for(var c6=0;c6<10;){
+ try{
+ c6+=1;
+ throw "ex1"
+ }
+ finally{
+ fin6=1;
+ continue;
+ }
+ fin6=-1;
+};
+if(fin6!==1){
+ $ERROR('#6.1: "finally" block must be evaluated');
+}
+if(c6!==10){
+ $ERROR('#6.2: "try finally{continue}" must work correctly');
+}
+
diff --git a/js/src/tests/test262/ch12/12.14/S12.14_A11_T3.js b/js/src/tests/test262/ch12/12.14/S12.14_A11_T3.js
new file mode 100644
index 000000000..af9976a2d
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.14/S12.14_A11_T3.js
@@ -0,0 +1,150 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * Using "try" with "catch" or "finally" statement within/without a "for" statement
+ *
+ * @path ch12/12.14/S12.14_A11_T3.js
+ * @description Try statement inside loop, where use break
+ */
+
+// CHECK#1
+var c1=0,fin=0;
+for(var i=0;i<5;i++){
+ try{
+ c1+=1;
+ break;
+ }
+ catch(er1){}
+ finally{
+ fin=1;
+ }
+ fin=-1;
+ c1+=2;
+};
+if(fin!==1){
+ $ERROR('#1.1: "finally" block must be evaluated');
+}
+if(c1!==1){
+ $ERROR('#1.2: "try{break}catch finally" must work correctly');
+}
+
+// CHECK#2
+var c2=0,fin2=0;
+for(var i=0;i<5;i++){
+ try{
+ throw "ex1";
+ }
+ catch(er1){
+ c2+=1;
+ break;
+ }
+ finally{
+ fin2=1;
+ }
+ c2+=2;
+ fin2=-1;
+};
+if(fin2!==1){
+ $ERROR('#2.1: "finally" block must be evaluated');
+}
+if(c2!==1){
+ $ERROR('#2.2: "try catch{break} finally" must work correctly');
+}
+
+// CHECK#3
+var c3=0,fin3=0;
+for(var i=0;i<5;i++){
+ try{
+ throw "ex1";
+ }
+ catch(er1){
+ c3+=1;
+ }
+ finally{
+ fin3=1;
+ break;
+ }
+ c3+=2;
+ fin3=0;
+};
+if(fin3!==1){
+ $ERROR('#3.1: "finally" block must be evaluated');
+}
+if(c3!==1){
+ $ERROR('#3.2: "try catch finally{break}" must work correctly');
+}
+
+// CHECK#4
+var c4=0,fin4=0;
+for(var i=0;i<5;i++){
+ try{
+ c4+=1;
+ break;
+ }
+ finally{
+ fin4=1;
+ }
+ fin4=-1;
+ c4+=2;
+};
+if(fin4!==1){
+ $ERROR('#4.1: "finally" block must be evaluated');
+}
+if(c4!==1){
+ $ERROR('#4.2: "try{break} finally" must work correctly');
+}
+
+// CHECK#5
+for(var i=0;i<5;i++){
+ try{
+ throw "ex1";
+ }
+ catch(er1){
+ break;
+ }
+};
+if(i!==0){
+ $ERROR('#5: "try catch{break}" must work correctly');
+}
+
+// CHECK#6
+var c6=0;
+for(var c6=0;c6<5;){
+ try{
+ c6+=1;
+ break;
+ }
+ catch(er1){}
+ c6+=2;
+};
+if(c6!==1){
+ $ERROR('#6: "try{break} catch" must work correctly');
+}
+
+// CHECK#7
+var c7=0,fin7=0;
+try{
+ for(var c7=0;c7<5;){
+ try{
+ c7+=1;
+ throw "ex1";
+ }
+ finally{
+ fin7=1;
+ break;
+ }
+ fin7=-1;
+ c7+=2;
+ }
+}
+catch(ex1){
+ c7=10;
+}
+if(fin7!==1){
+ $ERROR('#7.1: "finally" block must be evaluated');
+}
+if(c7!==1){
+ $ERROR('#7.2: "try finally{break}" must work correctly');
+}
+
diff --git a/js/src/tests/test262/ch12/12.14/S12.14_A11_T4.js b/js/src/tests/test262/ch12/12.14/S12.14_A11_T4.js
new file mode 100644
index 000000000..6f4762beb
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.14/S12.14_A11_T4.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.
+
+/**
+ * Using "try" with "catch" or "finally" statement within/without a "for" statement
+ *
+ * @path ch12/12.14/S12.14_A11_T4.js
+ * @description Try statement inside loop, where combinate using break and continue
+ */
+
+// CHECK#1
+var c1=0,fin=0;
+for(var i=0;i<5;i++){
+ try{
+ c1+=1;
+ break;
+ }
+ catch(er1){}
+ finally{
+ fin=1;
+ continue;
+ }
+ fin=-1;
+ c1+=2;
+}
+if(fin!==1){
+ $ERROR('#1.1: "finally" block must be evaluated');
+}
+if(c1!==5){
+ $ERROR('#1.2: "try{break} catch finally{continue}" must work correctly');
+}
+
+// CHECK#2
+var c2=0,fin2=0;
+for(var i=0;i<5;i++){
+ try{
+ throw "ex1";
+ }
+ catch(er1){
+ c2+=1;
+ break;
+ }
+ finally{
+ fin2=1;
+ continue;
+ }
+ c2+=2;
+ fin2=-1;
+}
+if(fin2!==1){
+ $ERROR('#2.1: "finally" block must be evaluated');
+}
+if(c2!==5){
+ $ERROR('#2.2: "try catch{break} finally{continue}" must work correctly');
+}
+
diff --git a/js/src/tests/test262/ch12/12.14/S12.14_A12_T1.js b/js/src/tests/test262/ch12/12.14/S12.14_A12_T1.js
new file mode 100644
index 000000000..b6906b1b8
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.14/S12.14_A12_T1.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.
+
+/**
+ * Using "try" with "catch" or "finally" statement within/without a "for-in" statement
+ *
+ * @path ch12/12.14/S12.14_A12_T1.js
+ * @description Loop inside try Block, where throw exception
+ */
+
+var x;
+var mycars = new Array();
+mycars[0] = "Saab";
+mycars[1] = "Volvo";
+mycars[2] = "BMW";
+
+// CHECK#1
+try{
+ for (x in mycars){
+ if (mycars[x]==="BMW") throw "ex";
+ }
+}
+catch(e){
+ if(e!=="ex")$ERROR('#1: Exception ==="ex". Actual: Exception ==='+ e );
+}
+
+
+
diff --git a/js/src/tests/test262/ch12/12.14/S12.14_A12_T2.js b/js/src/tests/test262/ch12/12.14/S12.14_A12_T2.js
new file mode 100644
index 000000000..6a6729962
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.14/S12.14_A12_T2.js
@@ -0,0 +1,132 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * Using "try" with "catch" or "finally" statement within/without a "for-in" statement
+ *
+ * @path ch12/12.14/S12.14_A12_T2.js
+ * @description Try statement inside loop, where use continue loop
+ */
+
+var x;
+var mycars = new Array();
+mycars[0] = "Saab";
+mycars[1] = "Volvo";
+mycars[2] = "BMW";
+
+// CHECK#1
+var fin=0;
+var i=0;
+for (x in mycars){
+ try{
+ i+=1;
+ continue;
+ }
+ catch(er1){}
+ finally{
+ fin=1;
+ }
+ fin=-1;
+}
+if(fin!==1){
+ $ERROR('#1.1: "finally" block must be evaluated');
+}
+if(i!==3){
+ $ERROR('#1.2: "try{continue} catch finally" must work correctly');
+}
+
+// CHECK#2
+var c2=0,fin2=0;
+for (x in mycars){
+ try{
+ throw "ex1";
+ }
+ catch(er1){
+ c2+=1;
+ continue;
+ }
+ finally{
+ fin2=1;
+ }
+ fin2=-1;
+}
+if(fin2!==1){
+ $ERROR('#2.1: "finally" block must be evaluated');
+}
+if(c2!==3){
+ $ERROR('#2.1: "try catch{continue} finally" must work correctly');
+}
+
+// CHECK#3
+var c3=0,fin3=0;
+for (x in mycars){
+ try{
+ throw "ex1";
+ }
+ catch(er1){
+ c3+=1;
+ }
+ finally{
+ fin3=1;
+ continue;
+ }
+ fin3=0;
+}
+if(c3!==3){
+ $ERROR('#3.1: "finally" block must be evaluated');
+}
+if(fin3!==1){
+ $ERROR('#3.2: "try catch finally{continue}" must work correctly');
+}
+
+// CHECK#4
+var fin=0;
+for (x in mycars){
+ try{
+ continue;
+ }
+ finally{
+ fin=1;
+ }
+ fin=-1;
+}
+if(fin!==1){
+ $ERROR('#4: "finally" block must be evaluated at "try{continue} finally" construction');
+}
+
+// CHECK#5
+var c5=0;
+for (x in mycars){
+ try{
+ throw "ex1";
+ }
+ catch(er1){
+ c5+=1;
+ continue;
+ }
+ c5+=12;
+}
+if(c5!==3){
+ $ERROR('#5: "try catch{continue}" must work correctly');
+}
+
+// CHECK#6
+var c6=0,fin6=0;
+for (x in mycars){
+ try{
+ c6+=1;
+ throw "ex1";
+ }
+ finally{
+ fin6=1;
+ continue;
+ }
+ fin6=-1;
+}
+if(fin6!==1){
+ $ERROR('#6.1: "finally" block must be evaluated');
+}
+if(c6!==3){
+ $ERROR('#6.2: "try finally{continue}" must work correctly');
+}
+
diff --git a/js/src/tests/test262/ch12/12.14/S12.14_A12_T3.js b/js/src/tests/test262/ch12/12.14/S12.14_A12_T3.js
new file mode 100644
index 000000000..d3b4cea0c
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.14/S12.14_A12_T3.js
@@ -0,0 +1,162 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * Using "try" with "catch" or "finally" statement within/without a "for-in" statement
+ *
+ * @path ch12/12.14/S12.14_A12_T3.js
+ * @description Try statement inside loop, where use break
+ */
+
+var x;
+var mycars = new Array();
+mycars[0] = "Saab";
+mycars[1] = "Volvo";
+mycars[2] = "BMW";
+
+// CHECK#1
+var c1=0,fin=0;
+for (x in mycars){
+ try{
+ c1+=1;
+ break;
+ }
+ catch(er1){
+ c1+=1;
+ }
+ finally{
+ fin=1;
+ }
+ fin=-1;
+ c1+=2;
+};
+if(fin!==1){
+ $ERROR('#1.1: "finally" block must be evaluated');
+}
+if(c1!==1){
+ $ERROR('#1.2: "try{break}catch finally" must work correctly');
+}
+
+// CHECK#2
+var c2=0,fin2=0;
+for (x in mycars){
+ try{
+ throw "ex1";
+ }
+ catch(er1){
+ c2+=1;
+ break;
+ }
+ finally{
+ fin2=1;
+ }
+ c2+=2;
+ fin2=-1;
+}
+if(fin2!==1){
+ $ERROR('#2.1: "finally" block must be evaluated');
+}
+if(c2!==1){
+ $ERROR('#2.2: "try catch{break} finally" must work correctly');
+}
+
+// CHECK#3
+var c3=0,fin3=0;
+for (x in mycars){
+ try{
+ throw "ex1";
+ }
+ catch(er1){
+ c3+=1;
+ }
+ finally{
+ fin3=1;
+ break;
+ }
+ c3+=2;
+ fin3=0;
+}
+if(fin3!==1){
+ $ERROR('#3.1: "finally" block must be evaluated');
+}
+if(c3!==1){
+ $ERROR('#3.2: "try catch finally{break}" must work correctly');
+}
+
+// CHECK#4
+var c4=0,fin4=0;
+for (x in mycars){
+ try{
+ c4+=1;
+ break;
+ }
+ finally{
+ fin4=1;
+ }
+ fin4=-1;
+ c4+=2;
+}
+if(fin4!==1){
+ $ERROR('#4.1: "finally" block must be evaluated');
+}
+if(c4!==1){
+ $ERROR('#4.2: "try{break} finally" must work correctly');
+}
+
+// CHECK#5
+var c5=0;
+for (x in mycars){
+ try{
+ throw "ex1";
+ c5++;
+ }
+ catch(er1){
+ break;
+ c5++;
+ }
+ c5++;
+}
+if(c5!==0){
+ $ERROR('#5: "try catch{break}" must work correctly');
+}
+
+// CHECK#6
+var c6=0;
+for (x in mycars){
+ try{
+ c6+=1;
+ break;
+ }
+ catch(er1){}
+ c6+=2;
+}
+if(c6!==1){
+ $ERROR('#6: "try{break} catch" must work correctly');
+}
+
+// CHECK#7
+var c7=0,fin7=0;
+try{
+ for (x in mycars){
+ try{
+ c7+=1;
+ throw "ex1";
+ }
+ finally{
+ fin7=1;
+ break;
+ }
+ fin7=-1;
+ c7+=2;
+ }
+}
+catch(ex1){
+ c7=10;
+}
+if(fin7!==1){
+ $ERROR('#7.1: "finally" block must be evaluated');
+}
+if(c7!==1){
+ $ERROR('#7.2: "try finally{break}" must work correctly');
+}
+
diff --git a/js/src/tests/test262/ch12/12.14/S12.14_A12_T4.js b/js/src/tests/test262/ch12/12.14/S12.14_A12_T4.js
new file mode 100644
index 000000000..c09b4e2e7
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.14/S12.14_A12_T4.js
@@ -0,0 +1,62 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * Using "try" with "catch" or "finally" statement within/without a "for-in" statement
+ *
+ * @path ch12/12.14/S12.14_A12_T4.js
+ * @description Try statement inside loop, where combinate using break and continue
+ */
+
+var x;
+var mycars = new Array();
+mycars[0] = "Saab";
+mycars[1] = "Volvo";
+mycars[2] = "BMW";
+
+// CHECK#1
+var c1=0,fin=0;
+for (x in mycars){
+ try{
+ c1+=1;
+ break;
+ }
+ catch(er1){}
+ finally{
+ fin=1;
+ continue;
+ }
+ fin=-1;
+ c1+=2;
+}
+if(fin!==1){
+ $ERROR('#1.1: "finally" block must be evaluated');
+}
+if(c1!==3){
+ $ERROR('#1.2: "try{break} catch finally{continue}" must work correctly');
+}
+
+// CHECK#2
+var c2=0,fin2=0;
+for (x in mycars){
+ try{
+ throw "ex1";
+ }
+ catch(er1){
+ c2+=1;
+ break;
+ }
+ finally{
+ fin2=1;
+ continue;
+ }
+ c2+=2;
+ fin2=-1;
+}
+if(fin2!==1){
+ $ERROR('#2.1: "finally" block must be evaluated');
+}
+if(c2!==3){
+ $ERROR('#2.2: "try catch{break} finally{continue}" must work correctly');
+}
+
diff --git a/js/src/tests/test262/ch12/12.14/S12.14_A13_T1.js b/js/src/tests/test262/ch12/12.14/S12.14_A13_T1.js
new file mode 100644
index 000000000..ab3b79d4d
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.14/S12.14_A13_T1.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.
+
+/**
+ * Using "try" with "catch" or "finally" statement with a "return" statement
+ *
+ * @path ch12/12.14/S12.14_A13_T1.js
+ * @description Using try/catch syntax construction
+ */
+
+// CHECK#1
+function myFunction1(){
+ try{
+ return 1;
+ }
+ catch(err){
+ $ERROR('#1.1: "return 1" inside function does not lead to throwing exception');
+ return 0;
+ }
+ return 2;
+}
+var x1=myFunction1();
+if(x1!==1){
+ $ERROR('#1.2: x1===1. Actual: x1==='+x1);
+}
+
+// CHECK#2
+function myFunction2(){
+ try{
+ throw "exc";
+ return 1;
+ }catch(err){
+ return 2;
+ }
+ return 3;
+}
+var x2=myFunction2();
+if (x2!==2){
+ $ERROR('#2: x2===2. Actual: x2==='+x2);
+}
+
+// CHECK#3
+function myFunction3(){
+ try{
+ return someValue;
+ }catch(err){
+ return 1;
+ }
+ return 2;
+}
+var x3=myFunction3();
+if (x3!==1){
+ $ERROR('#3: x3===1. Actual: x3==='+x3);
+}
+
+// CHECK#4
+function myFunction4(){
+ try{
+ throw "ex1";
+ return 1;
+ }catch(err){
+ throw "ex2"
+ return 0;
+ }
+ return 2;
+}
+try{
+ var x4=myFunction4();
+ $ERROR('#4.1: Throwing exception inside function lead to throwing exception outside this function');
+}
+catch(e){
+ if(e==="ex1"){
+ $ERROR('#4.2: Exception !=="ex1". Actual: catch previous exception');
+ }
+ if(e!=="ex2"){
+ $ERROR('#4.3: Exception ==="ex2". Actual: Exception ==='+ e );
+ }
+}
+
diff --git a/js/src/tests/test262/ch12/12.14/S12.14_A13_T2.js b/js/src/tests/test262/ch12/12.14/S12.14_A13_T2.js
new file mode 100644
index 000000000..947926476
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.14/S12.14_A13_T2.js
@@ -0,0 +1,182 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * Using "try" with "catch" or "finally" statement with a "return" statement
+ *
+ * @path ch12/12.14/S12.14_A13_T2.js
+ * @description Using try/finally syntax construction
+ */
+
+// CHECK#1
+var c1=0;
+function myFunction1(){
+ try{
+ return 1;
+ }finally{
+ c1=1;
+ }
+ return 2;
+}
+var x1=myFunction1();
+if(x1!==1){
+ $ERROR('#1.1: x1===1. Actual: x1==='+x1);
+}
+if (c1!==1){
+ $ERROR('#1.2: "finally" block must be evaluated');
+}
+
+// CHECK#2
+var c2=0;
+function myFunction2(){
+ try{
+ throw "exc";
+ return 1;
+ }finally{
+ c2=1;
+ }
+ return 2;
+}
+try{
+ var x2=myFunction2();
+ $ERROR('#2.1: Throwing exception inside function lead to throwing exception outside this function');
+}
+catch(e){
+ if (c2!==1){
+ $ERROR('#2.2: "finally" block must be evaluated');
+ }
+}
+
+// CHECK#3
+var c3=0;
+function myFunction3(){
+ try{
+ return someValue;
+ }finally{
+ c3=1;
+ }
+ return 2;
+}
+try{
+ var x3=myFunction3();
+ $ERROR('#3.1: Throwing exception inside function lead to throwing exception outside this function');
+}
+catch(e){
+ if (c3!==1){
+ $ERROR('#3.2: "finally" block must be evaluated');
+ }
+}
+
+// CHECK#4
+var c4=0;
+function myFunction4(){
+ try{
+ return 1;
+ }finally{
+ c4=1;
+ throw "exc";
+ return 0;
+ }
+ return 2;
+}
+try{
+ var x4=myFunction4();
+ $ERROR('#4.2: Throwing exception inside function lead to throwing exception outside this function');
+}
+catch(e){
+ if (c4!==1){
+ $ERROR('#4.3: "finally" block must be evaluated');
+ }
+}
+
+// CHECK#5
+var c5=0;
+function myFunction5(){
+ try{
+ return 1;
+ }finally{
+ c5=1;
+ return someValue;
+ return 0;
+ }
+ return 2;
+}
+try{
+ var x5=myFunction5();
+ $ERROR('#5.2: Throwing exception inside function lead to throwing exception outside this function');
+}
+catch(e){
+ if (c5!==1){
+ $ERROR('#5.3: "finally" block must be evaluated');
+ }
+}
+
+// CHECK#6
+var c6=0;
+function myFunction6(){
+ try{
+ throw "ex1";
+ return 1;
+ }finally{
+ c6=1;
+ throw "ex2";
+ return 2;
+ }
+ return 3;
+}
+try{
+ var x6=myFunction6();
+ $ERROR('#6.1: Throwing exception inside function lead to throwing exception outside this function');
+}
+catch(e){
+ if(e==="ex1"){
+ $ERROR('#6.2: Exception !=="ex1". Actual: catch previous exception');
+ }
+ if(e!=="ex2"){
+ $ERROR('#6.3: Exception !=="ex1". Actual: '+e);
+ }
+ if (c6!==1){
+ $ERROR('#6.4: "finally" block must be evaluated');
+ }
+}
+
+// CHECK#7
+var c7=0;
+function myFunction7(){
+ try{
+ return 1;
+ }finally{
+ c7=1;
+ return 2;
+ }
+ return 3;
+}
+var x7=myFunction7();
+if(x7!==2){
+ $ERROR('#7.1: "catch" block must be evaluated');
+}
+if (c7!==1){
+ $ERROR('#7.2: "finally" block must be evaluated');
+}
+
+// CHECK#8
+var c8=0;
+function myFunction8(){
+ try{
+ throw "ex1";
+ }finally{
+ c8=1;
+ return 2;
+ }
+ return 3;
+}
+try{
+ var x8=myFunction8();
+}
+catch(ex1){
+ c8=10;
+}
+if (c8!==1){
+ $ERROR('#8: "finally" block must be evaluated');
+}
+
diff --git a/js/src/tests/test262/ch12/12.14/S12.14_A13_T3.js b/js/src/tests/test262/ch12/12.14/S12.14_A13_T3.js
new file mode 100644
index 000000000..9b3e4a3e9
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.14/S12.14_A13_T3.js
@@ -0,0 +1,186 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * Using "try" with "catch" or "finally" statement with a "return" statement
+ *
+ * @path ch12/12.14/S12.14_A13_T3.js
+ * @description Using try/catch/finally syntax construction
+ */
+
+// CHECK#1
+var c1=0;
+function myFunction1(){
+ try{
+ return 1;
+ }catch(err){
+ $ERROR('#1.1: "return 1" inside function does not lead to throwing exception');
+ return 0;
+ }finally{
+ c1=1;
+ }
+ return 2;
+}
+var x1=myFunction1();
+if(x1!==1){
+ $ERROR('#1.3: x1===1. Actual: x1==='+x1);
+}
+if (c1!==1){
+ $ERROR('#1.4: "finally" block must be evaluated');
+}
+
+// CHECK#2
+var c2=0;
+function myFunction2(){
+ try{
+ throw "exc";
+ return 1;
+ }catch(err){
+ return 0;
+ }finally{
+ c2=1;
+ }
+ return 2;
+}
+var x2=myFunction2();
+if (c2!==1){
+ $ERROR('#2.1: "finally" block must be evaluated');
+}
+if (x2!==0){
+ $ERROR('#2.2: x2===0. Actual: x2==='+x2);
+}
+
+// CHECK#3
+var c3=0;
+function myFunction3(){
+ try{
+ return someValue;
+ }catch(err){
+ return 1;
+ }finally{
+ c3=1;
+ }
+ return 2;
+}
+var x3=myFunction3();
+if (c3!==1){
+ $ERROR('#3.1: "finally" block must be evaluated');
+}
+if (x3!==1){
+ $ERROR('#3.2: x3===1. Actual: x3==='+x3);
+}
+
+// CHECK#4
+var c4=0;
+function myFunction4(){
+ try{
+ throw "ex1";
+ return 1;
+ }catch(err){
+ throw "ex2"
+ return 0;
+ }finally{
+ c4=1;
+ }
+ return 2;
+}
+try{
+ var x4=myFunction4();
+ $ERROR('#4.1: Throwing exception inside function lead to throwing exception outside this function');
+}
+catch(e){
+ if(e==="ex1"){
+ $ERROR('#4.2: Exception !== "ex1". Actual: catch previous exception');
+ }
+ if(e!=="ex2"){
+ $ERROR('#4.3: Exception === "ex2". Actual: Exception ==='+ e );
+ }
+ if (c4!==1){
+ $ERROR('#4.4: "finally" block must be evaluated');
+ }
+}
+
+// CHECK#5
+var c5=0;
+function myFunction5(){
+ try{
+ throw "ex1";
+ return 1;
+ }catch(err){
+ return 0;
+ }finally{
+ c5=1;
+ throw "ex2";
+ }
+ return 2;
+}
+try{
+ var x5=myFunction5();
+ $ERROR('#5.1: Throwing exception inside function lead to throwing exception outside this function');
+}
+catch(e){
+ if(e==="ex1"){
+ $ERROR('#5.2: Exception !== "ex1". Actual: catch previous exception');
+ }
+ if(e!=="ex2"){
+ $ERROR('#5.3: Exception === "ex2". Actual: Exception ==='+ e );
+ }
+ if (c5!==1){
+ $ERROR('#5.4: "finally" block must be evaluated');
+ }
+}
+
+// CHECK#6
+var c6=0;
+function myFunction6(){
+ try{
+ throw "ex1";
+ return 1;
+ }catch(err){
+ throw "ex2";
+ return 0;
+ }finally{
+ c6=1;
+ throw "ex3";
+ }
+ return 2;
+}
+try{
+ var x6=myFunction6();
+ $ERROR('#6.1: Throwing exception inside function lead to throwing exception outside this function');
+}
+catch(e){
+ if(e==="ex1"){
+ $ERROR('#6.2: Exception !== "ex1". Actual: catch previous exception');
+ }
+ if(e==="ex2"){
+ $ERROR('#6.3: Exception !== "ex2". Actual: catch previous exception');
+ }
+ if(e!=="ex3"){
+ $ERROR('#6.4: Exception === "ex3". Actual: Exception ==='+ e );
+ }
+ if(c6!==1) $ERROR('#6.5: "finally" block must be evaluated');
+}
+
+// CHECK#7
+var c7=0;
+function myFunction7(){
+ try{
+ throw "ex1";
+ return 1;
+ }catch(err){
+ throw "ex2";
+ return 0;
+ }finally{
+ c7=1;
+ return 2;
+ }
+ return 3;
+}
+try{
+ var x7=myFunction7();
+ if(x7!==2) $ERROR('#7.1: x7===2. Actual: x7==='+x7);
+}
+catch(e){}
+if(c7!==1) $ERROR('#7.2: "finally" block must be evaluated');
+
diff --git a/js/src/tests/test262/ch12/12.14/S12.14_A14.js b/js/src/tests/test262/ch12/12.14/S12.14_A14.js
new file mode 100644
index 000000000..af2177a05
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.14/S12.14_A14.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.
+
+/**
+ * Using "try" with "catch" or "finally" statement within/without a "with" statement
+ *
+ * @path ch12/12.14/S12.14_A14.js
+ * @description Using try/catch/finally in With and With in try/catch/finally
+ * @noStrict
+ */
+
+var myObj = {p1: 'a',
+ p2: 'b',
+ p3: 'c',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';},
+ parseInt : function(){return 'obj_parseInt';},
+ NaN : 'obj_NaN',
+ Infinity : 'obj_Infinity',
+ eval : function(){return 'obj_eval';},
+ parseFloat : function(){return 'obj_parseFloat';},
+ isNaN : function(){return 'obj_isNaN';},
+ isFinite : function(){return 'obj_isFinite';}
+}
+
+// CHECK#1
+try{
+ with(myObj){
+ throw "ex";
+ }
+}
+catch(e){
+ if (e!=="ex") $ERROR('#1: Exception ==="ex". Actual: Exception ==='+ e );
+}
+
+// CHECK#2
+with(myObj){
+ try{
+ throw p1;
+ }
+ catch(e){
+ if (e!=="a") $ERROR('#2.1: Exception ==="a". Actual: Exception ==='+ e );
+ p1='pass';
+ }
+}
+if(myObj.p1!=='pass') $ERROR('#2.2: "throw p1" lead to throwing exception');
+
+// CHECK#3
+with(myObj){
+ try{
+ p1='fail';
+ throw p2;
+ }
+ catch(e){
+ if (e!=="b") $ERROR('#3.1: Exception ==="b". Actual: Exception ==='+ e );
+ p1='pass';
+ }
+ finally{
+ p2='pass';
+ }
+}
+if(myObj.p1!=='pass') $ERROR('#3.2: "throw p2" lead to throwing exception');
+if(myObj.p2!=='pass') $ERROR('#3.3: "finally" block must be evaluated');
+
+// CHECK#4
+myObj.p1='fail';
+try{
+ with(myObj){
+ try{
+ throw p3;
+ }
+ finally{
+ p1='pass';
+ }
+ }
+}
+catch(e){}
+if(myObj.p1!=='pass') $ERROR('#4: "finally" block must be evaluated');
+
diff --git a/js/src/tests/test262/ch12/12.14/S12.14_A15.js b/js/src/tests/test262/ch12/12.14/S12.14_A15.js
new file mode 100644
index 000000000..abd6a63a7
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.14/S12.14_A15.js
@@ -0,0 +1,92 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * Using "try" with "catch" or "finally" statement within/without a "switch" statement
+ *
+ * @path ch12/12.14/S12.14_A15.js
+ * @description Insert try/catch/finally to switch statement
+ */
+
+// CHECK#1
+function SwitchTest1(value){
+ var result = 0;
+ try{
+ switch(value) {
+ case 1:
+ result += 4;
+ throw result;
+ break;
+ default:
+ result += 32;
+ break;
+ case 4:
+ result += 64;
+ throw "ex";
+ }
+ return result;
+ }
+ catch(e){
+ if ((value===1)&&(e!==4)) $ERROR('#1.1: Exception ===4. Actual: Exception ==='+ e );
+ if ((value===4)&&(e!=="ex")) $ERROR('#1.2: Exception ==="ex". Actual: Exception ==='+ e );
+ }
+ finally{
+ return result;
+ }
+}
+if (SwitchTest1(1)!==4) $ERROR('#1.3: SwitchTest1(1)===4. Actual: SwitchTest1(1)==='+ SwitchTest1(1) );
+if (SwitchTest1(4)!==64) $ERROR('#1.4: SwitchTest1(4)===64. Actual: SwitchTest1(4)==='+ SwitchTest1(4) );
+
+// CHECK#2
+var c2=0;
+function SwitchTest2(value){
+ var result = 0;
+ switch(value) {
+ case 0:
+ try{
+ result += 2;
+ break;
+ }
+ finally{
+ c2=1;
+ }
+ case 1:
+ result += 4;
+ break;
+ default:
+ result += 32;
+ break;
+ }
+ return result;
+}
+if (SwitchTest2(1)!==4) $ERROR('#2.1: SwitchTest1(1)===4. Actual: SwitchTest1(1)==='+ SwitchTest1(1) );
+if (c2===1) $ERROR('#2.2: Evaluate finally block');
+if (SwitchTest2(0)!==2) $ERROR('#2.3: SwitchTest1(0)===2. Actual: SwitchTest1(0)==='+ SwitchTest1(0) );
+if (c2!==1) $ERROR('#2.4: "finally" block must be evaluated');
+
+// CHECK#3
+function SwitchTest3(value){
+ var result = 0;
+ switch(value) {
+ case 0:
+ try{
+ result += 2;
+ throw "ex";
+ }
+ finally{
+ break;
+ }
+ default:
+ result += 32;
+ break;
+ }
+ return result;
+}
+try{
+ var x3=SwitchTest3(0);
+ if (x3!==2) $ERROR('#3.1: x3===2. Actual: x3==='+x3);
+}
+catch(e){
+ $ERROR('#3.2: Catching exception inside function does not lead to throwing exception outside this function');
+}
+
diff --git a/js/src/tests/test262/ch12/12.14/S12.14_A16_T1.js b/js/src/tests/test262/ch12/12.14/S12.14_A16_T1.js
new file mode 100644
index 000000000..b6e39191b
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.14/S12.14_A16_T1.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.
+
+/**
+ * TryStatement: "try Block Catch" or "try Block Finally" or "try Block Catch Finally"
+ *
+ * @path ch12/12.14/S12.14_A16_T1.js
+ * @description Checking if pure "try" syntax construction passes
+ * @negative
+ */
+
+// CHECK#1
+try
+
diff --git a/js/src/tests/test262/ch12/12.14/S12.14_A16_T10.js b/js/src/tests/test262/ch12/12.14/S12.14_A16_T10.js
new file mode 100644
index 000000000..2baef30d0
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.14/S12.14_A16_T10.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.
+
+/**
+ * TryStatement: "try Block Catch" or "try Block Finally" or "try Block Catch Finally"
+ *
+ * @path ch12/12.14/S12.14_A16_T10.js
+ * @description Catch: "catch (Identifier ) Block"
+ * @negative
+ */
+
+// CHECK#1
+try{}
+catch(){}
+finally{}
+
+
+
diff --git a/js/src/tests/test262/ch12/12.14/S12.14_A16_T11.js b/js/src/tests/test262/ch12/12.14/S12.14_A16_T11.js
new file mode 100644
index 000000000..8d8699e6b
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.14/S12.14_A16_T11.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.
+
+/**
+ * TryStatement: "try Block Catch" or "try Block Finally" or "try Block Catch Finally"
+ *
+ * @path ch12/12.14/S12.14_A16_T11.js
+ * @description Catch and Finally are placed into the Block of "try" (whitle expected outside)
+ * @negative
+ */
+
+// CHECK#1
+try{
+ {
+ }
+ catch(e){}
+ finally{}
+}
+
+
diff --git a/js/src/tests/test262/ch12/12.14/S12.14_A16_T12.js b/js/src/tests/test262/ch12/12.14/S12.14_A16_T12.js
new file mode 100644
index 000000000..dacc1a6a6
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.14/S12.14_A16_T12.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.
+
+/**
+ * TryStatement: "try Block Catch" or "try Block Finally" or "try Block Catch Finally"
+ *
+ * @path ch12/12.14/S12.14_A16_T12.js
+ * @description Embedded "try" statements followed by two "catch" statements
+ * @negative
+ */
+
+// CHECK#1
+try
+{
+ try
+ {
+ }
+}
+catch(e1){}
+catch(e2){}
+
+
+
diff --git a/js/src/tests/test262/ch12/12.14/S12.14_A16_T13.js b/js/src/tests/test262/ch12/12.14/S12.14_A16_T13.js
new file mode 100644
index 000000000..20b475499
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.14/S12.14_A16_T13.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.
+
+/**
+ * TryStatement: "try Block Catch" or "try Block Finally" or "try Block Catch Finally"
+ *
+ * @path ch12/12.14/S12.14_A16_T13.js
+ * @description Catch: "catch (Identifier ) Block". Checking if execution of "22" passes at the place of Identifier of "catch"
+ * @negative
+ */
+
+// CHECK#1
+try
+{
+}
+catch("22")
+{
+}
+
+
+
+
diff --git a/js/src/tests/test262/ch12/12.14/S12.14_A16_T14.js b/js/src/tests/test262/ch12/12.14/S12.14_A16_T14.js
new file mode 100644
index 000000000..dfcbc2c65
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.14/S12.14_A16_T14.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.
+
+/**
+ * TryStatement: "try Block Catch" or "try Block Finally" or "try Block Catch Finally"
+ *
+ * @path ch12/12.14/S12.14_A16_T14.js
+ * @description Checking if passing argument to "try" statement fails
+ * @negative
+ */
+
+// CHECK#1
+try(e1){
+}
+catch(e){}
+
+
+
+
diff --git a/js/src/tests/test262/ch12/12.14/S12.14_A16_T15.js b/js/src/tests/test262/ch12/12.14/S12.14_A16_T15.js
new file mode 100644
index 000000000..720bf61dd
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.14/S12.14_A16_T15.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.
+
+/**
+ * TryStatement: "try Block Catch" or "try Block Finally" or "try Block Catch Finally"
+ *
+ * @path ch12/12.14/S12.14_A16_T15.js
+ * @description Finally: "finally Block". Checking if passing argument to "try" statement fails
+ * @negative
+ */
+
+// CHECK#1
+try{
+}
+finally(e){}
+
+
+
+
+
diff --git a/js/src/tests/test262/ch12/12.14/S12.14_A16_T2.js b/js/src/tests/test262/ch12/12.14/S12.14_A16_T2.js
new file mode 100644
index 000000000..a3e9421d5
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.14/S12.14_A16_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.
+
+/**
+ * TryStatement: "try Block Catch" or "try Block Finally" or "try Block Catch Finally"
+ *
+ * @path ch12/12.14/S12.14_A16_T2.js
+ * @description Checking if execution of "catch" with no "try" fails
+ * @negative
+ */
+
+// CHECK#1
+catch
+
diff --git a/js/src/tests/test262/ch12/12.14/S12.14_A16_T3.js b/js/src/tests/test262/ch12/12.14/S12.14_A16_T3.js
new file mode 100644
index 000000000..237580b02
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.14/S12.14_A16_T3.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.
+
+/**
+ * TryStatement: "try Block Catch" or "try Block Finally" or "try Block Catch Finally"
+ *
+ * @path ch12/12.14/S12.14_A16_T3.js
+ * @description Checking if execution of "finally" with no "try" fails
+ * @negative
+ */
+
+// CHECK#1
+finally
+
diff --git a/js/src/tests/test262/ch12/12.14/S12.14_A16_T4.js b/js/src/tests/test262/ch12/12.14/S12.14_A16_T4.js
new file mode 100644
index 000000000..ae3e45bba
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.14/S12.14_A16_T4.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.
+
+/**
+ * TryStatement: "try Block Catch" or "try Block Finally" or "try Block Catch Finally"
+ *
+ * @path ch12/12.14/S12.14_A16_T4.js
+ * @description Catch: "catch (Identifier ) Block". Checking if execution of "catch" that takes no arguments fails
+ * @negative
+ */
+
+// CHECK#1
+try{}
+catch{}
+
diff --git a/js/src/tests/test262/ch12/12.14/S12.14_A16_T5.js b/js/src/tests/test262/ch12/12.14/S12.14_A16_T5.js
new file mode 100644
index 000000000..a825e889a
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.14/S12.14_A16_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.
+
+/**
+ * TryStatement: "try Block Catch" or "try Block Finally" or "try Block Catch Finally"
+ *
+ * @path ch12/12.14/S12.14_A16_T5.js
+ * @description Catch: "catch (Identifier ) Block". Checking if execution of "catch" with no Block fails
+ * @negative
+ */
+
+// CHECK#1
+try{}
+catch()
+
diff --git a/js/src/tests/test262/ch12/12.14/S12.14_A16_T6.js b/js/src/tests/test262/ch12/12.14/S12.14_A16_T6.js
new file mode 100644
index 000000000..8210671c4
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.14/S12.14_A16_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.
+
+/**
+ * TryStatement: "try Block Catch" or "try Block Finally" or "try Block Catch Finally"
+ *
+ * @path ch12/12.14/S12.14_A16_T6.js
+ * @description Block: "{ StatementList }". Checking if execution of "try{ catch{}{}" fails
+ * @negative
+ */
+
+// CHECK#1
+try{
+catch(){}
+
diff --git a/js/src/tests/test262/ch12/12.14/S12.14_A16_T7.js b/js/src/tests/test262/ch12/12.14/S12.14_A16_T7.js
new file mode 100644
index 000000000..76990243d
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.14/S12.14_A16_T7.js
@@ -0,0 +1,16 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * TryStatement: "try Block Catch" or "try Block Finally" or "try Block Catch Finally"
+ *
+ * @path ch12/12.14/S12.14_A16_T7.js
+ * @description Block: "{ StatementList }". Checking if execution of "try{} catch(){" fails
+ * @negative
+ */
+
+// CHECK#1
+try{}
+catch(){
+
+
diff --git a/js/src/tests/test262/ch12/12.14/S12.14_A16_T8.js b/js/src/tests/test262/ch12/12.14/S12.14_A16_T8.js
new file mode 100644
index 000000000..93774a7b6
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.14/S12.14_A16_T8.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.
+
+/**
+ * TryStatement: "try Block Catch" or "try Block Finally" or "try Block Catch Finally"
+ *
+ * @path ch12/12.14/S12.14_A16_T8.js
+ * @description Block: "{ StatementList }". Catch: "catch (Identifier ) Block". Checking if execution of "try{} catch(){finally{}" fails
+ * @negative
+ */
+
+// CHECK#1
+try{}
+catch(){
+finally{}
+
+
+
diff --git a/js/src/tests/test262/ch12/12.14/S12.14_A16_T9.js b/js/src/tests/test262/ch12/12.14/S12.14_A16_T9.js
new file mode 100644
index 000000000..d7fb3308e
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.14/S12.14_A16_T9.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.
+
+/**
+ * TryStatement: "try Block Catch" or "try Block Finally" or "try Block Catch Finally"
+ *
+ * @path ch12/12.14/S12.14_A16_T9.js
+ * @description Checking if execution of "catch(){} finally{}" fails
+ * @negative
+ */
+
+// CHECK#1
+catch(){}
+finally{}
+
+
+
diff --git a/js/src/tests/test262/ch12/12.14/S12.14_A17.js b/js/src/tests/test262/ch12/12.14/S12.14_A17.js
new file mode 100644
index 000000000..6878502e6
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.14/S12.14_A17.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.
+
+/**
+ * Using "try" with "catch" or "finally" statement in a constructor
+ *
+ * @path ch12/12.14/S12.14_A17.js
+ * @description Creating exceptions within constructor
+ */
+
+var i=1;
+function Integer( value, exception ) {
+ try{
+ this.value = checkValue( value );
+ if(exception) $ERROR('#'+i+'.1: Must be exception');
+ }
+ catch(e){
+ this.value = e.toString();
+ if(!exception) $ERROR('#'+i+'.2: Don`t must be exception');
+ }
+ i++;
+}
+
+function checkValue(value){
+ if(Math.floor(value)!=value||isNaN(value)){
+ throw (INVALID_INTEGER_VALUE +": " + value);
+ }
+ else{
+ return value;
+ }
+}
+
+// CHECK#1
+new Integer(13, false);
+// CHECK#2
+new Integer(NaN, true);
+// CHECK#3
+new Integer(0, false);
+// CHECK#4
+new Integer(Infinity, false);
+// CHECK#5
+new Integer(-1.23, true);
+// CHECK#6
+new Integer(Math.LN2, true);
+
diff --git a/js/src/tests/test262/ch12/12.14/S12.14_A18_T1.js b/js/src/tests/test262/ch12/12.14/S12.14_A18_T1.js
new file mode 100644
index 000000000..635c235d0
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.14/S12.14_A18_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.
+
+/**
+ * Catching objects with try/catch/finally statement
+ *
+ * @path ch12/12.14/S12.14_A18_T1.js
+ * @description Catching undefined
+ */
+
+// CHECK#1
+try{
+ throw undefined;
+}
+catch(e){
+ if (e!==undefined) $ERROR('#1: Exception === undefined. Actual: '+e);
+}
+
diff --git a/js/src/tests/test262/ch12/12.14/S12.14_A18_T2.js b/js/src/tests/test262/ch12/12.14/S12.14_A18_T2.js
new file mode 100644
index 000000000..f6499be27
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.14/S12.14_A18_T2.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.
+
+/**
+ * Catching objects with try/catch/finally statement
+ *
+ * @path ch12/12.14/S12.14_A18_T2.js
+ * @description Catching null
+ */
+
+// CHECK#1
+try{
+ throw null;
+}
+catch(e){
+ if (e!==null) $ERROR('#1: Exception ===null. Actual: '+e);
+}
+
diff --git a/js/src/tests/test262/ch12/12.14/S12.14_A18_T3.js b/js/src/tests/test262/ch12/12.14/S12.14_A18_T3.js
new file mode 100644
index 000000000..1ee0644d1
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.14/S12.14_A18_T3.js
@@ -0,0 +1,62 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * Catching objects with try/catch/finally statement
+ *
+ * @path ch12/12.14/S12.14_A18_T3.js
+ * @description Catching boolean
+ */
+
+// CHECK#1
+try{
+ throw true;
+}
+catch(e){
+ if (e!==true) $ERROR('#1: Exception ===true. Actual: Exception ==='+ e );
+}
+
+// CHECK#2
+try{
+ throw false;
+}
+catch(e){
+ if (e!==false) $ERROR('#2: Exception ===false. Actual: Exception ==='+ e );
+}
+
+// CHECK#3
+var b=false;
+try{
+ throw b;
+}
+catch(e){
+ if (e!==false) $ERROR('#3: Exception ===false. Actual: Exception ==='+ e );
+}
+
+// CHECK#4
+var b=true;
+try{
+ throw b;
+}
+catch(e){
+ if (e!==true) $ERROR('#4: Exception ===true. Actual: Exception ==='+ e );
+}
+
+// CHECK#5
+var b=true;
+try{
+ throw b&&false;
+}
+catch(e){
+ if (e!==false) $ERROR('#5: Exception ===false. Actual: Exception ==='+ e );
+}
+
+// CHECK#5
+var b=true;
+try{
+ throw b||false;
+}
+catch(e){
+ if (e!==true) $ERROR('#6: Exception ===true. Actual: Exception ==='+ e );
+}
+
diff --git a/js/src/tests/test262/ch12/12.14/S12.14_A18_T4.js b/js/src/tests/test262/ch12/12.14/S12.14_A18_T4.js
new file mode 100644
index 000000000..3cd7d9064
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.14/S12.14_A18_T4.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.
+
+/**
+ * Catching objects with try/catch/finally statement
+ *
+ * @path ch12/12.14/S12.14_A18_T4.js
+ * @description Catching string
+ */
+
+// CHECK#1
+try{
+ throw "exception #1";
+}
+catch(e){
+ if (e!=="exception #1") $ERROR('#1: Exception ==="exception #1". Actual: Exception ==='+ e );
+}
+
+// CHECK#2
+try{
+ throw "exception"+" #1";
+}
+catch(e){
+ if (e!=="exception #1") $ERROR('#2: Exception ==="exception #1". Actual: Exception ==='+ e );
+}
+
+// CHECK#3
+var b="exception #1";
+try{
+ throw b;
+}
+catch(e){
+ if (e!=="exception #1") $ERROR('#3: Exception ==="exception #1". Actual: Exception ==='+ e );
+}
+
+// CHECK#4
+var a="exception";
+var b=" #1";
+try{
+ throw a+b;
+}
+catch(e){
+ if (e!=="exception #1") $ERROR('#4: Exception ==="exception #1". Actual: Exception ==='+ e );
+}
+
diff --git a/js/src/tests/test262/ch12/12.14/S12.14_A18_T5.js b/js/src/tests/test262/ch12/12.14/S12.14_A18_T5.js
new file mode 100644
index 000000000..c46c421be
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.14/S12.14_A18_T5.js
@@ -0,0 +1,102 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * Catching objects with try/catch/finally statement
+ *
+ * @path ch12/12.14/S12.14_A18_T5.js
+ * @description Catching Number
+ */
+
+// CHECK#1
+try{
+ throw 13;
+}
+catch(e){
+ if (e!==13) $ERROR('#1: Exception ===13. Actual: Exception ==='+ e );
+}
+
+// CHECK#2
+try{
+ throw 10+3;
+}
+catch(e){
+ if (e!==13) $ERROR('#2: Exception ===13. Actual: Exception ==='+ e );
+}
+
+// CHECK#3
+var b=13;
+try{
+ throw b;
+}
+catch(e){
+ if (e!==13) $ERROR('#3: Exception ===13. Actual: Exception ==='+ e );
+}
+
+// CHECK#4
+var a=3;
+var b=10;
+try{
+ throw a+b;
+}
+catch(e){
+ if (e!==13) $ERROR('#4: Exception ===13. Actual: Exception ==='+ e );
+}
+
+// CHECK#5
+try{
+ throw 2.13;
+}
+catch(e){
+ if (e!==2.13) $ERROR('#5: Exception ===2.13. Actual: Exception ==='+ e );
+}
+
+// CHECK#6
+var ex=2/3;
+try{
+ throw 2/3;
+}
+catch(e){
+ if (e!==ex) $ERROR('#6: Exception ===2/3. Actual: Exception ==='+ e );
+}
+
+// CHECK#7
+try{
+ throw NaN;
+}
+catch(e){
+ if (!isNaN(e)) $ERROR('#7: Exception is NaN');
+}
+
+// CHECK#8
+try{
+ throw +Infinity;
+}
+catch(e){
+ if (e!==+Infinity) $ERROR('#8: Exception ===+Infinity. Actual: Exception ==='+ e );
+}
+
+// CHECK#9
+try{
+ throw -Infinity;
+}
+catch(e){
+ if (e!==-Infinity) $ERROR('#9: Exception ===-Infinity. Actual: Exception ==='+ e );
+}
+
+// CHECK#10
+try{
+ throw +0;
+}
+catch(e){
+ if (e!==+0) $ERROR('#10: Exception ===+0. Actual: Exception ==='+ e );
+}
+
+// CHECK#11
+try{
+ throw -0;
+}
+catch(e){
+ if (e!==-0) $ERROR('#11: Exception ===-0. Actual: Exception ==='+ e );
+}
+
diff --git a/js/src/tests/test262/ch12/12.14/S12.14_A18_T6.js b/js/src/tests/test262/ch12/12.14/S12.14_A18_T6.js
new file mode 100644
index 000000000..ca17450b3
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.14/S12.14_A18_T6.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.
+
+/**
+ * Catching objects with try/catch/finally statement
+ *
+ * @path ch12/12.14/S12.14_A18_T6.js
+ * @description Catching Object
+ */
+
+var myObj = {p1: 'a',
+ p2: 'b',
+ p3: 'c',
+ value: 'myObj_value',
+ valueOf : function(){return 'obj_valueOf';},
+ parseInt : function(){return 'obj_parseInt';},
+ NaN : 'obj_NaN',
+ Infinity : 'obj_Infinity',
+ eval : function(){return 'obj_eval';},
+ parseFloat : function(){return 'obj_parseFloat';},
+ isNaN : function(){return 'obj_isNaN';},
+ isFinite : function(){return 'obj_isFinite';},
+ i:7,
+}
+
+try{
+ throw myObj;
+}
+catch(e){
+// CHECK#1
+ if (e.p1!=="a") $ERROR('#1: e.p1==="a". Actual: e.p1==='+ e.p1 );
+// CHECK#2
+ if (e.value!=='myObj_value') $ERROR('#2: e.value===\'myObj_value\'. Actual: e.value==='+ e.value );
+// CHECK#3
+ if (e.eval()!=='obj_eval') $ERROR('#3: e.eval()===\'obj_eval\'. Actual: e.eval()==='+ e.eval() );
+}
+
+// CHECK#4
+myObj.i=6;
+try{
+ throw myObj;
+}
+catch(e){}
+if (myObj.i!==6) $ERROR('#4: Handling of catch must be correct');
+
+// CHECK#5
+myObj.i=6;
+try{
+ throw myObj;
+}
+catch(e){
+ e.i=10;
+}
+if (myObj.i!==10) $ERROR('#5: Handling of catch must be correct');
+
diff --git a/js/src/tests/test262/ch12/12.14/S12.14_A18_T7.js b/js/src/tests/test262/ch12/12.14/S12.14_A18_T7.js
new file mode 100644
index 000000000..905cfa0bc
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.14/S12.14_A18_T7.js
@@ -0,0 +1,66 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * Catching objects with try/catch/finally statement
+ *
+ * @path ch12/12.14/S12.14_A18_T7.js
+ * @description Catching Array
+ */
+
+var mycars = new Array();
+mycars[0] = "Saab";
+mycars[1] = "Volvo";
+mycars[2] = "BMW";
+
+var mycars2 = new Array();
+mycars2[0] = "Mercedes";
+mycars2[1] = "Jeep";
+mycars2[2] = "Suzuki";
+
+// CHECK#1
+try{
+ throw mycars;
+}
+catch(e){
+ for (var i=0;i<3;i++){
+ if (e[i]!==mycars[i]) $ERROR('#1.'+i+': Exception['+i+']===mycars['+i+']. Actual: Exception['+i+']==='+ e[i] );
+ }
+}
+
+// CHECK#2
+try{
+ throw mycars.concat(mycars2);
+}
+catch(e){
+ for (var i=0;i<3;i++){
+ if (e[i]!==mycars[i]) $ERROR('#2.'+i+': Exception['+i+']===mycars['+i+']. Actual: Exception['+i+']==='+ e[i] );
+ }
+ for (var i=3;i<6;i++){
+ if (e[i]!==mycars2[i-3]) $ERROR('#2.'+i+': Exception['+i+']===mycars2['+i+']. Actual: Exception['+i+']==='+ e[i] );
+ }
+}
+
+// CHECK#3
+try{
+ throw new Array("Mercedes","Jeep","Suzuki");
+}
+catch(e){
+ for (var i=0;i<3;i++){
+ if (e[i]!==mycars2[i]) $ERROR('#3.'+i+': Exception['+i+']===mycars2['+i+']. Actual: Exception['+i+']==='+ e[i]);
+ }
+}
+
+// CHECK#4
+try{
+ throw mycars.concat(new Array("Mercedes","Jeep","Suzuki"));
+}
+catch(e){
+ for (var i=0;i<3;i++){
+ if (e[i]!==mycars[i]) $ERROR('#4.'+i+': Exception['+i+']===mycars['+i+']. Actual: Exception['+i+']==='+ e[i] );
+ }
+ for (var i=3;i<6;i++){
+ if (e[i]!==mycars2[i-3]) $ERROR('#4.'+i+': Exception['+i+']===mycars2['+(i-3)+']. Actual: Exception['+i+']==='+ e[i]);
+ }
+}
+
diff --git a/js/src/tests/test262/ch12/12.14/S12.14_A19_T1.js b/js/src/tests/test262/ch12/12.14/S12.14_A19_T1.js
new file mode 100644
index 000000000..c2e8d27a4
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.14/S12.14_A19_T1.js
@@ -0,0 +1,68 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * Catching system exceptions of different types with try statement
+ *
+ * @path ch12/12.14/S12.14_A19_T1.js
+ * @description Testing try/catch syntax construction
+ */
+
+// CHECK#1
+try{
+ throw (Error("hello"));
+}
+catch(e){
+ if (e.toString()!=="Error: hello") $ERROR('#1: Exception.toString()==="Error: hello". Actual: Exception is '+e);
+}
+
+// CHECK#2
+try{
+ throw (new Error("hello"));
+}
+catch(e){
+ if (e.toString()!=="Error: hello") $ERROR('#2: Exception.toString()==="Error: hello". Actual: Exception is '+e);
+}
+
+// CHECK#3
+var c3=0;
+try{
+ throw EvalError(1);
+}
+catch(e){
+ if (e.toString()!=="EvalError: 1") $ERROR('#3: Exception.toString()==="EvalError: 1". Actual: Exception is '+e);
+}
+
+// CHECK#4
+try{
+ throw RangeError(1);
+}
+catch(e){
+ if (e.toString()!=="RangeError: 1") $ERROR('#4: Exception.toString()==="RangeError: 1". Actual: Exception is '+e);
+}
+
+// CHECK#5
+try{
+ throw ReferenceError(1);
+}
+catch(e){
+ if (e.toString()!=="ReferenceError: 1") $ERROR('#5: Exception.toString()==="ReferenceError: 1". Actual: Exception is '+e);
+}
+
+// CHECK#6
+var c6=0;
+try{
+ throw TypeError(1);
+}
+catch(e){
+ if (e.toString()!=="TypeError: 1") $ERROR('#6: Exception.toString()==="TypeError: 1". Actual: Exception is '+e);
+}
+
+// CHECK#7
+try{
+ throw URIError("message", "fileName", "1");
+}
+catch(e){
+ if (e.toString()!=="URIError: message") $ERROR('#7: Exception.toString()==="URIError: message". Actual: Exception is '+e);
+}
+
diff --git a/js/src/tests/test262/ch12/12.14/S12.14_A19_T2.js b/js/src/tests/test262/ch12/12.14/S12.14_A19_T2.js
new file mode 100644
index 000000000..acc465ea1
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.14/S12.14_A19_T2.js
@@ -0,0 +1,102 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * Catching system exceptions of different types with try statement
+ *
+ * @path ch12/12.14/S12.14_A19_T2.js
+ * @description Testing try/catch/finally syntax construction
+ */
+
+var fin=0;
+// CHECK#1
+try{
+ throw (Error("hello"));
+}
+catch(e){
+ if (e.toString()!=="Error: hello") $ERROR('#1.1: Exception.toString()==="Error: hello". Actual: Exception is '+e);
+}
+finally{
+ fin=1;
+}
+if (fin!==1) $ERROR('#1.2: "finally" block must be evaluated');
+
+// CHECK#2
+fin=0;
+try{
+ throw (new Error("hello"));
+}
+catch(e){
+ if (e.toString()!=="Error: hello") $ERROR('#2.1: Exception.toString()==="Error: hello". Actual: Exception is '+e);
+}
+finally{
+ fin=1;
+}
+if (fin!==1) $ERROR('#2.2: "finally" block must be evaluated');
+
+// CHECK#3
+fin=0;
+var c3=0;
+try{
+ throw EvalError(1);
+}
+catch(e){
+ if (e.toString()!=="EvalError: 1") $ERROR('#3.1: Exception.toString()==="EvalError: 1". Actual: Exception is '+e);
+}
+finally{
+ fin=1;
+}
+if (fin!==1) $ERROR('#3.2: "finally" block must be evaluated');
+
+// CHECK#4
+fin=0;
+try{
+ throw RangeError(1);
+}
+catch(e){
+ if (e.toString()!=="RangeError: 1") $ERROR('#4.1: Exception.toString()==="RangeError: 1". Actual: Exception is '+e);
+}
+finally{
+ fin=1;
+}
+if (fin!==1) $ERROR('#4.2: "finally" block must be evaluated');
+
+// CHECK#5
+fin=0;
+try{
+ throw ReferenceError(1);
+}
+catch(e){
+ if (e.toString()!=="ReferenceError: 1") $ERROR('#5.1: Exception.toString()==="ReferenceError: 1". Actual: Exception is '+e);
+}
+finally{
+ fin=1;
+}
+if (fin!==1) $ERROR('#5.2: "finally" block must be evaluated');
+
+// CHECK#6
+fin=0;
+try{
+ throw TypeError(1);
+}
+catch(e){
+ if (e.toString()!=="TypeError: 1") $ERROR('#6.1: Exception.toString()==="TypeError: 1". Actual: Exception is '+e);
+}
+finally{
+ fin=1;
+}
+if (fin!==1) $ERROR('#6.2: "finally" block must be evaluated');
+
+// CHECK#7
+fin=0;
+try{
+ throw URIError("message", "fileName", "1");
+}
+catch(e){
+ if (e.toString()!=="URIError: message") $ERROR('#7.1: Exception.toString()==="URIError: message". Actual: Exception is '+e);
+}
+finally{
+ fin=1;
+}
+if (fin!==1) $ERROR('#7.2: "finally" block must be evaluated');
+
diff --git a/js/src/tests/test262/ch12/12.14/S12.14_A2.js b/js/src/tests/test262/ch12/12.14/S12.14_A2.js
new file mode 100644
index 000000000..4185b346f
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.14/S12.14_A2.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.
+
+/**
+ * Throwing exception with "throw" and catching it with "try" statement
+ *
+ * @path ch12/12.14/S12.14_A2.js
+ * @description Checking if execution of "catch" catches an exception thrown with "throw"
+ */
+
+// CHECK#1
+try {
+ throw "catchme";
+ $ERROR('#1: throw "catchme" lead to throwing exception');
+}
+catch(e){}
+
+// CHECK#2
+var c2=0;
+try{
+ try{
+ throw "exc";
+ $ERROR('#2.1: throw "exc" lead to throwing exception');
+ }finally{
+ c2=1;
+ }
+}
+catch(e){
+ if (c2!==1){
+ $ERROR('#2.2: "finally" block must be evaluated');
+ }
+}
+
+// CHECK#3
+var c3=0;
+try{
+ throw "exc";
+ $ERROR('#3.1: throw "exc" lead to throwing exception');
+}
+catch(err){
+ var x3=1;
+}
+finally{
+ c3=1;
+}
+if (x3!==1){
+ $ERROR('#3.2: "catch" block must be evaluated');
+}
+if (c3!==1){
+ $ERROR('#3.3: "finally" block must be evaluated');
+}
+
diff --git a/js/src/tests/test262/ch12/12.14/S12.14_A3.js b/js/src/tests/test262/ch12/12.14/S12.14_A3.js
new file mode 100644
index 000000000..b87f6d57c
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.14/S12.14_A3.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.
+
+/**
+ * Catching system exception with "try" statement
+ *
+ * @path ch12/12.14/S12.14_A3.js
+ * @description Checking if execution of "catch" catches system exceptions
+ */
+
+// CHECK#1
+try{
+ y;
+ $ERROR('#1: "y" lead to throwing exception');
+}
+catch(e){}
+
+// CHECK#2
+var c2=0;
+try{
+ try{
+ someValue;
+ $ERROR('#3.1: "someValues" lead to throwing exception');
+ }
+ finally{
+ c2=1;
+ }
+}
+catch(e){
+ if (c2!==1){
+ $ERROR('#3.2: "finally" block must be evaluated');
+ }
+}
+
+// CHECK#3
+var c3=0,x3=0;
+try{
+ x3=someValue;
+ $ERROR('#3.1: "x3=someValues" lead to throwing exception');
+}
+catch(err){
+ x3=1;
+}
+finally{
+ c3=1;
+}
+if (x3!==1){
+ $ERROR('#3.2: "catch" block must be evaluated');
+}
+if (c3!==1){
+ $ERROR('#3.3: "finally" block must be evaluated');
+}
+
diff --git a/js/src/tests/test262/ch12/12.14/S12.14_A4.js b/js/src/tests/test262/ch12/12.14/S12.14_A4.js
new file mode 100644
index 000000000..e904f5c9e
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.14/S12.14_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.
+
+/**
+ * Sanity test for "catch(Indetifier) statement"
+ *
+ * @path ch12/12.14/S12.14_A4.js
+ * @description Checking if deleting an exception fails
+ * @noStrict
+ */
+
+// CHECK#1
+try {
+ throw "catchme";
+ $ERROR('#1.1: throw "catchme" lead to throwing exception');
+}
+catch (e) {
+ if (delete e){
+ $ERROR('#1.2: Exception has DontDelete property');
+ }
+ if (e!=="catchme") {
+ $ERROR('#1.3: Exception === "catchme". Actual: Exception ==='+ e );
+ }
+}
+
+// CHECK#2
+try {
+ throw "catchme";
+ $ERROR('#2.1: throw "catchme" lead to throwing exception');
+}
+catch(e){}
+try{
+ e;
+ $ERROR('#2.2: Deleting catching exception after ending "catch" block');
+}
+catch(err){}
+
diff --git a/js/src/tests/test262/ch12/12.14/S12.14_A5.js b/js/src/tests/test262/ch12/12.14/S12.14_A5.js
new file mode 100644
index 000000000..f7620908b
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.14/S12.14_A5.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.
+
+/**
+ * The production TryStatement: "try Block Finally" and the production TryStatement: "try Block Catch Finally"
+ *
+ * @path ch12/12.14/S12.14_A5.js
+ * @description Checking "catch" catches the Identifier in appropriate way
+ */
+
+// CHECK#1
+try {
+ throw "catchme";
+ throw "dontcatchme";
+ $ERROR('#1.1: throw "catchme" lead to throwing exception');
+}
+catch (e) {
+ if(e==="dontcatchme"){
+ $ERROR('#1.2: Exception !== "dontcatchme"');
+ }
+ if (e!=="catchme") {
+ $ERROR('#1.3: Exception === "catchme". Actual: Exception ==='+ e );
+ }
+}
+
+// CHECK#2
+function SwitchTest1(value){
+ var result = 0;
+ try{
+ switch(value) {
+ case 1:
+ result += 4;
+ throw result;
+ break;
+ case 4:
+ result += 64;
+ throw "ex";
+ }
+ return result;
+ }
+ catch(e){
+ if ((value===1)&&(e!==4)) $ERROR('#2.1: Exception === 4. Actual: '+e);
+ if ((value===4)&&(e!=="ex"))$ERROR('#2.2: Exception === "ex". Actual: '+e);
+ }
+ finally{
+ return result;
+ }
+}
+if (SwitchTest1(1)!==4) $ERROR('#2.3: "finally" block must be evaluated');
+if (SwitchTest1(4)!==64)$ERROR('#2.4: "finally" block must be evaluated');
+
diff --git a/js/src/tests/test262/ch12/12.14/S12.14_A6.js b/js/src/tests/test262/ch12/12.14/S12.14_A6.js
new file mode 100644
index 000000000..96b30dbc0
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.14/S12.14_A6.js
@@ -0,0 +1,67 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * The production TryStatement: "try Block Catch Finally"
+ *
+ * @path ch12/12.14/S12.14_A6.js
+ * @description Executing sequence of "try" statements, using counters with varying values within
+ */
+
+// CHECK#1
+var c1=0;
+try {
+ c1+=1;
+ y;
+ $ERROR('#1.1: "y" lead to throwing exception');
+}
+catch (e) {
+ c1*=2;
+}
+if (c1!==2){
+ $ERROR('#1.2: Sequence evaluation of commands try/catch is 1. try, 2. catch');
+}
+
+// CHECK#2
+var c2=0;
+try{
+ c2+=1;
+}
+finally{
+ c2*=2;
+}
+if (c2!==2){
+ $ERROR('#2: Sequence evaluation of commands try/finally is 1. try, 2. finally');
+}
+
+// CHECK#3
+var c3=0;
+try{
+ c3=1;
+ z;
+}
+catch(err){
+ c3*=2;
+}
+finally{
+ c3+=1;
+}
+if (c3!==3){
+ $ERROR('#3: Sequence evaluation of commands try/catch/finally(with exception) is 1. try, 2. catch, 3. finally');
+}
+
+// CHECK#4
+var c4=0;
+try{
+ c4=1;
+}
+catch(err){
+ c4*=3;
+}
+finally{
+ c4+=1;
+}
+if (c4!==2){
+ $ERROR('#4: Sequence evaluation of commands try/catch/finally(without exception) is 1. try, 2. finally');
+}
+
diff --git a/js/src/tests/test262/ch12/12.14/S12.14_A7_T1.js b/js/src/tests/test262/ch12/12.14/S12.14_A7_T1.js
new file mode 100644
index 000000000..86efa4fad
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.14/S12.14_A7_T1.js
@@ -0,0 +1,138 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * Evaluating the nested productions TryStatement
+ *
+ * @path ch12/12.14/S12.14_A7_T1.js
+ * @description Checking if the production of nested TryStatement statements evaluates correct
+ */
+
+// CHECK#1
+try{
+ try{
+ throw "ex2";
+ }
+ catch(er2){
+ if (er2!=="ex2")
+ $ERROR('#1.1: Exception === "ex2". Actual: Exception ==='+ e );
+ throw "ex1";
+ }
+ }
+ catch(er1){
+ if (er1!=="ex1") $ERROR('#1.2: Exception === "ex1". Actual: '+er1);
+ if (er1==="ex2") $ERROR('#1.3: Exception !== "ex2". Actual: catch previous embedded exception');
+}
+
+// CHECK#2
+try{
+ throw "ex1";
+}
+catch(er1){
+ try{
+ throw "ex2";
+ }
+ catch(er1){
+ if (er1==="ex1") $ERROR('#2.1: Exception !== "ex1". Actual: catch previous catching exception');
+ if (er1!=="ex2") $ERROR('#2.2: Exception === "ex2". Actual: Exception ==='+ er1 );
+ }
+ if (er1!=="ex1") $ERROR('#2.3: Exception === "ex1". Actual: Exception ==='+ er1 );
+ if (er1==="ex2") $ERROR('#2.4: Exception !== "ex2". Actual: catch previous catching exception');
+}
+
+// CHECK#3
+try{
+ throw "ex1";
+}
+catch(er1){
+ if (er1!=="ex1") $ERROR('#3.1: Exception ==="ex1". Actual: Exception ==='+ er1 );
+}
+finally{
+ try{
+ throw "ex2";
+ }
+ catch(er1){
+ if (er1==="ex1") $ERROR('#3.2: Exception !=="ex1". Actual: catch previous embedded exception');
+ if (er1!=="ex2") $ERROR('#3.3: Exception ==="ex2". Actual: Exception ==='+ er1 );
+ }
+}
+
+// CHECK#4
+var c4=0;
+try{
+ throw "ex1";
+}
+catch(er1){
+ try{
+ throw "ex2";
+ }
+ catch(er1){
+ if (er1==="ex1") $ERROR('#4.1: Exception !=="ex1". Actual: catch previous catching exception');
+ if (er1!=="ex2") $ERROR('#4.2: Exception ==="ex2". Actual: Exception ==='+ er1 );
+ }
+ if (er1!=="ex1") $ERROR('#4.3: Exception ==="ex1". Actual: Exception ==='+ er1 );
+ if (er1==="ex2") $ERROR('#4.4: Exception !=="ex2". Actual: Catch previous embedded exception');
+}
+finally{
+ c4=1;
+}
+if (c4!==1) $ERROR('#4.5: "finally" block must be evaluated');
+
+// CHECK#5
+var c5=0;
+try{
+ try{
+ throw "ex2";
+ }
+ catch(er1){
+ if (er1!=="ex2") $ERROR('#5.1: Exception ==="ex2". Actual: Exception ==='+ er1 );
+ }
+ throw "ex1";
+}
+catch(er1){
+ if (er1!=="ex1") $ERROR('#5.2: Exception ==="ex1". Actual: Exception ==='+ er1 );
+ if (er1==="ex2") $ERROR('#5.3: Exception !=="ex2". Actual: catch previous embedded exception');
+}
+finally{
+ c5=1;
+}
+if (c5!==1) $ERROR('#5.4: "finally" block must be evaluated');
+
+// CHECK#6
+var c6=0;
+try{
+ try{
+ throw "ex1";
+ }
+ catch(er1){
+ if (er1!=="ex1") $ERROR('#6.1: Exception ==="ex1". Actual: Exception ==='+ er1 );
+ }
+}
+finally{
+ c6=1;
+}
+if (c6!==1) $ERROR('#6.2: "finally" block must be evaluated');
+
+// CHECK#7
+var c7=0;
+try{
+ try{
+ throw "ex1";
+ }
+ finally{
+ try{
+ c7=1;
+ throw "ex2";
+ }
+ catch(er1){
+ if (er1!=="ex2") $ERROR('#7.1: Exception ==="ex2". Actual: Exception ==='+ er1 );
+ if (er1==="ex1") $ERROR('#7.2: Exception !=="ex1". Actual: catch previous embedded exception');
+ c7++;
+ }
+ }
+}
+catch(er1){
+ if (er1!=="ex1") $ERROR('#7.3: Exception ==="ex1". Actual: Exception ==='+ er1 );
+}
+if (c7!==2) $ERROR('#7.4: "finally" block must be evaluated');
+
diff --git a/js/src/tests/test262/ch12/12.14/S12.14_A7_T2.js b/js/src/tests/test262/ch12/12.14/S12.14_A7_T2.js
new file mode 100644
index 000000000..94a8c343d
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.14/S12.14_A7_T2.js
@@ -0,0 +1,152 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * Evaluating the nested productions TryStatement
+ *
+ * @path ch12/12.14/S12.14_A7_T2.js
+ * @description Checking if the production of nested TryStatement statements evaluates correct
+ */
+
+// CHECK#1
+try{
+ try{
+ throw "ex2";
+ }
+ finally{
+ throw "ex1";
+ }
+}
+catch(er1){
+ if (er1!=="ex1") $ERROR('#1.2: Exception === "ex1". Actual: Exception ==='+er1 );
+ if (er1==="ex2") $ERROR('#1.3: Exception !== "ex2". Actual: catch previous embedded exception');
+}
+
+// CHECK#2
+try{
+ try{
+ throw "ex1";
+ }
+ catch(er1){
+ if (er1!=="ex1") $ERROR('#2.1: Exception === "ex1". Actual: Exception ==='+er1 );
+ try{
+ throw "ex2";
+ }
+ finally{
+ throw "ex3";
+ }
+ $ERROR('#2.2: throw "ex1" lead to throwing exception');
+ }
+}
+catch(er1){
+ if (er1!=="ex3") $ERROR('#2.3: Exception === "ex3". Actual: Exception ==='+er1 );
+}
+
+// CHECK#3
+try{
+ try{
+ throw "ex1";
+ }
+ catch(er1){
+ if (er1!=="ex1") $ERROR('#3.1: Exception === "ex1". Actual: Exception ==='+er1 );
+ }
+ finally{
+ try{
+ throw "ex2";
+ }
+ finally{
+ throw "ex3";
+ }
+ }
+}
+catch(er1){
+ if (er1!=="ex3") $ERROR('#3.2: Exception === "ex3". Actual: Exception ==='+er1 );
+}
+
+// CHECK#4
+var c4=0;
+try{
+ try{
+ throw "ex1";
+ }
+ catch(er1){
+ if (er1!=="ex1") $ERROR('#4.1: Exception === "ex1". Actual: Exception ==='+er1 );
+ try{
+ throw "ex2";
+ }
+ finally{
+ throw "ex3";
+ }
+ }
+ finally{
+ c4=1;
+ }
+}
+catch(er1){
+ if (er1!=="ex3") $ERROR('#4.2: Exception === "ex3". Actual: Exception ==='+er1 );
+}
+if (c4!==1) $ERROR('#4.3: "finally" block must be evaluated');
+
+// CHECK#5
+var c5=0;
+try{
+ try{
+ throw "ex2";
+ }
+ finally{
+ throw "ex3";
+ }
+ throw "ex1";
+}
+catch(er1){
+ if (er1!=="ex3") $ERROR('#5.1: Exception === "ex3". Actual: Exception ==='+er1 );
+ if (er1==="ex2") $ERROR('#5.2: Exception !== "ex2". Actual: catch previous embedded exception');
+ if (er1==="ex1") $ERROR('#5.3: Exception !=="ex1". Actual: catch previous embedded exception');
+}
+finally{
+ c5=1;
+}
+if (c5!==1) $ERROR('#5.4: "finally" block must be evaluated');
+
+// CHECK#6
+var c6=0;
+try{
+ try{
+ try{
+ throw "ex1";
+ }
+ finally{
+ throw "ex2";
+ }
+ }
+ finally{
+ c6=1;
+ }
+}
+catch(er1){
+ if (er1!=="ex2") $ERROR('#6.1: Exception === "ex2". Actual: Exception ==='+er1 );
+}
+if (c6!==1) $ERROR('#6.2: "finally" block must be evaluated');
+
+// CHECK#7
+var c7=0;
+try{
+ try{
+ throw "ex1";
+ }
+ finally{
+ try{
+ c7=1;
+ throw "ex2";
+ }
+ finally{
+ c7++;
+ throw "ex3";
+ }
+ }
+}
+catch(er1){
+ if (er1!=="ex3") $ERROR('#7.1: Exception === "ex3". Actual: Exception ==='+er1 );
+}
+if (c7!==2) $ERROR('#7.2: Embedded "try/finally" blocks must be evaluated');
+
diff --git a/js/src/tests/test262/ch12/12.14/S12.14_A7_T3.js b/js/src/tests/test262/ch12/12.14/S12.14_A7_T3.js
new file mode 100644
index 000000000..183ab7d22
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.14/S12.14_A7_T3.js
@@ -0,0 +1,169 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * Evaluating the nested productions TryStatement
+ *
+ * @path ch12/12.14/S12.14_A7_T3.js
+ * @description Checking if the production of nested TryStatement statements evaluates correct
+ */
+
+// CHECK#1
+try{
+ try{
+ throw "ex2";
+ }
+ catch(er2){
+ if (er2!=="ex2") $ERROR('#1.1: Exception === "ex2". Actual: Exception ==='+er2);
+ throw "ex1";
+ }
+ finally{
+ throw "ex3";
+ }
+}
+catch(er1){
+ if (er1!=="ex3") $ERROR('#1.2: Exception === "ex3". Actual: Exception ==='+er1);
+ if (er1==="ex2") $ERROR('#1.3: Exception !=="ex2". Actual: catch previous catched exception');
+ if (er1==="ex1") $ERROR('#1.4: Exception !=="ex1". Actual: catch previous embedded exception');
+}
+
+// CHECK#2
+var c2=0;
+try{
+ throw "ex1";
+}
+catch(er1){
+ try{
+ throw "ex2";
+ }
+ catch(er1){
+ if (er1==="ex1") $ERROR('#2.1: Exception !=="ex1". Actual: catch previous catched exception');
+ if (er1!=="ex2") $ERROR('#2.2: Exception === "ex2". Actual: Exception ==='+er1);
+ }
+ finally{
+ c2=1;
+ }
+ if (er1!=="ex1") $ERROR('#2.3: Exception === "ex1". Actual: Exception ==='+er1);
+ if (er1==="ex2") $ERROR('#2.4: Exception !== "ex2". Actual: catch previous embedded exception');
+}
+if (c2!==1) $ERROR('#2.5: "finally" block must be evaluated');
+
+// CHECK#3
+var c3=0;
+try{
+ throw "ex1";
+}
+catch(er1){
+ if (er1!=="ex1") $ERROR('#3.1: Exception === "ex1". Actual: Exception ==='+er1);
+}
+finally{
+ try{
+ throw "ex2";
+ }
+ catch(er1){
+ if (er1==="ex1") $ERROR('#3.2: Exception !=="ex1". Actual: catch previous catched exception');
+ if (er1!=="ex2") $ERROR('#3.3: Exception === "ex2". Actual: Exception ==='+er1);
+ }
+ finally{
+ c3=1;
+ }
+}
+if (c3!==1) $ERROR('#3.4: "finally" block must be evaluated');
+
+// CHECK#4
+var c4=0;
+try{
+ try{
+ throw "ex1";
+ }
+ catch(er1){
+ try{
+ throw "ex2";
+ }
+ catch(er1){
+ if (er1==="ex1") $ERROR('#4.1: Exception !=="ex2". Actual: catch previous catched exception');
+ if (er1!=="ex2") $ERROR('#4.2: Exception === "ex2". Actual: Exception ==='+er1);
+ }
+ finally{
+ c4=2;
+ throw "ex3";
+ }
+ if (er1!=="ex1") $ERROR('#4.3: Exception === "ex2". Actual: Exception ==='+er1);
+ if (er1==="ex2") $ERROR('#4.4: Exception !=="ex2". Actual: catch previous catched exception');
+ if (er1==="ex3") $ERROR('#4.5: Exception !=="ex3". Actual: Catch previous embedded exception');
+ }
+ finally{
+ c4*=2;
+ }
+}
+catch(er1){}
+if (c4!==4) $ERROR('#4.6: "finally" block must be evaluated');
+
+// CHECK#5
+var c5=0;
+try{
+ try{
+ throw "ex2";
+ }
+ catch(er1){
+ if (er1!=="ex2") $ERROR('#5.1: Exception === "ex2". Actual: Exception ==='+er1);
+ }
+ finally{
+ throw "ex3";
+ }
+ throw "ex1";
+}
+catch(er1){
+ if (er1!=="ex3") $ERROR('#5.2: Exception === "ex3". Actual: Exception ==='+er1);
+ if (er1==="ex2") $ERROR('#5.3: Exception !=="ex2". Actual: catch previous catched exception');
+ if (er1==="ex1") $ERROR('#5.4: Exception !=="ex1". Actual: catch previous embedded exception');
+}
+finally{
+ c5=1;
+}
+if (c5!==1) $ERROR('#5.5: "finally" block must be evaluated');
+
+// CHECK#6
+var c6=0;
+try{
+ try{
+ throw "ex1";
+ }
+ catch(er1){
+ if (er1!=="ex1") $ERROR('#6.1: Exception === "ex1". Actual: Exception ==='+er1);
+ }
+ finally{
+ c6=2;
+ }
+}
+finally{
+ c6*=2;
+}
+if (c6!==4) $ERROR('#6.2: "finally" block must be evaluated');
+
+// CHECK#7
+var c7=0;
+try{
+ try{
+ throw "ex1";
+ }
+ finally{
+ try{
+ c7=1;
+ throw "ex2";
+ }
+ catch(er1){
+ if (er1!=="ex2") $ERROR('#7.1: Exception === "ex2". Actual: Exception ==='+er1);
+ if (er1==="ex1") $ERROR('#7.2: Exception !=="ex2". Actual: catch previous catched exception');
+ c7++;
+ }
+ finally{
+ c7*=2;
+ }
+ }
+}
+catch(er1){
+ if (er1!=="ex1") $ERROR('#7.3: Exception === "ex1". Actual: Exception ==='+er1);
+}
+if (c7!==4) $ERROR('#7.4: "finally" block must be evaluated');
+
diff --git a/js/src/tests/test262/ch12/12.14/S12.14_A8.js b/js/src/tests/test262/ch12/12.14/S12.14_A8.js
new file mode 100644
index 000000000..4ac0574a2
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.14/S12.14_A8.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.
+
+/**
+ * "try" with "catch" or "finally" statement within/without an "if" statement
+ *
+ * @path ch12/12.14/S12.14_A8.js
+ * @description Throwing exception within an "if" statement
+ */
+
+// CHECK#1
+var c1=1;
+try{
+ if(c1===1){
+ throw "ex1";
+ $ERROR('#1.1: throw "ex1" lead to throwing exception');
+ }
+ $ERROR('#1.2: throw "ex1" inside the "if" statement lead to throwing exception');
+}
+catch(er1){
+ if (er1!=="ex1") $ERROR('#1.3: Exception ==="ex1". Actual: Exception ==='+er1);
+}
+
+// CHECK#2
+var c2=1;
+if(c2===1){
+ try{
+ throw "ex1";
+ $ERROR('#2.1: throw "ex1" lead to throwing exception');
+ }
+ catch(er1){
+ if(er1!="ex1") $ERROR('#2.2: Exception ==="ex1". Actual: Exception ==='+er1);
+ }
+}
+
diff --git a/js/src/tests/test262/ch12/12.14/S12.14_A9_T1.js b/js/src/tests/test262/ch12/12.14/S12.14_A9_T1.js
new file mode 100644
index 000000000..974b9e725
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.14/S12.14_A9_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.
+
+/**
+ * "try" with "catch" or "finally" statement within/without an "do while" statement
+ *
+ * @path ch12/12.14/S12.14_A9_T1.js
+ * @description Loop within a "try" Block, from where exception is thrown
+ */
+
+// CHECK#1
+var i=0;
+try{
+ do{
+ if(i===5) throw i;
+ i++;
+ }
+ while(i<10);
+}
+catch(e){
+ if(e!==5)$ERROR('#1: Exception ===5. Actual: Exception ==='+ e );
+}
+
diff --git a/js/src/tests/test262/ch12/12.14/S12.14_A9_T2.js b/js/src/tests/test262/ch12/12.14/S12.14_A9_T2.js
new file mode 100644
index 000000000..9b36f31fb
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.14/S12.14_A9_T2.js
@@ -0,0 +1,122 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * "try" with "catch" or "finally" statement within/without an "do while" statement
+ *
+ * @path ch12/12.14/S12.14_A9_T2.js
+ * @description "try" statement within a loop, the statement contains "continue" statement
+ */
+
+// CHECK#1
+var c1=0,fin=0;
+do{
+ try{
+ c1+=1;
+ continue;
+ }
+ catch(er1){}
+ finally{
+ fin=1;
+ }
+ fin=-1;
+}
+while(c1<2);
+if(fin!==1){
+ $ERROR('#1: "finally" block must be evaluated at "try{continue} catch finally" construction');
+}
+
+// CHECK#2
+var c2=0,fin2=0;
+do{
+ try{
+ throw "ex1";
+ }
+ catch(er1){
+ c2+=1;
+ continue;
+ }
+ finally{
+ fin2=1;
+ }
+ fin2=-1;
+}
+while(c2<2);
+if(fin2!==1){
+ $ERROR('#2: "finally" block must be evaluated at "try catch{continue} finally" construction');
+}
+
+// CHECK#3
+var c3=0,fin3=0;
+do{
+ try{
+ throw "ex1";
+ }
+ catch(er1){
+ c3+=1;
+ }
+ finally{
+ fin3=1;
+ continue;
+ }
+ fin3=0;
+}
+while(c3<2);
+if(fin3!==1){
+ $ERROR('#3: "finally" block must be evaluated at "try catch finally{continue}" construction');
+}
+
+// CHECK#4
+var c4=0,fin4=0;
+do{
+ try{
+ c4+=1;
+ continue;
+ }
+ finally{
+ fin4=1;
+ }
+ fin4=-1;
+}
+while(c4<2);
+if(fin4!==1){
+ $ERROR('#4: "finally" block must be evaluated at "try{continue} finally" construction');
+}
+
+// CHECK#5
+var c5=0;
+do{
+ try{
+ throw "ex1";
+ }
+ catch(er1){
+ c5+=1;
+ continue;
+ }
+}
+while(c5<2);
+if(c5!==2){
+ $ERROR('#5: "try catch{continue}" must work correctly');
+}
+
+// CHECK#6
+var c6=0,fin6=0;
+do{
+ try{
+ c6+=1;
+ throw "ex1"
+ }
+ finally{
+ fin6=1;
+ continue;
+ }
+ fin6=-1;
+}
+while(c6<2);
+if(fin6!==1){
+ $ERROR('#6.1: "finally" block must be evaluated');
+}
+if(c6!==2){
+ $ERROR('#6.2: "try finally{continue}" must work correctly');
+}
+
diff --git a/js/src/tests/test262/ch12/12.14/S12.14_A9_T3.js b/js/src/tests/test262/ch12/12.14/S12.14_A9_T3.js
new file mode 100644
index 000000000..60bdd4b30
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.14/S12.14_A9_T3.js
@@ -0,0 +1,158 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * "try" with "catch" or "finally" statement within/without an "do while" statement
+ *
+ * @path ch12/12.14/S12.14_A9_T3.js
+ * @description "try" statement within a loop, the statement contains "break" statement
+ */
+
+// CHECK#1
+var c1=0,fin=0;
+do{
+ try{
+ c1+=1;
+ break;
+ }
+ catch(er1){}
+ finally{
+ fin=1;
+ }
+ fin=-1;
+ c1+=2;
+}
+while(c1<2);
+if(fin!==1){
+ $ERROR('#1.1: "finally" block must be evaluated');
+}
+if(c1!==1){
+ $ERROR('#1.2: "try{break}catch finally" must work correctly');
+}
+
+// CHECK#2
+var c2=0,fin2=0;
+do{
+ try{
+ throw "ex1";
+ }
+ catch(er1){
+ c2+=1;
+ break;
+ }
+ finally{
+ fin2=1;
+ }
+ c2+=2;
+ fin2=-1;
+}
+while(c2<2);
+if(fin2!==1){
+ $ERROR('#2.1: "finally" block must be evaluated');
+}
+if(c2!==1){
+ $ERROR('#2.2: "try catch{break} finally" must work correctly');
+}
+
+// CHECK#3
+var c3=0,fin3=0;
+do{
+ try{
+ throw "ex1";
+ }
+ catch(er1){
+ c3+=1;
+ }
+ finally{
+ fin3=1;
+ break;
+ }
+ c3+=2;
+ fin3=0;
+}
+while(c3<2);
+if(fin3!==1){
+ $ERROR('#3.1: "finally" block must be evaluated');
+}
+if(c3!==1){
+ $ERROR('#3.2: "try catch finally{break}" must work correctly');
+}
+
+// CHECK#4
+var c4=0,fin4=0;
+do{
+ try{
+ c4+=1;
+ break;
+ }
+ finally{
+ fin4=1;
+ }
+ fin4=-1;
+ c4+=2;
+}
+while(c4<2);
+if(fin4!==1){
+ $ERROR('#4.1: "finally" block must be evaluated');
+}
+if(c4!==1){
+ $ERROR('#4.2: "try{break} finally" must work correctly');
+}
+
+// CHECK#5
+var c5=0;
+do{
+ try{
+ throw "ex1";
+ }
+ catch(er1){
+ break;
+ }
+}
+while(c5<2);
+if(c5!==0){
+ $ERROR('#5: "try catch{break}" must work correctly');
+}
+
+// CHECK#6
+var c6=0;
+do{
+ try{
+ c6+=1;
+ break;
+ }
+ catch(er1){}
+ c6+=2;
+}
+while(c6<2);
+if(c6!==1){
+ $ERROR('#6: "try{break} catch" must work correctly');
+}
+
+// CHECK#7
+var c7=0,fin7=0;
+try{
+ do{
+ try{
+ c7+=1;
+ throw "ex1";
+ }
+ finally{
+ fin7=1;
+ break;
+ }
+ fin7=-1;
+ c7+=2;
+ }
+ while(c7<2);
+}
+catch(ex1){
+ c7=10;
+}
+if(fin7!==1){
+ $ERROR('#7.1: "finally" block must be evaluated');
+}
+if(c7!==1){
+ $ERROR('#7.2: try finally{break} error');
+}
+
diff --git a/js/src/tests/test262/ch12/12.14/S12.14_A9_T4.js b/js/src/tests/test262/ch12/12.14/S12.14_A9_T4.js
new file mode 100644
index 000000000..06542b1d1
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.14/S12.14_A9_T4.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.
+
+/**
+ * "try" with "catch" or "finally" statement within/without an "do while" statement
+ *
+ * @path ch12/12.14/S12.14_A9_T4.js
+ * @description "try" statement within a loop, the statement contains "continue" and "break" statements
+ */
+
+// CHECK#1
+var c1=0,fin=0;
+do{
+ try{
+ c1+=1;
+ break;
+ }
+ catch(er1){}
+ finally{
+ fin=1;
+ continue;
+ }
+ fin=-1;
+ c1+=2;
+}
+while(c1<2);
+if(fin!==1){
+ $ERROR('#1.1: "finally" block must be evaluated');
+}
+if(c1!==2){
+ $ERROR('#1.2: "try{break} catch finally{continue}" must work correctly');
+}
+
+// CHECK#2
+var c2=0,fin2=0;
+do{
+ try{
+ throw "ex1";
+ }
+ catch(er1){
+ c2+=1;
+ break;
+ }
+ finally{
+ fin2=1;
+ continue;
+ }
+ c2+=2;
+ fin2=-1;
+}
+while(c2<2);
+if(fin2!==1){
+ $ERROR('#2.1: "finally" block must be evaluated');
+}
+if(c2!==2){
+ $ERROR('#2.2: "try catch{break} finally{continue}" must work correctly');
+}
+
diff --git a/js/src/tests/test262/ch12/12.14/S12.14_A9_T5.js b/js/src/tests/test262/ch12/12.14/S12.14_A9_T5.js
new file mode 100644
index 000000000..dd16dfe2d
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.14/S12.14_A9_T5.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.
+
+/**
+ * "try" with "catch" or "finally" statement within/without an "do while" statement
+ *
+ * @path ch12/12.14/S12.14_A9_T5.js
+ * @description Checking if exceptions are thrown correctly from wherever of loop body
+ */
+
+// CHECK#1
+var c=0, i=0;
+var fin=0;
+do{
+ i+=1;
+ try{
+ if(c===0){
+ throw "ex1";
+ $ERROR('#1.1: throw "ex1" lead to throwing exception');
+ }
+ c+=2;
+ if(c===1){
+ throw "ex2";
+ $ERROR('#1.2: throw "ex2" lead to throwing exception');
+ }
+ }
+ catch(er1){
+ c-=1;
+ continue;
+ $ERROR('#1.3: "try catch{continue} finally" must work correctly');
+ }
+ finally{
+ fin+=1;
+ }
+}
+while(i<10);
+if(fin!==10){
+ $ERROR('#1.4: "finally" block must be evaluated');
+}
+
+
diff --git a/js/src/tests/test262/ch12/12.14/browser.js b/js/src/tests/test262/ch12/12.14/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.14/browser.js
diff --git a/js/src/tests/test262/ch12/12.14/shell.js b/js/src/tests/test262/ch12/12.14/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.14/shell.js
diff --git a/js/src/tests/test262/ch12/12.2/12.2.1/12.2.1-1-s.js b/js/src/tests/test262/ch12/12.2/12.2.1/12.2.1-1-s.js
new file mode 100644
index 000000000..102f9fdb0
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.2/12.2.1/12.2.1-1-s.js
@@ -0,0 +1,24 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch12/12.2/12.2.1/12.2.1-1-s.js
+ * @description eval - a function declaring a var named 'eval' throws SyntaxError in strict mode
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ 'use strict';
+
+ try {
+ eval('function foo() { var eval; }');
+ return false;
+ }
+ catch (e) {
+ return (e instanceof SyntaxError);
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch12/12.2/12.2.1/12.2.1-10-s.js b/js/src/tests/test262/ch12/12.2/12.2.1/12.2.1-10-s.js
new file mode 100644
index 000000000..8f442fc90
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.2/12.2.1/12.2.1-10-s.js
@@ -0,0 +1,19 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch12/12.2/12.2.1/12.2.1-10-s.js
+ * @description Strict Mode: an indirect eval assigning into 'eval' does not throw
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ 'use strict';
+ var s = eval;
+ s('eval = 42;');
+ return true;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch12/12.2/12.2.1/12.2.1-11.js b/js/src/tests/test262/ch12/12.2/12.2.1/12.2.1-11.js
new file mode 100644
index 000000000..650835ee1
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.2/12.2.1/12.2.1-11.js
@@ -0,0 +1,16 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch12/12.2/12.2.1/12.2.1-11.js
+ * @description arguments as var identifier in eval code is allowed
+ */
+
+
+function testcase() {
+ eval("var arguments;");
+ return true;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch12/12.2/12.2.1/12.2.1-12-s.js b/js/src/tests/test262/ch12/12.2/12.2.1/12.2.1-12-s.js
new file mode 100644
index 000000000..7d96f25fe
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.2/12.2.1/12.2.1-12-s.js
@@ -0,0 +1,24 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch12/12.2/12.2.1/12.2.1-12-s.js
+ * @description arguments as local var identifier throws SyntaxError in strict mode
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ 'use strict';
+
+ try {
+ eval('function foo() { var arguments;}');
+ return false;
+ }
+ catch (e) {
+ return (e instanceof SyntaxError);
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch12/12.2/12.2.1/12.2.1-12.js b/js/src/tests/test262/ch12/12.2/12.2.1/12.2.1-12.js
new file mode 100644
index 000000000..f5ba2925d
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.2/12.2.1/12.2.1-12.js
@@ -0,0 +1,16 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch12/12.2/12.2.1/12.2.1-12.js
+ * @description arguments as local var identifier is allowed
+ */
+
+
+function testcase() {
+ eval("(function (){var arguments;})");
+ return true;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch12/12.2/12.2.1/12.2.1-13-s.js b/js/src/tests/test262/ch12/12.2/12.2.1/12.2.1-13-s.js
new file mode 100644
index 000000000..d34ab90d1
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.2/12.2.1/12.2.1-13-s.js
@@ -0,0 +1,24 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch12/12.2/12.2.1/12.2.1-13-s.js
+ * @description arguments assignment throws SyntaxError in strict mode
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ 'use strict';
+
+ try {
+ eval('function foo() { arguments = 42; }; foo()');
+ return false;
+ }
+ catch (e) {
+ return (e instanceof SyntaxError);
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch12/12.2/12.2.1/12.2.1-14-s.js b/js/src/tests/test262/ch12/12.2/12.2.1/12.2.1-14-s.js
new file mode 100644
index 000000000..252688c96
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.2/12.2.1/12.2.1-14-s.js
@@ -0,0 +1,26 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch12/12.2/12.2.1/12.2.1-14-s.js
+ * @description arguments - a function expr declaring a var named 'arguments' throws SyntaxError in strict mode
+ * @onlyStrict
+ */
+
+
+
+
+function testcase() {
+ 'use strict';
+
+ try {
+ eval('(function (){var arguments;});');
+ return false;
+ }
+ catch (e) {
+ return (e instanceof SyntaxError);
+ }
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch12/12.2/12.2.1/12.2.1-15-s.js b/js/src/tests/test262/ch12/12.2/12.2.1/12.2.1-15-s.js
new file mode 100644
index 000000000..185ba5156
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.2/12.2.1/12.2.1-15-s.js
@@ -0,0 +1,26 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch12/12.2/12.2.1/12.2.1-15-s.js
+ * @description arguments - a function expr assigning into 'arguments' throws a SyntaxError in strict mode
+ * @onlyStrict
+ */
+
+
+
+
+function testcase() {
+ 'use strict';
+
+ try {
+ eval('(function () {arguments = 42;})()');
+ return false;
+ }
+ catch (e) {
+ return (e instanceof SyntaxError);
+ }
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch12/12.2/12.2.1/12.2.1-16-s.js b/js/src/tests/test262/ch12/12.2/12.2.1/12.2.1-16-s.js
new file mode 100644
index 000000000..d39963bc7
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.2/12.2.1/12.2.1-16-s.js
@@ -0,0 +1,20 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch12/12.2/12.2.1/12.2.1-16-s.js
+ * @description A Function constructor (called as a function) declaring a var named 'arguments' does not throw a SyntaxError in strict mode
+ * @onlyStrict
+ */
+
+
+
+
+function testcase() {
+ 'use strict';
+ Function('var arguments;');
+ return true;
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch12/12.2/12.2.1/12.2.1-17-s.js b/js/src/tests/test262/ch12/12.2/12.2.1/12.2.1-17-s.js
new file mode 100644
index 000000000..c53dce258
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.2/12.2.1/12.2.1-17-s.js
@@ -0,0 +1,22 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch12/12.2/12.2.1/12.2.1-17-s.js
+ * @description A Function constructor (called as a function) assigning into 'arguments' will not throw any error if contained within strict mode and its body does not start with strict mode
+ * @onlyStrict
+ */
+
+
+
+
+function testcase() {
+ 'use strict';
+
+ var f = Function('arguments = 42;');
+ f();
+ return true;
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch12/12.2/12.2.1/12.2.1-18-s.js b/js/src/tests/test262/ch12/12.2/12.2.1/12.2.1-18-s.js
new file mode 100644
index 000000000..fb4afd3c2
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.2/12.2.1/12.2.1-18-s.js
@@ -0,0 +1,26 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch12/12.2/12.2.1/12.2.1-18-s.js
+ * @description A direct eval declaring a var named 'arguments' throws SyntaxError in strict mode
+ * @onlyStrict
+ */
+
+
+
+
+function testcase() {
+ 'use strict';
+
+ try {
+ eval('var arguments;');
+ return false;
+ }
+ catch (e) {
+ return (e instanceof SyntaxError);
+ }
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch12/12.2/12.2.1/12.2.1-19-s.js b/js/src/tests/test262/ch12/12.2/12.2.1/12.2.1-19-s.js
new file mode 100644
index 000000000..18fcc5d18
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.2/12.2.1/12.2.1-19-s.js
@@ -0,0 +1,26 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch12/12.2/12.2.1/12.2.1-19-s.js
+ * @description A direct eval assigning into 'arguments' throws SyntaxError in strict mode
+ * @onlyStrict
+ */
+
+
+
+
+function testcase() {
+ 'use strict';
+
+ try {
+ eval('arguments = 42;');
+ return false;
+ }
+ catch (e) {
+ return (e instanceof SyntaxError) ;
+ }
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch12/12.2/12.2.1/12.2.1-1gs.js b/js/src/tests/test262/ch12/12.2/12.2.1/12.2.1-1gs.js
new file mode 100644
index 000000000..a93b2aae7
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.2/12.2.1/12.2.1-1gs.js
@@ -0,0 +1,14 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch12/12.2/12.2.1/12.2.1-1gs.js
+ * @description Strict Mode - SyntaxError is thrown if a VariableDeclaration occurs within strict code and its Identifier is eval
+ * @onlyStrict
+ * @negative ^((?!NotEarlyError).)*$
+ */
+"use strict";
+throw NotEarlyError;
+for (var eval in arrObj) { } \ No newline at end of file
diff --git a/js/src/tests/test262/ch12/12.2/12.2.1/12.2.1-2-s.js b/js/src/tests/test262/ch12/12.2/12.2.1/12.2.1-2-s.js
new file mode 100644
index 000000000..8b9848c54
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.2/12.2.1/12.2.1-2-s.js
@@ -0,0 +1,24 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch12/12.2/12.2.1/12.2.1-2-s.js
+ * @description eval - a function assigning into 'eval' throws SyntaxError in strict mode
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ 'use strict';
+
+ try {
+ eval('function foo() { eval = 42; }; foo()');
+ return false;
+ }
+ catch (e) {
+ return (e instanceof SyntaxError);
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch12/12.2/12.2.1/12.2.1-20-s.js b/js/src/tests/test262/ch12/12.2/12.2.1/12.2.1-20-s.js
new file mode 100644
index 000000000..230340fda
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.2/12.2.1/12.2.1-20-s.js
@@ -0,0 +1,21 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch12/12.2/12.2.1/12.2.1-20-s.js
+ * @description Strict Mode: an indirect eval declaring a var named 'arguments' does not throw
+ * @onlyStrict
+ */
+
+
+
+
+function testcase() {
+ 'use strict';
+ var s = eval;
+ s('var arguments;');
+ return true;
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch12/12.2/12.2.1/12.2.1-21-s.js b/js/src/tests/test262/ch12/12.2/12.2.1/12.2.1-21-s.js
new file mode 100644
index 000000000..2d1907b01
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.2/12.2.1/12.2.1-21-s.js
@@ -0,0 +1,21 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch12/12.2/12.2.1/12.2.1-21-s.js
+ * @description Strict Mode: an indirect eval assigning into 'arguments' does not throw
+ * @onlyStrict
+ */
+
+
+
+
+function testcase() {
+ 'use strict';
+ var s = eval;
+ s('arguments = 42;');
+ return true;
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch12/12.2/12.2.1/12.2.1-22-s.js b/js/src/tests/test262/ch12/12.2/12.2.1/12.2.1-22-s.js
new file mode 100644
index 000000000..943360cda
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.2/12.2.1/12.2.1-22-s.js
@@ -0,0 +1,27 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch12/12.2/12.2.1/12.2.1-22-s.js
+ * @description arguments as global var identifier throws SyntaxError in strict mode
+ * @onlyStrict
+ */
+
+
+
+
+function testcase() {
+
+ var indirectEval = eval;
+
+ try {
+ indirectEval("'use strict'; var arguments;");
+ return false;
+ }
+ catch (e) {
+ return (e instanceof SyntaxError);
+ }
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch12/12.2/12.2.1/12.2.1-23-s.js b/js/src/tests/test262/ch12/12.2/12.2.1/12.2.1-23-s.js
new file mode 100644
index 000000000..29d667897
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.2/12.2.1/12.2.1-23-s.js
@@ -0,0 +1,26 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch12/12.2/12.2.1/12.2.1-23-s.js
+ * @description arguments as local var identifier assigned to throws SyntaxError in strict mode
+ * @onlyStrict
+ */
+
+
+
+
+function testcase() {
+ 'use strict';
+
+ try {
+ eval('function foo() { var arguments = 42;}');
+ return false;
+ }
+ catch (e) {
+ return (e instanceof SyntaxError);
+ }
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch12/12.2/12.2.1/12.2.1-24-s.js b/js/src/tests/test262/ch12/12.2/12.2.1/12.2.1-24-s.js
new file mode 100644
index 000000000..bd9cc069d
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.2/12.2.1/12.2.1-24-s.js
@@ -0,0 +1,26 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch12/12.2/12.2.1/12.2.1-24-s.js
+ * @description eval as local var identifier assigned to throws SyntaxError in strict mode
+ * @onlyStrict
+ */
+
+
+
+
+function testcase() {
+ 'use strict';
+
+ try {
+ eval('function foo() { var eval = 42;}');
+ return false;
+ }
+ catch (e) {
+ return (e instanceof SyntaxError);
+ }
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch12/12.2/12.2.1/12.2.1-25-s.js b/js/src/tests/test262/ch12/12.2/12.2.1/12.2.1-25-s.js
new file mode 100644
index 000000000..f28397959
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.2/12.2.1/12.2.1-25-s.js
@@ -0,0 +1,26 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch12/12.2/12.2.1/12.2.1-25-s.js
+ * @description arguments as local var identifier throws SyntaxError in strict mode
+ * @onlyStrict
+ */
+
+
+
+
+function testcase() {
+ 'use strict';
+
+ try {
+ eval('function foo() { var arguments, a;}');
+ return false;
+ }
+ catch (e) {
+ return (e instanceof SyntaxError);
+ }
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch12/12.2/12.2.1/12.2.1-26-s.js b/js/src/tests/test262/ch12/12.2/12.2.1/12.2.1-26-s.js
new file mode 100644
index 000000000..b4e24356f
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.2/12.2.1/12.2.1-26-s.js
@@ -0,0 +1,26 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch12/12.2/12.2.1/12.2.1-26-s.js
+ * @description eval as local var identifier throws SyntaxError in strict mode
+ * @onlyStrict
+ */
+
+
+
+
+function testcase() {
+ 'use strict';
+
+ try {
+ eval('function foo() { var a, eval;}');
+ return false;
+ }
+ catch (e) {
+ return (e instanceof SyntaxError);
+ }
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch12/12.2/12.2.1/12.2.1-27-s.js b/js/src/tests/test262/ch12/12.2/12.2.1/12.2.1-27-s.js
new file mode 100644
index 000000000..8f08b1b2a
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.2/12.2.1/12.2.1-27-s.js
@@ -0,0 +1,26 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch12/12.2/12.2.1/12.2.1-27-s.js
+ * @description eval as local var identifier assigned to throws SyntaxError in strict mode
+ * @onlyStrict
+ */
+
+
+
+
+function testcase() {
+ 'use strict';
+
+ try {
+ eval('function foo() { var eval = 42, a;}');
+ return false;
+ }
+ catch (e) {
+ return (e instanceof SyntaxError);
+ }
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch12/12.2/12.2.1/12.2.1-28-s.js b/js/src/tests/test262/ch12/12.2/12.2.1/12.2.1-28-s.js
new file mode 100644
index 000000000..ea6d73a0c
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.2/12.2.1/12.2.1-28-s.js
@@ -0,0 +1,26 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch12/12.2/12.2.1/12.2.1-28-s.js
+ * @description arguments as local var identifier assigned to throws SyntaxError in strict mode
+ * @onlyStrict
+ */
+
+
+
+
+function testcase() {
+ 'use strict';
+
+ try {
+ eval('function foo() { var a, arguments = 42;}');
+ return false;
+ }
+ catch (e) {
+ return (e instanceof SyntaxError);
+ }
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch12/12.2/12.2.1/12.2.1-29-s.js b/js/src/tests/test262/ch12/12.2/12.2.1/12.2.1-29-s.js
new file mode 100644
index 000000000..4b389d966
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.2/12.2.1/12.2.1-29-s.js
@@ -0,0 +1,26 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch12/12.2/12.2.1/12.2.1-29-s.js
+ * @description eval as local var identifier throws SyntaxError in strict mode
+ * @onlyStrict
+ */
+
+
+
+
+function testcase() {
+ 'use strict';
+
+ try {
+ eval('function foo() { var eval, a = 42;}');
+ return false;
+ }
+ catch (e) {
+ return (e instanceof SyntaxError);
+ }
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch12/12.2/12.2.1/12.2.1-3-s.js b/js/src/tests/test262/ch12/12.2/12.2.1/12.2.1-3-s.js
new file mode 100644
index 000000000..6f207527e
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.2/12.2.1/12.2.1-3-s.js
@@ -0,0 +1,24 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch12/12.2/12.2.1/12.2.1-3-s.js
+ * @description eval - a function expr declaring a var named 'eval' throws SyntaxError in strict mode
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ 'use strict';
+
+ try {
+ eval('(function () { var eval; })');
+ return false;
+ }
+ catch (e) {
+ return (e instanceof SyntaxError);
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch12/12.2/12.2.1/12.2.1-30-s.js b/js/src/tests/test262/ch12/12.2/12.2.1/12.2.1-30-s.js
new file mode 100644
index 000000000..8998405d0
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.2/12.2.1/12.2.1-30-s.js
@@ -0,0 +1,26 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch12/12.2/12.2.1/12.2.1-30-s.js
+ * @description arguments as local var identifier throws SyntaxError in strict mode
+ * @onlyStrict
+ */
+
+
+
+
+function testcase() {
+ 'use strict';
+
+ try {
+ eval('function foo() { var a = 42, arguments;}');
+ return false;
+ }
+ catch (e) {
+ return (e instanceof SyntaxError);
+ }
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch12/12.2/12.2.1/12.2.1-31-s.js b/js/src/tests/test262/ch12/12.2/12.2.1/12.2.1-31-s.js
new file mode 100644
index 000000000..305af43d2
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.2/12.2.1/12.2.1-31-s.js
@@ -0,0 +1,26 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch12/12.2/12.2.1/12.2.1-31-s.js
+ * @description eval as local var identifier defined twice throws SyntaxError in strict mode
+ * @onlyStrict
+ */
+
+
+
+
+function testcase() {
+ 'use strict';
+
+ try {
+ eval('function foo() { var eval, eval;}');
+ return false;
+ }
+ catch (e) {
+ return (e instanceof SyntaxError);
+ }
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch12/12.2/12.2.1/12.2.1-32-s.js b/js/src/tests/test262/ch12/12.2/12.2.1/12.2.1-32-s.js
new file mode 100644
index 000000000..b68ecb63d
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.2/12.2.1/12.2.1-32-s.js
@@ -0,0 +1,26 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch12/12.2/12.2.1/12.2.1-32-s.js
+ * @description arguments as local var identifier defined twice and assigned once throws SyntaxError in strict mode
+ * @onlyStrict
+ */
+
+
+
+
+function testcase() {
+ 'use strict';
+
+ try {
+ eval('function foo() { var arguments, arguments = 42;}');
+ return false;
+ }
+ catch (e) {
+ return (e instanceof SyntaxError);
+ }
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch12/12.2/12.2.1/12.2.1-33-s.js b/js/src/tests/test262/ch12/12.2/12.2.1/12.2.1-33-s.js
new file mode 100644
index 000000000..1a54c5e5b
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.2/12.2.1/12.2.1-33-s.js
@@ -0,0 +1,26 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch12/12.2/12.2.1/12.2.1-33-s.js
+ * @description arguments as local var identifier throws SyntaxError in strict mode
+ * @onlyStrict
+ */
+
+
+
+
+function testcase() {
+ 'use strict';
+
+ try {
+ eval('function foo() { var a, arguments, b;}');
+ return false;
+ }
+ catch (e) {
+ return (e instanceof SyntaxError);
+ }
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch12/12.2/12.2.1/12.2.1-34-s.js b/js/src/tests/test262/ch12/12.2/12.2.1/12.2.1-34-s.js
new file mode 100644
index 000000000..c41cb67a6
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.2/12.2.1/12.2.1-34-s.js
@@ -0,0 +1,24 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch12/12.2/12.2.1/12.2.1-34-s.js
+ * @description 'for(var eval in ...) {...}' throws SyntaxError in strict mode
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ 'use strict';
+
+ try {
+ eval('for (var eval in null) {};');
+ return false;
+ }
+ catch (e) {
+ return (e instanceof SyntaxError);
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch12/12.2/12.2.1/12.2.1-35-s.js b/js/src/tests/test262/ch12/12.2/12.2.1/12.2.1-35-s.js
new file mode 100644
index 000000000..41eaacabf
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.2/12.2.1/12.2.1-35-s.js
@@ -0,0 +1,24 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch12/12.2/12.2.1/12.2.1-35-s.js
+ * @description 'for(var eval = 42 in ...) {...}' throws SyntaxError in strict mode
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ 'use strict';
+
+ try {
+ eval('for (var eval = 42 in null) {};');
+ return false;
+ }
+ catch (e) {
+ return (e instanceof SyntaxError);
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch12/12.2/12.2.1/12.2.1-36-s.js b/js/src/tests/test262/ch12/12.2/12.2.1/12.2.1-36-s.js
new file mode 100644
index 000000000..f33169483
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.2/12.2.1/12.2.1-36-s.js
@@ -0,0 +1,24 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch12/12.2/12.2.1/12.2.1-36-s.js
+ * @description 'for(var arguments in ...) {...}' throws SyntaxError in strict mode
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ 'use strict';
+
+ try {
+ eval('for (var arguments in null) {};');
+ return false;
+ }
+ catch (e) {
+ return (e instanceof SyntaxError);
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch12/12.2/12.2.1/12.2.1-37-s.js b/js/src/tests/test262/ch12/12.2/12.2.1/12.2.1-37-s.js
new file mode 100644
index 000000000..2a134a665
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.2/12.2.1/12.2.1-37-s.js
@@ -0,0 +1,24 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch12/12.2/12.2.1/12.2.1-37-s.js
+ * @description 'for(var arguments = 42 in ...) {...}' throws SyntaxError in strict mode
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ 'use strict';
+
+ try {
+ eval('for (var arguments = 42 in null) {};');
+ return false;
+ }
+ catch (e) {
+ return (e instanceof SyntaxError);
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch12/12.2/12.2.1/12.2.1-4-s.js b/js/src/tests/test262/ch12/12.2/12.2.1/12.2.1-4-s.js
new file mode 100644
index 000000000..2eef4faaa
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.2/12.2.1/12.2.1-4-s.js
@@ -0,0 +1,24 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch12/12.2/12.2.1/12.2.1-4-s.js
+ * @description eval - a function expr assigning into 'eval' throws a SyntaxError in strict mode
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ 'use strict';
+
+ try {
+ eval('(function () { eval = 42; })()');
+ return false;
+ }
+ catch (e) {
+ return (e instanceof SyntaxError);
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch12/12.2/12.2.1/12.2.1-4gs.js b/js/src/tests/test262/ch12/12.2/12.2.1/12.2.1-4gs.js
new file mode 100644
index 000000000..add5e144d
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.2/12.2.1/12.2.1-4gs.js
@@ -0,0 +1,14 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch12/12.2/12.2.1/12.2.1-4gs.js
+ * @description Strict Mode - SyntaxError is thrown if a VariableDeclarationNoIn occurs within strict code and its Identifier is arguments
+ * @onlyStrict
+ * @negative ^((?!NotEarlyError).)*$
+ */
+"use strict";
+throw NotEarlyError;
+var arguments; \ No newline at end of file
diff --git a/js/src/tests/test262/ch12/12.2/12.2.1/12.2.1-5-s.js b/js/src/tests/test262/ch12/12.2/12.2.1/12.2.1-5-s.js
new file mode 100644
index 000000000..8644c4a20
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.2/12.2.1/12.2.1-5-s.js
@@ -0,0 +1,18 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch12/12.2/12.2.1/12.2.1-5-s.js
+ * @description Strict Mode - a Function declaring var named 'eval' does not throw SyntaxError
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ 'use strict';
+ Function('var eval;');
+ return true;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch12/12.2/12.2.1/12.2.1-6-s.js b/js/src/tests/test262/ch12/12.2/12.2.1/12.2.1-6-s.js
new file mode 100644
index 000000000..2db1c2bf8
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.2/12.2.1/12.2.1-6-s.js
@@ -0,0 +1,20 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch12/12.2/12.2.1/12.2.1-6-s.js
+ * @description eval - a Function assigning into 'eval' will not throw any error if contained within strict mode and its body does not start with strict mode
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ 'use strict';
+
+ var f = Function('eval = 42;');
+ f();
+ return true;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch12/12.2/12.2.1/12.2.1-7-s.js b/js/src/tests/test262/ch12/12.2/12.2.1/12.2.1-7-s.js
new file mode 100644
index 000000000..fec5ae659
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.2/12.2.1/12.2.1-7-s.js
@@ -0,0 +1,24 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch12/12.2/12.2.1/12.2.1-7-s.js
+ * @description eval - a direct eval declaring a var named 'eval' throws SyntaxError in strict mode
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ 'use strict';
+
+ try {
+ eval('var eval;');
+ return false;
+ }
+ catch (e) {
+ return (e instanceof SyntaxError);
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch12/12.2/12.2.1/12.2.1-8-s.js b/js/src/tests/test262/ch12/12.2/12.2.1/12.2.1-8-s.js
new file mode 100644
index 000000000..385808d44
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.2/12.2.1/12.2.1-8-s.js
@@ -0,0 +1,24 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch12/12.2/12.2.1/12.2.1-8-s.js
+ * @description eval - a direct eval assigning into 'eval' throws SyntaxError in strict mode
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ 'use strict';
+
+ try {
+ eval('eval = 42;');
+ return false;
+ }
+ catch (e) {
+ return (e instanceof SyntaxError) ;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch12/12.2/12.2.1/12.2.1-9-s.js b/js/src/tests/test262/ch12/12.2/12.2.1/12.2.1-9-s.js
new file mode 100644
index 000000000..6479cc174
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.2/12.2.1/12.2.1-9-s.js
@@ -0,0 +1,19 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch12/12.2/12.2.1/12.2.1-9-s.js
+ * @description Strict Mode: an indirect eval declaring a var named 'eval' does not throw
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ 'use strict';
+ var s = eval;
+ s('var eval;');
+ return true;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch12/12.2/12.2.1/browser.js b/js/src/tests/test262/ch12/12.2/12.2.1/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.2/12.2.1/browser.js
diff --git a/js/src/tests/test262/ch12/12.2/12.2.1/shell.js b/js/src/tests/test262/ch12/12.2/12.2.1/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.2/12.2.1/shell.js
diff --git a/js/src/tests/test262/ch12/12.2/S12.2_A1.js b/js/src/tests/test262/ch12/12.2/S12.2_A1.js
new file mode 100644
index 000000000..520daebf5
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.2/S12.2_A1.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.
+
+/**
+ * Variables are created when the program is entered. Variables are initialised to "undefined"
+ * when created. A variable with an Initialiser is assigned the value of its AssignmentExpression when the
+ * VariableStatement is executed, not when the variable is created
+ *
+ * @path ch12/12.2/S12.2_A1.js
+ * @description Creating variables after entering the execution scope
+ */
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+try {
+ __x = __x;
+ __y = __x ? "good fellow" : "liar"; // __y assigned to "liar" since __x undefined
+ __z = __z === __x ? 1 : 0; // __z assigned to 1 since both __x and __z are undefined
+} catch (e) {
+ $ERROR('#1: Using declarated variable before it declaration is admitted');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+try{
+ __something__undefined = __something__undefined;
+ $ERROR('#2: "__something__undefined = __something__undefined" lead to throwing exception');
+} catch(e){
+ $PRINT(e.message);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if ((__y !== "liar")&(__z !== 1)) {
+ $ERROR('#3: (__y === "liar") and (__z === 1). Actual: __y ==='+__y+' and __z ==='+__z );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+var __x, __y = true, __z = __y ? "smeagol" : "golum";
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#4
+if (!__y&!(__z = "smeagol")) {
+ $ERROR('#4: A variable with an Initialiser is assigned the value of its AssignmentExpression when the VariableStatement is executed');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch12/12.2/S12.2_A10.js b/js/src/tests/test262/ch12/12.2/S12.2_A10.js
new file mode 100644
index 000000000..b85f957b2
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.2/S12.2_A10.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.
+
+/**
+ * "var" statement within "for" statement is allowed
+ *
+ * @path ch12/12.2/S12.2_A10.js
+ * @description Declaring variable within a "for" IterationStatement
+ */
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+try {
+ __ind=__ind;
+} catch (e) {
+ $ERROR('#1: var inside "for" is admitted '+e.message);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+for (var __ind;;){
+ break;
+}
+
diff --git a/js/src/tests/test262/ch12/12.2/S12.2_A11.js b/js/src/tests/test262/ch12/12.2/S12.2_A11.js
new file mode 100644
index 000000000..392d4e74b
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.2/S12.2_A11.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.
+
+/**
+ * When using property attributes, {ReadOnly} is not used
+ *
+ * @path ch12/12.2/S12.2_A11.js
+ * @description Changing variable value using property attributes
+ */
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+this['__declared__var'] = "baloon";
+if (this['__declared__var'] !== "baloon") {
+ $ERROR('#1: this[\'__declared__var\'] === "baloon". Actual: this[\'__declared__var\'] ==='+ this['__declared__var'] );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__declared__var !== "baloon") {
+ $ERROR('#2: __declared__var === "baloon". Actual: __declared__var ==='+ __declared__var );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+var __declared__var;
+
diff --git a/js/src/tests/test262/ch12/12.2/S12.2_A12.js b/js/src/tests/test262/ch12/12.2/S12.2_A12.js
new file mode 100644
index 000000000..d69e27539
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.2/S12.2_A12.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.
+
+/**
+ * VariableDeclaration within "do-while" loop is allowed
+ *
+ * @path ch12/12.2/S12.2_A12.js
+ * @description Declaring variable within "do-while" statement
+ */
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+try {
+ x=x;
+} catch (e) {
+ $ERROR('#1: Declaration variable inside "do-while" statement is admitted');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+do var x; while (false);
+
diff --git a/js/src/tests/test262/ch12/12.2/S12.2_A2.js b/js/src/tests/test262/ch12/12.2/S12.2_A2.js
new file mode 100644
index 000000000..5f7de5abc
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.2/S12.2_A2.js
@@ -0,0 +1,47 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * Variables are defined with global scope (that is, they are created as members of the global object, as described in 10.1.3) using property attributes { DontDelete}
+ *
+ * @path ch12/12.2/S12.2_A2.js
+ * @description Checking if deleting global variables that have the attributes {DontDelete} fails
+ */
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (delete(__variable)) {
+ $ERROR('#1: delete(__variable)===false');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (delete(this["__variable"])) {
+ $ERROR('#2: delete(this["__variable"])===false');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+
+var __variable;
+var __variable = "defined";
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if (delete(__variable) | delete(this["__variable"])) {
+ $ERROR('#3: (delete(__variable) | delete(this["__variable"]))===false' );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#4
+if ((__variable !== "defined")|(this["__variable"] !=="defined")) {
+ $ERROR('#4: __variable === "defined" and this["__variable"] ==="defined"');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+
diff --git a/js/src/tests/test262/ch12/12.2/S12.2_A3.js b/js/src/tests/test262/ch12/12.2/S12.2_A3.js
new file mode 100644
index 000000000..5c0845ad2
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.2/S12.2_A3.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.
+
+/**
+ * FunctionDeclaration produces a new scope
+ *
+ * @path ch12/12.2/S12.2_A3.js
+ * @description Using Global scope and Function scope together
+ */
+
+var __var = "OUT";
+
+(function(){
+ var __var ="IN";
+ (function(){__var = "INNER_SPACE";})();
+ (function(){var __var = "INNER_SUN";})();
+ //////////////////////////////////////////////////////////////////////////////
+ //CHECK#1
+ if (__var !== "INNER_SPACE") {
+ $ERROR('#1: __var === "INNER_SPACE". Actual: __var ==='+ __var );
+ }
+ //
+ //////////////////////////////////////////////////////////////////////////////
+})();
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__var !== "OUT") {
+ $ERROR('#2: __var === "OUT". Actual: __var ==='+ __var );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+
+(function(){
+ __var ="IN";
+ (function(){__var = "INNERED"})();
+ (function(){var __var = "INNAGER"})();
+ //////////////////////////////////////////////////////////////////////////////
+ //CHECK#3
+ if (__var!=="INNERED") {
+ $ERROR('#3: __var==="INNERED". Actual: __var==='+ __var );
+ }
+ //
+ //////////////////////////////////////////////////////////////////////////////
+})();
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#4
+if (__var!=="INNERED") {
+ $ERROR('#4: __var==="INNERED". Actual: __var==='+ __var );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch12/12.2/S12.2_A4.js b/js/src/tests/test262/ch12/12.2/S12.2_A4.js
new file mode 100644
index 000000000..17f5c6a87
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.2/S12.2_A4.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.
+
+/**
+ * Unicode characters in variable Identifier are allowed
+ *
+ * @path ch12/12.2/S12.2_A4.js
+ * @description Create and use unicode characters in variable Identifier
+ */
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+try {
+ __var=__var;
+} catch (e) {
+ $ERROR('#1: Unicode characters in variable Identifier allowed');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+var \u005f\u005f\u0076\u0061\u0072 = 1;
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__var !== 1) {
+ $ERROR('#2: __var === 1. Actual: __var ==='+ __var );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch12/12.2/S12.2_A5.js b/js/src/tests/test262/ch12/12.2/S12.2_A5.js
new file mode 100644
index 000000000..c168bfd2b
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.2/S12.2_A5.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.
+
+/**
+ * VariableDeclaration within Eval statement is initialized as the program reaches the eval statement
+ *
+ * @path ch12/12.2/S12.2_A5.js
+ * @description Executing eval("var x")
+ */
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+try{
+ x=x;
+ $ERROR('#1: "x=x" lead to throwing exception');
+}catch(e){
+ $PRINT(e.message);
+};
+//
+//////////////////////////////////////////////////////////////////////////////
+
+eval("var x");
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+try{
+ x=x;
+}catch(e){
+ $ERROR('#2: VariableDeclaration inside Eval statement is initialized when program reaches the eval statement '+e.message);
+};
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch12/12.2/S12.2_A6_T1.js b/js/src/tests/test262/ch12/12.2/S12.2_A6_T1.js
new file mode 100644
index 000000000..34e7f0e7a
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.2/S12.2_A6_T1.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.
+
+/**
+ * VariableDeclaration within "try-catch" statement is allowed
+ *
+ * @path ch12/12.2/S12.2_A6_T1.js
+ * @description Declaring variable within "try-catch" statement
+ */
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+try{
+ intry__var=intry__var;
+}catch(e){
+ $ERROR('#1: Variable declaration inside "try" block is admitted');
+};
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+try{
+ incatch__var=incatch__var;
+}catch(e){
+ $ERROR('#2: Variable declaration inside "catch" block is admitted');
+};
+//
+//////////////////////////////////////////////////////////////////////////////
+
+try{
+ var intry__var;
+}catch(e){
+ var incatch__var;
+};
+
diff --git a/js/src/tests/test262/ch12/12.2/S12.2_A6_T2.js b/js/src/tests/test262/ch12/12.2/S12.2_A6_T2.js
new file mode 100644
index 000000000..4b586e0ab
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.2/S12.2_A6_T2.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.
+
+/**
+ * VariableDeclaration within "try-catch" statement is allowed
+ *
+ * @path ch12/12.2/S12.2_A6_T2.js
+ * @description Declaring variables within "try-catch" statement
+ */
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+try{
+ intry__intry__var=intry__intry__var;
+ intry__incatch__var=intry__incatch__var;
+ incatch__intry__var=incatch__intry__var;
+ incatch__incatch__var=incatch__incatch__var;
+}catch(e){
+ $ERROR('#1: Variable declaration inside "try-catch" block is admitted');
+};
+//
+//////////////////////////////////////////////////////////////////////////////
+
+try{
+ try {
+ var intry__intry__var;
+ } catch (e) {
+ var intry__incatch__var;
+ }
+}catch(e){
+ try {
+ var incatch__intry__var;
+ } catch (e) {
+ var incatch__incatch__var;
+ }
+
+};
+
diff --git a/js/src/tests/test262/ch12/12.2/S12.2_A7.js b/js/src/tests/test262/ch12/12.2/S12.2_A7.js
new file mode 100644
index 000000000..167355a9f
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.2/S12.2_A7.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.
+
+/**
+ * VariableDeclaration within "for" statement is allowed
+ *
+ * @path ch12/12.2/S12.2_A7.js
+ * @description Declaring variable within "for" statement
+ */
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+try{
+ infor_var = infor_var;
+}catch(e){
+ $ERROR('#1: Variable declaration inside "for" loop is admitted');
+};
+//
+//////////////////////////////////////////////////////////////////////////////
+
+for (;;){
+ break;
+ var infor_var;
+}
+
diff --git a/js/src/tests/test262/ch12/12.2/S12.2_A8_T1.js b/js/src/tests/test262/ch12/12.2/S12.2_A8_T1.js
new file mode 100644
index 000000000..c9466b665
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.2/S12.2_A8_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.
+
+/**
+ * Only AssignmentExpression is admitted when variable is initialized
+ *
+ * @path ch12/12.2/S12.2_A8_T1.js
+ * @description Checking if execution of "var x += 1" fails
+ * @negative
+ */
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+var x += 1;
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch12/12.2/S12.2_A8_T2.js b/js/src/tests/test262/ch12/12.2/S12.2_A8_T2.js
new file mode 100644
index 000000000..f5b9edc5f
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.2/S12.2_A8_T2.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.
+
+/**
+ * Only AssignmentExpression is admitted when variable is initialized
+ *
+ * @path ch12/12.2/S12.2_A8_T2.js
+ * @description Checking if execution of "var x | true" fails
+ * @negative
+ */
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+var x | true;
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch12/12.2/S12.2_A8_T3.js b/js/src/tests/test262/ch12/12.2/S12.2_A8_T3.js
new file mode 100644
index 000000000..4272e5c1b
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.2/S12.2_A8_T3.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.
+
+/**
+ * Only AssignmentExpression is admitted when variable is initialized
+ *
+ * @path ch12/12.2/S12.2_A8_T3.js
+ * @description Checking if execution of "var x && 1" fails
+ * @negative
+ */
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+var x && 1;
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch12/12.2/S12.2_A8_T4.js b/js/src/tests/test262/ch12/12.2/S12.2_A8_T4.js
new file mode 100644
index 000000000..1f4641770
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.2/S12.2_A8_T4.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.
+
+/**
+ * Only AssignmentExpression is admitted when variable is initialized
+ *
+ * @path ch12/12.2/S12.2_A8_T4.js
+ * @description Checking if execution of "var x++" fails
+ * @negative
+ */
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+var x++;
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch12/12.2/S12.2_A8_T5.js b/js/src/tests/test262/ch12/12.2/S12.2_A8_T5.js
new file mode 100644
index 000000000..1c414f6dd
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.2/S12.2_A8_T5.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.
+
+/**
+ * Only AssignmentExpression is admitted when variable is initialized
+ *
+ * @path ch12/12.2/S12.2_A8_T5.js
+ * @description Checking if execution of "var --x" fails
+ * @negative
+ */
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+var --x;
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch12/12.2/S12.2_A8_T6.js b/js/src/tests/test262/ch12/12.2/S12.2_A8_T6.js
new file mode 100644
index 000000000..c763f07aa
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.2/S12.2_A8_T6.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.
+
+/**
+ * Only AssignmentExpression is admitted when variable is initialized
+ *
+ * @path ch12/12.2/S12.2_A8_T6.js
+ * @description Checking if execution of "var x*1" fails
+ * @negative
+ */
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+var x*1;
+//
+//////////////////////////////////////////////////////////////////////////////
+
+
diff --git a/js/src/tests/test262/ch12/12.2/S12.2_A8_T7.js b/js/src/tests/test262/ch12/12.2/S12.2_A8_T7.js
new file mode 100644
index 000000000..86d1c3398
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.2/S12.2_A8_T7.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.
+
+/**
+ * Only AssignmentExpression is admitted when variable is initialized
+ *
+ * @path ch12/12.2/S12.2_A8_T7.js
+ * @description Checking if execution of "var x>>1" fails
+ * @negative
+ */
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+var x>>1;
+//
+//////////////////////////////////////////////////////////////////////////////
+
+
diff --git a/js/src/tests/test262/ch12/12.2/S12.2_A8_T8.js b/js/src/tests/test262/ch12/12.2/S12.2_A8_T8.js
new file mode 100644
index 000000000..d798757d6
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.2/S12.2_A8_T8.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.
+
+/**
+ * Only AssignmentExpression is admitted when variable is initialized
+ *
+ * @path ch12/12.2/S12.2_A8_T8.js
+ * @description Checking if execution of "var x in __arr" fails
+ * @negative
+ */
+
+__arr = [];
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+var x in __arr;
+//
+//////////////////////////////////////////////////////////////////////////////
+
+
diff --git a/js/src/tests/test262/ch12/12.2/S12.2_A9.js b/js/src/tests/test262/ch12/12.2/S12.2_A9.js
new file mode 100644
index 000000000..261599a65
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.2/S12.2_A9.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.
+
+/**
+ * When using property attributes, {DontEnum} is not used
+ *
+ * @path ch12/12.2/S12.2_A9.js
+ * @description Enumerating property attributes of "this" and then searching for the declared variable
+ */
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+for (__prop in this){
+ if (__prop === "__declared__var")
+ enumed=true;
+}
+if (!(enumed)) {
+ $ERROR('#1: When using property attributes, {DontEnum} not used');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+var __declared__var;
+
diff --git a/js/src/tests/test262/ch12/12.2/browser.js b/js/src/tests/test262/ch12/12.2/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.2/browser.js
diff --git a/js/src/tests/test262/ch12/12.2/shell.js b/js/src/tests/test262/ch12/12.2/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.2/shell.js
diff --git a/js/src/tests/test262/ch12/12.3/S12.3_A1.js b/js/src/tests/test262/ch12/12.3/S12.3_A1.js
new file mode 100644
index 000000000..e314b179e
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.3/S12.3_A1.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.
+
+/**
+ * The production EmptyStatement ; is evaluated as follows Return (normal, empty, empty)
+ *
+ * @path ch12/12.3/S12.3_A1.js
+ * @description Using EmptyStatement ;
+ */
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;;;; ;;;;;; ;; ;; ;;;;;; ;;;;;;;; ;; ;; ;;;;;
+;;;;; ;; ;;;; ;;;; ;; ;; ;; ;; ;; ;;;;;
+;;;;; ;;;; ;; ;;;; ;; ;;;;;; ;; ;;;; ;;;;;
+;;;;; ;; ;; ;; ;; ;; ;; ;; ;;;;;
+;;;;; ;;;;;; ;; ;; ;; ;; ;; ;;;;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
diff --git a/js/src/tests/test262/ch12/12.3/browser.js b/js/src/tests/test262/ch12/12.3/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.3/browser.js
diff --git a/js/src/tests/test262/ch12/12.3/shell.js b/js/src/tests/test262/ch12/12.3/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.3/shell.js
diff --git a/js/src/tests/test262/ch12/12.4/S12.4_A1.js b/js/src/tests/test262/ch12/12.4/S12.4_A1.js
new file mode 100644
index 000000000..0754d791e
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.4/S12.4_A1.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.
+
+/**
+ * An ExpressionStatement can not start with the function keyword because that might make it ambiguous with a FunctionDeclaration
+ *
+ * @path ch12/12.4/S12.4_A1.js
+ * @description Checking if execution of "function(){}()" fails
+ * @negative
+ */
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+function(){}();
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch12/12.4/S12.4_A2_T1.js b/js/src/tests/test262/ch12/12.4/S12.4_A2_T1.js
new file mode 100644
index 000000000..70d0aa62d
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.4/S12.4_A2_T1.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.
+
+/**
+ * The production ExpressionStatement : [lookahead \notin {{, function}] Expression; is evaluated as follows:
+ * 1. Evaluate Expression.
+ * 2. Call GetValue(Result(1)).
+ * 3. Return (normal, Result(2), empty)
+ *
+ * @path ch12/12.4/S12.4_A2_T1.js
+ * @description Checking by using eval "(eval("x+1+x==1"))"
+ */
+
+x=1;
+
+__evaluated = eval("x+1+x==1");
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__evaluated !== false) {
+ $ERROR('#1: __evaluated === false. Actual: __evaluated ==='+ __evaluated );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+__evaluated = eval("1+1+1==1");
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__evaluated !== false) {
+ $ERROR('#2: __evaluated === false. Actual: __evaluated ==='+ __evaluated );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch12/12.4/S12.4_A2_T2.js b/js/src/tests/test262/ch12/12.4/S12.4_A2_T2.js
new file mode 100644
index 000000000..2fdadc008
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.4/S12.4_A2_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.
+
+/**
+ * The production ExpressionStatement : [lookahead \notin {{, function}] Expression; is evaluated as follows:
+ * 1. Evaluate Expression.
+ * 2. Call GetValue(Result(1)).
+ * 3. Return (normal, Result(2), empty)
+ *
+ * @path ch12/12.4/S12.4_A2_T2.js
+ * @description Checking by using eval(eval(x), where x is any string)
+ */
+
+x="5+1|0===0";
+
+__evaluated = eval(x);
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__evaluated !== 7) {
+ $ERROR('#1: __evaluated === 7. Actual: __evaluated ==='+ __evaluated );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+__evaluated = eval("2*"+x+">-1");
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__evaluated !== 11) {
+ $ERROR('#2: __evaluated === 11. Actual: __evaluated ==='+ __evaluated );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch12/12.4/browser.js b/js/src/tests/test262/ch12/12.4/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.4/browser.js
diff --git a/js/src/tests/test262/ch12/12.4/shell.js b/js/src/tests/test262/ch12/12.4/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.4/shell.js
diff --git a/js/src/tests/test262/ch12/12.5/S12.5_A1.1_T1.js b/js/src/tests/test262/ch12/12.5/S12.5_A1.1_T1.js
new file mode 100644
index 000000000..ae2038c98
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.5/S12.5_A1.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.
+
+/**
+ * 0, null, undefined, false, empty string, NaN in expression is evaluated to false
+ *
+ * @path ch12/12.5/S12.5_A1.1_T1.js
+ * @description Using "if" without "else" construction
+ */
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+
+if(0)
+ $ERROR('#1: 0 in expression is evaluated to false ');
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if(false)
+ $ERROR('#2: false in expression is evaluated to false ');
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if(null)
+ $ERROR('#3: null in expression is evaluated to false ');
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#4
+if(undefined)
+ $ERROR('#4: undefined in expression is evaluated to false ');
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#5
+if("")
+ $ERROR('#5: empty string in expression is evaluated to false ');
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#6
+if(NaN)
+ $ERROR('#5: NaN in expression is evaluated to false ');
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch12/12.5/S12.5_A1.1_T2.js b/js/src/tests/test262/ch12/12.5/S12.5_A1.1_T2.js
new file mode 100644
index 000000000..ba5d8e3cb
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.5/S12.5_A1.1_T2.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.
+
+/**
+ * 0, null, undefined, false, empty string, NaN in expression is evaluated to false
+ *
+ * @path ch12/12.5/S12.5_A1.1_T2.js
+ * @description Using "if/else" construction
+ */
+
+var c=0;
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if(0)
+ $ERROR('#1.1: 0 in expression is evaluated to false ');
+else
+ c++;
+if (c!=1) $ERROR('#1.2: else branch don`t execute');
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if(false)
+ $ERROR('#2.1: false in expression is evaluated to false ');
+else
+ c++;
+if (c!=2) $ERROR('#2.2: else branch don`t execute');
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if(null)
+ $ERROR('#3.1: null in expression is evaluated to false ');
+else
+ c++;
+if (c!=3) $ERROR('#3.2: else branch don`t execute');
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#4
+if(undefined)
+ $ERROR('#4.1: undefined in expression is evaluated to false ');
+else
+ c++;
+if (c!=4) $ERROR('#4.2: else branch don`t execute');
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#5
+if("")
+ $ERROR('#5.1: empty string in expression is evaluated to false ');
+else
+ c++;
+if (c!=5) $ERROR('#5.2: else branch don`t execute');
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#6
+if(NaN)
+ $ERROR('#6.1: NaN in expression is evaluated to false ');
+else
+ c++;
+if (c!=6) $ERROR('#6.2: else branch don`t execute');
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch12/12.5/S12.5_A1.2_T1.js b/js/src/tests/test262/ch12/12.5/S12.5_A1.2_T1.js
new file mode 100644
index 000000000..19ba4cdd1
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.5/S12.5_A1.2_T1.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.
+
+/**
+ * 1, true, non-empty string and others in expression is evaluated to true when using operator "new"
+ *
+ * @path ch12/12.5/S12.5_A1.2_T1.js
+ * @description Using "if" without "else" construction
+ */
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if(!(new Number(1)))
+ $ERROR('#1: new 1 in expression is evaluated to true');
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if(!(new Boolean(true)))
+ $ERROR('#2: new true in expression is evaluated to true');
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if(!(new String("1")))
+ $ERROR('#3: new "1" in expression is evaluated to true');
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#4
+if(!(new String("A")))
+ $ERROR('#4: new "A" in expression is evaluated to true');
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#5
+if(!(new Boolean(false)))
+ $ERROR('#2: new false in expression is evaluated to true ');
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#6
+if(!(new Number(NaN)))
+ $ERROR('#6: new NaN in expression is evaluated to true ');
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#7
+if(!(new Number(null)))
+ $ERROR('#7: new null in expression is evaluated to true ');
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#8
+if(!(new String(undefined)))
+ $ERROR('#8: new undefined in expression is evaluated to true ');
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#9
+if(!(new String("")))
+ $ERROR('#9: new empty string in expression is evaluated to true ');
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch12/12.5/S12.5_A1.2_T2.js b/js/src/tests/test262/ch12/12.5/S12.5_A1.2_T2.js
new file mode 100644
index 000000000..b384311f1
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.5/S12.5_A1.2_T2.js
@@ -0,0 +1,101 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * 1, true, non-empty string and others in expression is evaluated to true when using operator "new"
+ *
+ * @path ch12/12.5/S12.5_A1.2_T2.js
+ * @description Using "if/else" construction
+ */
+
+var c=0;
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if(!(new Number(1)))
+ $ERROR('#1.1: new 1 in expression is evaluated to true');
+else
+ c++;
+if (c!=1) $ERROR('#1.2: else branch don`t execute');
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if(!(new Boolean(true)))
+ $ERROR('#2.1: new true in expression is evaluated to true');
+else
+ c++;
+if (c!=2) $ERROR('#2.2: else branch don`t execute');
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if(!(new String("1")))
+ $ERROR('#3.1: new "1" in expression is evaluated to true');
+else
+ c++;
+if (c!=3) $ERROR('#3.2: else branch don`t execute');
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#4
+if(!(new String("A")))
+ $ERROR('#4.1: new "A" in expression is evaluated to true');
+else
+ c++;
+if (c!=4) $ERROR('#4.2: else branch don`t execute');
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#5
+if(!(new Boolean(false)))
+ $ERROR('#5.1: new false in expression is evaluated to true ');
+else
+ c++;
+if (c!=5) $ERROR('#5.2: else branch don`t execute');
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#6
+if(!(new Number(NaN)))
+ $ERROR('#6.1: new NaN in expression is evaluated to true ');
+else
+ c++;
+if (c!=6) $ERROR('#6.2: else branch don`t execute');
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#7
+if(!(new Number(null)))
+ $ERROR('#7.1: new null in expression is evaluated to true ');
+else
+ c++;
+if (c!=7) $ERROR('#7.2: else branch don`t execute');
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#8
+if(!(new String(undefined)))
+ $ERROR('#8.1: new undefined in expression is evaluated to true ');
+else
+ c++;
+if (c!=8) $ERROR('#8.2: else branch don`t execute');
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#9
+if(!(new String("")))
+ $ERROR('#9.1: new empty string in expression is evaluated to true ');
+else
+ c++;
+if (c!=9) $ERROR('#9.2: else branch don`t execute');
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch12/12.5/S12.5_A10_T1.js b/js/src/tests/test262/ch12/12.5/S12.5_A10_T1.js
new file mode 100644
index 000000000..4995fe1c2
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.5/S12.5_A10_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.
+
+/**
+ * Function expession inside the "if" expression is allowed
+ *
+ * @path ch12/12.5/S12.5_A10_T1.js
+ * @description Using function expession(function __func(){return 0;}) inside the "if" expression
+ */
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#
+if(function __func(){return 0;}){
+ ;
+}else {
+ $ERROR('#1: Function expession inside the "if" expression is allowed');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch12/12.5/S12.5_A10_T2.js b/js/src/tests/test262/ch12/12.5/S12.5_A10_T2.js
new file mode 100644
index 000000000..bcb187b08
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.5/S12.5_A10_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.
+
+/**
+ * Function expession inside the "if" expression is allowed
+ *
+ * @path ch12/12.5/S12.5_A10_T2.js
+ * @description Using function expession "function __func(){return 0;}()" within "if" expression
+ */
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#
+if(function __func(){return 0;}()){
+ $ERROR('#1: Function expession inside the if expression is allowed');
+}else {
+ ;
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch12/12.5/S12.5_A11.js b/js/src/tests/test262/ch12/12.5/S12.5_A11.js
new file mode 100644
index 000000000..250b29f50
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.5/S12.5_A11.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.
+
+/**
+ * {} within the "if" expression is not allowed
+ *
+ * @path ch12/12.5/S12.5_A11.js
+ * @description Checking if execution of "if({1})" fails
+ * @negative
+ */
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#
+if({1})
+ {
+ ;
+ }else
+ {
+ ;
+ }
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch12/12.5/S12.5_A12_T1.js b/js/src/tests/test262/ch12/12.5/S12.5_A12_T1.js
new file mode 100644
index 000000000..43f858b09
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.5/S12.5_A12_T1.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.
+
+/**
+ * Embedded "if/else" constructions are allowed
+ *
+ * @path ch12/12.5/S12.5_A12_T1.js
+ * @description Using embedded "if/else" into "if/else" constructions
+ */
+
+//CHECK# 1
+if(true)
+ if (false)
+ $ERROR('#1.1: At embedded "if/else" constructions engine must select right branches');
+ else
+ ;
+else
+ if (true)
+ $ERROR('#1.2: At embedded "if/else" constructions engine must select right branches');
+ else
+ $ERROR('#1.3: At embedded "if/else" constructions engine must select right branches');
+
+//CHECK# 2
+if(true)
+ if (true)
+ ;
+ else
+ $ERROR('#2.1: At embedded "if/else" constructions engine must select right branches');
+else
+ if (true)
+ $ERROR('#2.2: At embedded "if/else" constructions engine must select right branches');
+ else
+ $ERROR('#2.3: At embedded "if/else" constructions engine must select right branches');
+
+//CHECK# 3
+if(false)
+ if (true)
+ $ERROR('#3.1: At embedded "if/else" constructions engine must select right branches');
+ else
+ $ERROR('#3.2: At embedded "if/else" constructions engine must select right branches');
+else
+ if (true)
+ ;
+ else
+ $ERROR('#3.3: At embedded "if/else" constructions engine must select right branches');
+
+//CHECK# 4
+if(false)
+ if (true)
+ $ERROR('#4.1: At embedded "if/else" constructions engine must select right branches');
+ else
+ $ERROR('#4.2: At embedded "if/else" constructions engine must select right branches');
+else
+ if (false)
+ $ERROR('#4.3: At embedded "if/else" constructions engine must select right branches');
+ else
+ ;
+
diff --git a/js/src/tests/test262/ch12/12.5/S12.5_A12_T2.js b/js/src/tests/test262/ch12/12.5/S12.5_A12_T2.js
new file mode 100644
index 000000000..c9115994b
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.5/S12.5_A12_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.
+
+/**
+ * Embedded "if/else" constructions are allowed
+ *
+ * @path ch12/12.5/S12.5_A12_T2.js
+ * @description Using embedded "if" into "if/else" constructions
+ */
+
+//CHECK# 1
+if(true){
+ if (false)
+ $ERROR('#1.1: At embedded "if/else" constructions engine must select right branches');
+}
+else{
+ if (true)
+ $ERROR('#1.2: At embedded "if/else" constructions engine must select right branches');
+}
+
+//CHECK# 2
+if(true){
+ if (true)
+ ;
+}
+else{
+ if (true)
+ $ERROR('#2.2: At embedded "if/else" constructions engine must select right branches');
+}
+
+//CHECK# 3
+if(false){
+ if (true)
+ $ERROR('#3.1: At embedded "if/else" constructions engine must select right branches');
+}
+else{
+ if (true)
+ ;
+}
+
+//CHECK# 4
+if(false){
+ if (true)
+ $ERROR('#4.1: At embedded "if/else" constructions engine must select right branches');
+}
+else{
+ if (false)
+ $ERROR('#4.3: At embedded "if/else" constructions engine must select right branches');
+}
+
diff --git a/js/src/tests/test262/ch12/12.5/S12.5_A12_T3.js b/js/src/tests/test262/ch12/12.5/S12.5_A12_T3.js
new file mode 100644
index 000000000..a17cff21f
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.5/S12.5_A12_T3.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.
+
+/**
+ * Embedded "if/else" constructions are allowed
+ *
+ * @path ch12/12.5/S12.5_A12_T3.js
+ * @description Using embedded "if/else" into "if" without "else" constructions
+ */
+
+//CHECK# 1
+if(true)
+ if (false)
+ $ERROR('#1.1: At embedded "if/else" constructions engine must select right branches');
+ else
+ ;
+
+//CHECK# 2
+if(true)
+ if (true)
+ ;
+ else
+ $ERROR('#2.1: At embedded "if/else" constructions engine must select right branches');
+
+//CHECK# 3
+if(false)
+ if (true)
+ $ERROR('#3.1: At embedded "if/else" constructions engine must select right branches');
+ else
+ $ERROR('#3.2: At embedded "if/else" constructions engine must select right branches');
+
+//CHECK# 4
+if(false)
+ if (true)
+ $ERROR('#4.1: At embedded "if/else" constructions engine must select right branches');
+ else
+ $ERROR('#4.2: At embedded "if/else" constructions engine must select right branches');
+
diff --git a/js/src/tests/test262/ch12/12.5/S12.5_A12_T4.js b/js/src/tests/test262/ch12/12.5/S12.5_A12_T4.js
new file mode 100644
index 000000000..03f643d62
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.5/S12.5_A12_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.
+
+/**
+ * Embedded "if/else" constructions are allowed
+ *
+ * @path ch12/12.5/S12.5_A12_T4.js
+ * @description Using embedded "if" into "if" constructions
+ */
+
+//CHECK# 1
+if(true)
+ if (false)
+ $ERROR('#1.1: At embedded "if/else" constructions engine must select right branches');
+
+//CHECK# 2
+var c=0;
+if(true)
+ if (true)
+ c=2;
+if (c!==2)
+ $ERROR('#2: At embedded "if/else" constructions engine must select right branches');
+
+//CHECK# 3
+if(false)
+ if (true)
+ $ERROR('#3.1: At embedded "if/else" constructions engine must select right branches');
+
+//CHECK# 4
+if(false)
+ if (true)
+ $ERROR('#4.1: At embedded "if/else" constructions engine must select right branches');
+
diff --git a/js/src/tests/test262/ch12/12.5/S12.5_A1_T1.js b/js/src/tests/test262/ch12/12.5/S12.5_A1_T1.js
new file mode 100644
index 000000000..df6f327d4
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.5/S12.5_A1_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.
+
+/**
+ * 1, true, non-empty string in expression is evaluated to true
+ *
+ * @path ch12/12.5/S12.5_A1_T1.js
+ * @description Using "if" without "else" construction
+ */
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if(!(1))
+ $ERROR('#1: 1 in expression is evaluated to true');
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if(!(true))
+ $ERROR('#2: true in expression is evaluated to true');
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if(!("1"))
+ $ERROR('#3: "1" in expression is evaluated to true');
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#4
+if(!("A"))
+ $ERROR('#4: "A" in expression is evaluated to true');
+//
+//////////////////////////////////////////////////////////////////////////////
+
+
diff --git a/js/src/tests/test262/ch12/12.5/S12.5_A1_T2.js b/js/src/tests/test262/ch12/12.5/S12.5_A1_T2.js
new file mode 100644
index 000000000..ea952a930
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.5/S12.5_A1_T2.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.
+
+/**
+ * 1, true, non-empty string in expression is evaluated to true
+ *
+ * @path ch12/12.5/S12.5_A1_T2.js
+ * @description Using "if/else" construction
+ */
+
+var c=0;
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if(!(1))
+ $ERROR('#1.1: 1 in expression is evaluated to true');
+else
+ c++;
+if (c!=1) $ERROR('#1.2: else branch don`t execute');
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if(!(true))
+ $ERROR('#2.1: true in expression is evaluated to true');
+else
+ c++;
+if (c!=2) $ERROR('#2.2: else branch don`t execute');
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if(!("1"))
+ $ERROR('#3.1: "1" in expression is evaluated to true');
+else
+ c++;
+if (c!=3) $ERROR('#3.2: else branch don`t execute');
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#4
+if(!("A"))
+ $ERROR('#4.1: "A" in expression is evaluated to true');
+else
+ c++;
+if (c!=4) $ERROR('#4.2: else branch don`t execute');
+//
+//////////////////////////////////////////////////////////////////////////////
+
+
diff --git a/js/src/tests/test262/ch12/12.5/S12.5_A2.js b/js/src/tests/test262/ch12/12.5/S12.5_A2.js
new file mode 100644
index 000000000..c953c29cd
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.5/S12.5_A2.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.
+
+/**
+ * In the "if" Statement eval in Expression is admitted
+ *
+ * @path ch12/12.5/S12.5_A2.js
+ * @description Checking by using eval "eval("true")"
+ * @negative
+ */
+
+if (eval("true")) $FAIL('#1: In the "if" Statement eval as Expression is admitted');
+
diff --git a/js/src/tests/test262/ch12/12.5/S12.5_A3.js b/js/src/tests/test262/ch12/12.5/S12.5_A3.js
new file mode 100644
index 000000000..3eb41d59b
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.5/S12.5_A3.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.
+
+/**
+ * When the production "IfStatement: if ( Expression ) Statement else Statement" is evaluated, Expression is evaluated first
+ *
+ * @path ch12/12.5/S12.5_A3.js
+ * @description The Expression is "(function(){throw 1})()"
+ */
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+try {
+ if ((function(){throw 1})()) abracadabra
+} catch (e) {
+ if (e !== 1) {
+ $ERROR('#1: Exception === 1. Actual: Exception ==='+ e);
+ }
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+try {
+ if ((function(){throw 1})()) abracadabra; else blablachat;
+} catch (e) {
+ if (e !== 1) {
+ $ERROR('#2: Exception === 1. Actual: Exception ==='+ e);
+ }
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+
diff --git a/js/src/tests/test262/ch12/12.5/S12.5_A4.js b/js/src/tests/test262/ch12/12.5/S12.5_A4.js
new file mode 100644
index 000000000..73babcfea
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.5/S12.5_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.
+
+/**
+ * When the production "IfStatement: if ( Expression ) Statement else Statement" is evaluated, Statement(s) is(are) evaluated second
+ *
+ * @path ch12/12.5/S12.5_A4.js
+ * @description The first statement is "(function(){throw "instatement"})()"
+ */
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+try {
+ if (true) (function(){throw "instatement"})();
+ $FAIL("#1 failed")
+} catch (e) {
+ if (e !== "instatement") {
+ $ERROR('#1: Exception === "instatement". Actual: Exception ==='+ e);
+ }
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+try {
+ if (false) (function(){throw "truebranch"})(); (function(){throw "missbranch"})();
+ $FAIL("#2 failed")
+} catch (e) {
+ if (e !== "missbranch") {
+ $ERROR('#2: Exception === "missbranch". Actual: Exception ==='+ e);
+ }
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+
diff --git a/js/src/tests/test262/ch12/12.5/S12.5_A5.js b/js/src/tests/test262/ch12/12.5/S12.5_A5.js
new file mode 100644
index 000000000..72c334a67
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.5/S12.5_A5.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.
+
+/**
+ * FunctionDeclaration inside the "if" Expression is evaluated as true and function will not be declarated
+ *
+ * @path ch12/12.5/S12.5_A5.js
+ * @description The "if" Expression is "function __func(){throw "FunctionExpression";}"
+ */
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+try {
+ __func=__func;
+ $ERROR('#1: "__func=__func" lead to throwing exception');
+} catch (e) {
+ ;
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+try {
+ if(function __func(){throw "FunctionExpression";}) (function(){throw "TrueBranch"})(); else (function(){"MissBranch"})();
+} catch (e) {
+ if (e !== "TrueBranch") {
+ $ERROR('#2: Exception ==="TrueBranch". Actual: Exception ==='+ e);
+ }
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+try {
+ __func=__func;
+ $ERROR('#3: "__func=__func" lead to throwing exception');
+} catch (e) {
+ ;
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+
+
+
diff --git a/js/src/tests/test262/ch12/12.5/S12.5_A6_T1.js b/js/src/tests/test262/ch12/12.5/S12.5_A6_T1.js
new file mode 100644
index 000000000..76aabe63c
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.5/S12.5_A6_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.
+
+/**
+ * In the If statement expression must be enclosed in braces
+ *
+ * @path ch12/12.5/S12.5_A6_T1.js
+ * @description Checking if execution of "if true" fails
+ * @negative
+ */
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if true;
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch12/12.5/S12.5_A6_T2.js b/js/src/tests/test262/ch12/12.5/S12.5_A6_T2.js
new file mode 100644
index 000000000..1b6f383ab
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.5/S12.5_A6_T2.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.
+
+/**
+ * In the If statement expression must be enclosed in braces
+ *
+ * @path ch12/12.5/S12.5_A6_T2.js
+ * @description Checking if execution of "if false" fails
+ * @negative
+ */
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if false;
+//
+//////////////////////////////////////////////////////////////////////////////
+
+
diff --git a/js/src/tests/test262/ch12/12.5/S12.5_A7.js b/js/src/tests/test262/ch12/12.5/S12.5_A7.js
new file mode 100644
index 000000000..f450d6aea
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.5/S12.5_A7.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.
+
+/**
+ * In the "if" statement empty statement is allowed and is evaluated to "undefined"
+ *
+ * @path ch12/12.5/S12.5_A7.js
+ * @description Checking by using eval "eval("if(1);"))"
+ */
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+try {
+ var __evaluated = eval("if(1);");
+ if (__evaluated !== undefined) {
+ $ERROR('#1: __evaluated === undefined. Actual: __evaluated ==='+ __evaluated );
+ }
+
+} catch (e) {
+ $ERROR('#1.1: "__evaluated = eval("if(1);")" does not lead to throwing exception');
+
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch12/12.5/S12.5_A8.js b/js/src/tests/test262/ch12/12.5/S12.5_A8.js
new file mode 100644
index 000000000..7a2d4b9c6
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.5/S12.5_A8.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.
+
+/**
+ * In the "if" Statement empty expression is not allowed
+ *
+ * @path ch12/12.5/S12.5_A8.js
+ * @description Checking if execution of "if()" fails
+ * @negative
+ */
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if();
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch12/12.5/browser.js b/js/src/tests/test262/ch12/12.5/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.5/browser.js
diff --git a/js/src/tests/test262/ch12/12.5/shell.js b/js/src/tests/test262/ch12/12.5/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.5/shell.js
diff --git a/js/src/tests/test262/ch12/12.6/12.6.1/S12.6.1_A1.js b/js/src/tests/test262/ch12/12.6/12.6.1/S12.6.1_A1.js
new file mode 100644
index 000000000..c95c6ff1e
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.6/12.6.1/S12.6.1_A1.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.
+
+/**
+ * When the production "do Statement while ( Expression )" is evaluated, Statement is evaluated first
+ *
+ * @path ch12/12.6/12.6.1/S12.6.1_A1.js
+ * @description Evaluating various Expressions
+ */
+
+var __in__do;
+
+do __in__do=1; while ( false );
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__in__do!==1) {
+ $ERROR('#1: false evaluates to false');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+do __in__do=2; while ( 0 );
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__in__do!==2) {
+ $ERROR('#2: 0 evaluates to false');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+do __in__do=3; while ( "" );
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if (__in__do!==3) {
+ $ERROR('#3: "" evaluates to false');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch12/12.6/12.6.1/S12.6.1_A10.js b/js/src/tests/test262/ch12/12.6/12.6.1/S12.6.1_A10.js
new file mode 100644
index 000000000..0c01a5e2e
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.6/12.6.1/S12.6.1_A10.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.
+
+/**
+ * FunctionExpression within a "do-while" statement is allowed, but no function with the given name will appear in the global context
+ *
+ * @path ch12/12.6/12.6.1/S12.6.1_A10.js
+ * @description Also this a test on FunctionExpression
+ */
+
+var check = 0;
+do {
+ if(typeof(f) === "function"){
+ check = -1;
+ break;
+ } else {
+ check = 1;
+ break;
+ }
+} while(function f(){});
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (check !== 1) {
+ $ERROR('#1: FunctionExpression within a "do-while" statement is allowed, but no function with the given name will appear in the global context');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch12/12.6/12.6.1/S12.6.1_A11.js b/js/src/tests/test262/ch12/12.6/12.6.1/S12.6.1_A11.js
new file mode 100644
index 000000000..60071bd6b
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.6/12.6.1/S12.6.1_A11.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.
+
+/**
+ * Block "{}" in a "do-while" Expression is evaluated to true
+ *
+ * @path ch12/12.6/12.6.1/S12.6.1_A11.js
+ * @description Checking if execution of "do {} while({})" passes
+ */
+
+do {
+ var __in__do=1;
+ if(__in__do)break;
+} while({});
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__in__do !== 1) {
+ $ERROR('#1: "{}" in do-while expression evaluates to true');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch12/12.6/12.6.1/S12.6.1_A12.js b/js/src/tests/test262/ch12/12.6/12.6.1/S12.6.1_A12.js
new file mode 100644
index 000000000..1e623bc43
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.6/12.6.1/S12.6.1_A12.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.
+
+/**
+ * Any statement within "do-while" construction must be a compound
+ *
+ * @path ch12/12.6/12.6.1/S12.6.1_A12.js
+ * @description Checking if execution of "do var x=1; var y =2; while (0)" fails
+ * @negative
+ */
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+do var x=1; var y =2; while (0);
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch12/12.6/12.6.1/S12.6.1_A14_T1.js b/js/src/tests/test262/ch12/12.6/12.6.1/S12.6.1_A14_T1.js
new file mode 100644
index 000000000..38bc21491
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.6/12.6.1/S12.6.1_A14_T1.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.
+
+/**
+ * FunctionExpression within a "do-while" Expression is allowed
+ *
+ * @path ch12/12.6/12.6.1/S12.6.1_A14_T1.js
+ * @description Using FunctionExpression "function __func(){return 0;}" as an Expression
+ */
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#
+do{
+ var __reached = 1;
+ break;
+}while(function __func(){return 0;});
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__reached !== 1) {
+ $ERROR('#2: function expession inside of do-while expression is allowed');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch12/12.6/12.6.1/S12.6.1_A14_T2.js b/js/src/tests/test262/ch12/12.6/12.6.1/S12.6.1_A14_T2.js
new file mode 100644
index 000000000..9ae3ad763
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.6/12.6.1/S12.6.1_A14_T2.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.
+
+/**
+ * FunctionExpression within a "do-while" Expression is allowed
+ *
+ * @path ch12/12.6/12.6.1/S12.6.1_A14_T2.js
+ * @description Using FunctionExpression "function __func(){return 0;}()" as an Expression
+ */
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#
+do{
+ var __reached = 1;
+ break;
+}while(function __func(){return 0;}());
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__reached !== 1) {
+ $ERROR('#2: function expession inside of do-while expression is allowed');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch12/12.6/12.6.1/S12.6.1_A15.js b/js/src/tests/test262/ch12/12.6/12.6.1/S12.6.1_A15.js
new file mode 100644
index 000000000..65588750c
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.6/12.6.1/S12.6.1_A15.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.
+
+/**
+ * Block within a "do-while" Expression is not allowed
+ *
+ * @path ch12/12.6/12.6.1/S12.6.1_A15.js
+ * @description Using "{0}" Block as an Expression
+ * @negative
+ */
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#
+do{
+ ;
+}while({0});
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch12/12.6/12.6.1/S12.6.1_A2.js b/js/src/tests/test262/ch12/12.6/12.6.1/S12.6.1_A2.js
new file mode 100644
index 000000000..023c7d4a2
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.6/12.6.1/S12.6.1_A2.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.
+
+/**
+ * While evaluating "do Statement while ( Expression )", Statement is evaluated first and only after it is done Expression is checked
+ *
+ * @path ch12/12.6/12.6.1/S12.6.1_A2.js
+ * @description Evaluating Statement with error Expression
+ */
+
+try {
+ do __in__do = "reached"; while (abbracadabra);
+ $ERROR('#1: \'do __in__do = "reached"; while (abbracadabra)\' lead to throwing exception');
+} catch (e) {
+ if (e instanceof Test262Error) throw e;
+}
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__in__do !== "reached") {
+ $ERROR('#1.1: __in__do === "reached". Actual: __in__do ==='+ __in__do );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+
+
diff --git a/js/src/tests/test262/ch12/12.6/12.6.1/S12.6.1_A3.js b/js/src/tests/test262/ch12/12.6/12.6.1/S12.6.1_A3.js
new file mode 100644
index 000000000..5f5f0ed69
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.6/12.6.1/S12.6.1_A3.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.
+
+/**
+ * When the production "do Statement while ( Expression )" is evaluated, then (normal, V, empty) is returned
+ *
+ * @path ch12/12.6/12.6.1/S12.6.1_A3.js
+ * @description Using eval "eval("do __in__do=1; while (false)")"
+ */
+
+__evaluated = eval("do __in__do=1; while (false)");
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#
+if (__in__do !== 1) {
+ $ERROR('#1: __in__do === 1. Actual: __in__do ==='+ __in__do );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__evaluated !== 1) {
+ $ERROR('#2: __evaluated === 1. Actual: __evaluated ==='+ __evaluated );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch12/12.6/12.6.1/S12.6.1_A4_T1.js b/js/src/tests/test262/ch12/12.6/12.6.1/S12.6.1_A4_T1.js
new file mode 100644
index 000000000..917afe329
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.6/12.6.1/S12.6.1_A4_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.
+
+/**
+ * "break" within a "do-while" Statement is allowed and performed as described in 12.8
+ *
+ * @path ch12/12.6/12.6.1/S12.6.1_A4_T1.js
+ * @description Using "break" within a "do-while" loop
+ */
+
+do {
+ __in__do__before__break="reached";
+ break;
+ __in__do__after__break="where am i";
+} while(2===1);
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__in__do__before__break !== "reached") {
+ $ERROR('#1: __in__do__before__break === "reached". Actual: __in__do__before__break ==='+ __in__do__before__break );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (typeof __in__do__after__break !== "undefined") {
+ $ERROR('#2: typeof __in__do__after__break === "undefined". Actual: typeof __in__do__after__break ==='+ typeof __in__do__after__break );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch12/12.6/12.6.1/S12.6.1_A4_T2.js b/js/src/tests/test262/ch12/12.6/12.6.1/S12.6.1_A4_T2.js
new file mode 100644
index 000000000..72e01a07d
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.6/12.6.1/S12.6.1_A4_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.
+
+/**
+ * "break" within a "do-while" Statement is allowed and performed as described in 12.8
+ *
+ * @path ch12/12.6/12.6.1/S12.6.1_A4_T2.js
+ * @description "break" and VariableDeclaration within a "do-while" statement
+ */
+
+do_out : do {
+ var __in__do__before__break="black";
+ do_in : do {
+ var __in__do__IN__before__break="hole";
+ break do_in;
+ var __in__do__IN__after__break="sun";
+ } while (0);
+ var __in__do__after__break="won't you come";
+} while(2==1);
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (!(__in__do__before__break&&__in__do__IN__before__break&&!__in__do__IN__after__break&&__in__do__after__break)) {
+ $ERROR('#1: (__in__do__before__break&&__in__do__IN__before__break&&!__in__do__IN__after__break&&__in__do__after__break)===true. Actual: (__in__do__before__break&&__in__do__IN__before__break&&!__in__do__IN__after__break&&__in__do__after__break)==='+ (__in__do__before__break&&__in__do__IN__before__break&&!__in__do__IN__after__break&&__in__do__after__break) );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch12/12.6/12.6.1/S12.6.1_A4_T3.js b/js/src/tests/test262/ch12/12.6/12.6.1/S12.6.1_A4_T3.js
new file mode 100644
index 000000000..a6adc0836
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.6/12.6.1/S12.6.1_A4_T3.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.
+
+/**
+ * "break" within a "do-while" Statement is allowed and performed as described in 12.8
+ *
+ * @path ch12/12.6/12.6.1/S12.6.1_A4_T3.js
+ * @description "break" and VariableDeclaration within a "do-while" statement
+ */
+
+do_out : do {
+ var __in__do__before__break="once";
+ do_in : do {
+ var __in__do__IN__before__break="in";
+ break do_out;
+ var __in__do__IN__after__break="the";
+ } while (0);
+ var __in__do__after__break="lifetime";
+} while(2===1);
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (!(__in__do__before__break&&__in__do__IN__before__break&&!__in__do__IN__after__break&&!__in__do__after__break)) {
+ $ERROR('#1: (__in__do__before__break&&__in__do__IN__before__break&&!__in__do__IN__after__break&&!__in__do__after__break)===true. Actual: (__in__do__before__break&&__in__do__IN__before__break&&!__in__do__IN__after__break&&!__in__do__after__break)==='+ (__in__do__before__break&&__in__do__IN__before__break&&!__in__do__IN__after__break&&!__in__do__after__break) );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch12/12.6/12.6.1/S12.6.1_A4_T4.js b/js/src/tests/test262/ch12/12.6/12.6.1/S12.6.1_A4_T4.js
new file mode 100644
index 000000000..52cb23cc9
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.6/12.6.1/S12.6.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.
+
+/**
+ * "break" within a "do-while" Statement is allowed and performed as described in 12.8
+ *
+ * @path ch12/12.6/12.6.1/S12.6.1_A4_T4.js
+ * @description "break" and VariableDeclaration within a "do-while" statement
+ */
+
+do_out : do {
+ var __in__do__before__break="reached";
+ do_in : do {
+ var __in__do__IN__before__break="reached";
+ break;
+ var __in__do__IN__after__break="where am i";
+ } while (0);
+ var __in__do__after__break="where am i";
+} while(2===1);
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (!(__in__do__before__break&&__in__do__IN__before__break&&!__in__do__IN__after__break&&__in__do__after__break)) {
+ $ERROR('#1: (__in__do__before__break&&__in__do__IN__before__break&&!__in__do__IN__after__break&&__in__do__after__break)===true. Actual: (__in__do__before__break&&__in__do__IN__before__break&&!__in__do__IN__after__break&&__in__do__after__break)==='+ (__in__do__before__break&&__in__do__IN__before__break&&!__in__do__IN__after__break&&__in__do__after__break) );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+
diff --git a/js/src/tests/test262/ch12/12.6/12.6.1/S12.6.1_A4_T5.js b/js/src/tests/test262/ch12/12.6/12.6.1/S12.6.1_A4_T5.js
new file mode 100644
index 000000000..97f65bf59
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.6/12.6.1/S12.6.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.
+
+/**
+ * "break" within a "do-while" Statement is allowed and performed as described in 12.8
+ *
+ * @path ch12/12.6/12.6.1/S12.6.1_A4_T5.js
+ * @description Using labeled "break" in order to continue a loop
+ */
+
+//CHECK#1
+var i=0;
+woohoo:{
+ do{
+ i++;
+ if ( ! (i < 10) ) {
+ break woohoo;
+ $ERROR('#1.1: "break woohoo" must break loop');
+ }
+ } while ( true );
+ if (i!==10) $ERROR('#1.2: i===10. Actual: i==='+ i );
+}
+
diff --git a/js/src/tests/test262/ch12/12.6/12.6.1/S12.6.1_A5.js b/js/src/tests/test262/ch12/12.6/12.6.1/S12.6.1_A5.js
new file mode 100644
index 000000000..67bc20de2
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.6/12.6.1/S12.6.1_A5.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.
+
+/**
+ * After "do-while" is broken, (normal, V, empty) is returned
+ *
+ * @path ch12/12.6/12.6.1/S12.6.1_A5.js
+ * @description Using eval
+ */
+
+__evaluated = eval("do {__in__do__before__break=1; break; __in__do__after__break=2;} while(0)");
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__in__do__before__break !== 1) {
+ $ERROR('#1: __in__do__before__break === 1. Actual: __in__do__before__break ==='+ __in__do__before__break );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (typeof __in__do__after__break !== "undefined") {
+ $ERROR('#2: typeof __in__do__after__break === "undefined". Actual: typeof __in__do__after__break ==='+ typeof __in__do__after__break );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if (__evaluated !== 1) {
+ $ERROR('#3: __evaluated === 1. Actual: __evaluated ==='+ __evaluated );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch12/12.6/12.6.1/S12.6.1_A6_T1.js b/js/src/tests/test262/ch12/12.6/12.6.1/S12.6.1_A6_T1.js
new file mode 100644
index 000000000..40af77c63
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.6/12.6.1/S12.6.1_A6_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.
+
+/**
+ * Expression in "do-while" IterationStatement is bracketed with braces
+ *
+ * @path ch12/12.6/12.6.1/S12.6.1_A6_T1.js
+ * @description Checking if execution of "do{} while 1" fails
+ * @negative
+ */
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+do break; while 1;
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch12/12.6/12.6.1/S12.6.1_A6_T2.js b/js/src/tests/test262/ch12/12.6/12.6.1/S12.6.1_A6_T2.js
new file mode 100644
index 000000000..06fb063ca
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.6/12.6.1/S12.6.1_A6_T2.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.
+
+/**
+ * Expression in "do-while" IterationStatement is bracketed with braces
+ *
+ * @path ch12/12.6/12.6.1/S12.6.1_A6_T2.js
+ * @description Checking if execution of "do{} while 0" fails
+ * @negative
+ */
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+do break; while 0;
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch12/12.6/12.6.1/S12.6.1_A6_T3.js b/js/src/tests/test262/ch12/12.6/12.6.1/S12.6.1_A6_T3.js
new file mode 100644
index 000000000..b29c7c83f
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.6/12.6.1/S12.6.1_A6_T3.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.
+
+/**
+ * Expression in "do-while" IterationStatement is bracketed with braces
+ *
+ * @path ch12/12.6/12.6.1/S12.6.1_A6_T3.js
+ * @description Checking if execution of "do{}while true" fails
+ * @negative
+ */
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+do break; while true;
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch12/12.6/12.6.1/S12.6.1_A6_T4.js b/js/src/tests/test262/ch12/12.6/12.6.1/S12.6.1_A6_T4.js
new file mode 100644
index 000000000..55b670506
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.6/12.6.1/S12.6.1_A6_T4.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.
+
+/**
+ * Expression in "do-while" IterationStatement is bracketed with braces
+ *
+ * @path ch12/12.6/12.6.1/S12.6.1_A6_T4.js
+ * @description Checking if execution of "do{}while false" fails
+ * @negative
+ */
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+do break; while false;
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch12/12.6/12.6.1/S12.6.1_A6_T5.js b/js/src/tests/test262/ch12/12.6/12.6.1/S12.6.1_A6_T5.js
new file mode 100644
index 000000000..4b0b06202
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.6/12.6.1/S12.6.1_A6_T5.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.
+
+/**
+ * Expression in "do-while" IterationStatement is bracketed with braces
+ *
+ * @path ch12/12.6/12.6.1/S12.6.1_A6_T5.js
+ * @description Checking if execution of "do{}while ''" fails
+ * @negative
+ */
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+do break; while '';
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch12/12.6/12.6.1/S12.6.1_A6_T6.js b/js/src/tests/test262/ch12/12.6/12.6.1/S12.6.1_A6_T6.js
new file mode 100644
index 000000000..35e96f41e
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.6/12.6.1/S12.6.1_A6_T6.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.
+
+/**
+ * Expression in "do-while" IterationStatement is bracketed with braces
+ *
+ * @path ch12/12.6/12.6.1/S12.6.1_A6_T6.js
+ * @description Checking if execution of "do{}while 'hood'" fails
+ * @negative
+ */
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+do break; while 'hood';
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch12/12.6/12.6.1/S12.6.1_A7.js b/js/src/tests/test262/ch12/12.6/12.6.1/S12.6.1_A7.js
new file mode 100644
index 000000000..78ca8c4ec
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.6/12.6.1/S12.6.1_A7.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.
+
+/**
+ * The "do-while" Statement is evaluted according to 12.6.1 and returns (normal, V, empty)
+ *
+ * @path ch12/12.6/12.6.1/S12.6.1_A7.js
+ * @description Using eval
+ */
+
+var __condition=0
+
+__evaluated = eval("do eval(\"__condition++\"); while (__condition<5)");
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__condition !== 5) {
+ $ERROR('#1: The "do-while" statement is evaluted according to the Standard ');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__evaluated !== 4) {
+ $ERROR('#2: The "do-while" statement returns (normal, V, empty)');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+
diff --git a/js/src/tests/test262/ch12/12.6/12.6.1/S12.6.1_A8.js b/js/src/tests/test262/ch12/12.6/12.6.1/S12.6.1_A8.js
new file mode 100644
index 000000000..2f7c7e742
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.6/12.6.1/S12.6.1_A8.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.
+
+/**
+ * "continue" statement within a "do-while" Statement is allowed
+ *
+ * @path ch12/12.6/12.6.1/S12.6.1_A8.js
+ * @description Using eval
+ */
+
+var __condition = 0, __odds=0;
+
+__evaluated = eval("do { __condition++; if (((''+__condition/2).split('.')).length>1) continue; __odds++;} while(__condition < 10)");
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__odds !== 5) {
+ $ERROR('#1: __odds === 5. Actual: __odds ==='+ __odds );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__evaluated !== 4) {
+ $ERROR('#2: __evaluated === 4. Actual: __evaluated ==='+ __evaluated );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+
diff --git a/js/src/tests/test262/ch12/12.6/12.6.1/S12.6.1_A9.js b/js/src/tests/test262/ch12/12.6/12.6.1/S12.6.1_A9.js
new file mode 100644
index 000000000..e9e831b07
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.6/12.6.1/S12.6.1_A9.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.
+
+/**
+ * "do-while" Statement is evaluated without syntax checks
+ *
+ * @path ch12/12.6/12.6.1/S12.6.1_A9.js
+ * @description Throwing system exception whithin a "do-while" loop
+ */
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+try {
+ do {
+ var x = 1;
+ abaracadabara;
+ } while(0);
+ $ERROR('#1: "abbracadabra" lead to throwing exception');
+
+} catch (e) {
+ if (e instanceof Test262Error) throw e;
+}
+
+if (x !== 1) {
+ $ERROR('#1.1: x === 1. Actual: x ==='+ x );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch12/12.6/12.6.1/browser.js b/js/src/tests/test262/ch12/12.6/12.6.1/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.6/12.6.1/browser.js
diff --git a/js/src/tests/test262/ch12/12.6/12.6.1/shell.js b/js/src/tests/test262/ch12/12.6/12.6.1/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.6/12.6.1/shell.js
diff --git a/js/src/tests/test262/ch12/12.6/12.6.2/S12.6.2_A1.js b/js/src/tests/test262/ch12/12.6/12.6.2/S12.6.2_A1.js
new file mode 100644
index 000000000..cb7fff722
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.6/12.6.2/S12.6.2_A1.js
@@ -0,0 +1,62 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * Expression from "while" IterationStatement is evaluated first; "false", "0", "null", "undefined" and "empty" strings used as the Expression are evaluated to "false"
+ *
+ * @path ch12/12.6/12.6.2/S12.6.2_A1.js
+ * @description Evaluating various Expressions
+ */
+
+var __in__do;
+
+while ( false ) __in__do=1;
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__in__do !== undefined) {
+ $ERROR('#1: false evaluates to false');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+while ( 0 ) __in__do=2;
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__in__do !== undefined) {
+ $ERROR('#2: 0 evaluates to false');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+while ( "" ) __in__do=3;
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if (__in__do !== undefined) {
+ $ERROR('#3: empty string evaluates to false');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+while ( null ) __in__do=4;
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#4
+if (__in__do !== undefined) {
+ $ERROR('#4: null evaluates to false');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+while ( undefined ) __in__do=35;
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#5
+if (__in__do !== undefined) {
+ $ERROR('#5: undefined evaluates to false');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch12/12.6/12.6.2/S12.6.2_A10.js b/js/src/tests/test262/ch12/12.6/12.6.2/S12.6.2_A10.js
new file mode 100644
index 000000000..9a05fe317
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.6/12.6.2/S12.6.2_A10.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.
+
+/**
+ * FunctionExpression within a "while" IterationStatement is allowed, but no function with the given name will appear in the global context
+ *
+ * @path ch12/12.6/12.6.2/S12.6.2_A10.js
+ * @description Testing FunctionExpression too
+ */
+
+var check=0;
+while(function f(){}){
+ if(typeof(f) === "function") {
+ check = -1;
+ break;
+ } else {
+ check = 1;
+ break;
+ }
+}
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (check !== 1) {
+ $ERROR('#1: FunctionExpression inside while construction expression allowed but function not declare');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch12/12.6/12.6.2/S12.6.2_A11.js b/js/src/tests/test262/ch12/12.6/12.6.2/S12.6.2_A11.js
new file mode 100644
index 000000000..6ff4c779c
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.6/12.6.2/S12.6.2_A11.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.
+
+/**
+ * "{}" Block within a "while" Expression is evaluated to true
+ *
+ * @path ch12/12.6/12.6.2/S12.6.2_A11.js
+ * @description Checking if execution of "while({}){}" passes
+ */
+
+while({}){
+ var __in__do=1;
+ if(__in__do)break;
+};
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__in__do !== 1) {
+ $ERROR('#1: "{}" in while expression evaluates to true');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch12/12.6/12.6.2/S12.6.2_A14_T1.js b/js/src/tests/test262/ch12/12.6/12.6.2/S12.6.2_A14_T1.js
new file mode 100644
index 000000000..f27b9df26
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.6/12.6.2/S12.6.2_A14_T1.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.
+
+/**
+ * FunctionExpression within a "while" Expression is allowed
+ *
+ * @path ch12/12.6/12.6.2/S12.6.2_A14_T1.js
+ * @description Using "function __func(){return 0;}" as an Expression
+ */
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#
+while(function __func(){return 0;}){
+ var __reached = 1;
+ break;
+};
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__reached !== 1) {
+ $ERROR('#2: function expression inside of while expression is allowed');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch12/12.6/12.6.2/S12.6.2_A14_T2.js b/js/src/tests/test262/ch12/12.6/12.6.2/S12.6.2_A14_T2.js
new file mode 100644
index 000000000..cd867ea97
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.6/12.6.2/S12.6.2_A14_T2.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.
+
+/**
+ * FunctionExpression within a "while" Expression is allowed
+ *
+ * @path ch12/12.6/12.6.2/S12.6.2_A14_T2.js
+ * @description Using function call as an Expression
+ */
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#
+while(function __func(){return 1;}()){
+ var __reached = 1;
+ break;
+};
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__reached !== 1) {
+ $ERROR('#2: function expression inside of while expression is allowed');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch12/12.6/12.6.2/S12.6.2_A15.js b/js/src/tests/test262/ch12/12.6/12.6.2/S12.6.2_A15.js
new file mode 100644
index 000000000..e1e231dd4
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.6/12.6.2/S12.6.2_A15.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.
+
+/**
+ * Block within a "while" Expression is not allowed
+ *
+ * @path ch12/12.6/12.6.2/S12.6.2_A15.js
+ * @description Expression is "{0}"
+ * @negative
+ */
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#
+while({1}){
+ break ;
+};
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch12/12.6/12.6.2/S12.6.2_A2.js b/js/src/tests/test262/ch12/12.6/12.6.2/S12.6.2_A2.js
new file mode 100644
index 000000000..e3994d474
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.6/12.6.2/S12.6.2_A2.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.
+
+/**
+ * While evaluating The production IterationStatement: "while ( Expression ) Statement", Expression is evaluated first
+ *
+ * @path ch12/12.6/12.6.2/S12.6.2_A2.js
+ * @description Evaluating Statement with error Expression
+ */
+
+try {
+ while ((function(){throw 1})()) __in__while = "reached";
+ $ERROR('#1: \'while ((function(){throw 1})()) __in__while = "reached"\' lead to throwing exception');
+} catch (e) {
+ if (e !== 1) {
+ $ERROR('#1: Exception === 1. Actual: Exception ==='+e);
+ }
+}
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (typeof __in__while !== "undefined") {
+ $ERROR('#1.1: typeof __in__while === "undefined". Actual: typeof __in__while ==='+typeof __in__while);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+
+
diff --git a/js/src/tests/test262/ch12/12.6/12.6.2/S12.6.2_A3.js b/js/src/tests/test262/ch12/12.6/12.6.2/S12.6.2_A3.js
new file mode 100644
index 000000000..ec8934e8e
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.6/12.6.2/S12.6.2_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.
+
+/**
+ * When "while" IterationStatement is evaluated, (normal, V, empty) is returned
+ *
+ * @path ch12/12.6/12.6.2/S12.6.2_A3.js
+ * @description Using eval
+ */
+
+var __in__do;
+
+__evaluated = eval("while (false) __in__do=1;");
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#
+if (__in__do !== undefined) {
+ $ERROR('#1: __in__do === undefined. Actual: __in__do ==='+ __in__do );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__evaluated !== undefined) {
+ $ERROR('#2: __evaluated === undefined. Actual: __evaluated ==='+ __evaluated );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch12/12.6/12.6.2/S12.6.2_A4_T1.js b/js/src/tests/test262/ch12/12.6/12.6.2/S12.6.2_A4_T1.js
new file mode 100644
index 000000000..5e20d53ba
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.6/12.6.2/S12.6.2_A4_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.
+
+/**
+ * "break" within a "while" Statement is allowed and performed as described in 12.8
+ *
+ * @path ch12/12.6/12.6.2/S12.6.2_A4_T1.js
+ * @description "break" within a "while" Statement
+ */
+
+while(1===1){
+ __in__do__before__break="reached";
+ break;
+ __in__do__after__break="where am i";
+}
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__in__do__before__break !== "reached") {
+ $ERROR('#1: __in__do__before__break === "reached". Actual: __in__do__before__break ==='+ __in__do__before__break );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (typeof __in__do__after__break !== "undefined") {
+ $ERROR('#2: typeof __in__do__after__break === "undefined". Actual: typeof __in__do__after__break ==='+ typeof __in__do__after__break );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch12/12.6/12.6.2/S12.6.2_A4_T2.js b/js/src/tests/test262/ch12/12.6/12.6.2/S12.6.2_A4_T2.js
new file mode 100644
index 000000000..616145c02
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.6/12.6.2/S12.6.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.
+
+/**
+ * "break" within a "while" Statement is allowed and performed as described in 12.8
+ *
+ * @path ch12/12.6/12.6.2/S12.6.2_A4_T2.js
+ * @description "break" and VariableDeclaration within a "while" Statement
+ */
+
+do_out : while(1===1) {
+ if (__in__do__before__break) break;
+ var __in__do__before__break="black";
+ do_in : while (1) {
+ var __in__do__IN__before__break="hole";
+ break do_in;
+ var __in__do__IN__after__break="sun";
+ } ;
+ var __in__do__after__break="won't you come";
+};
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (!(__in__do__before__break&&__in__do__IN__before__break&&!__in__do__IN__after__break&&__in__do__after__break)) {
+ $ERROR('#1: Break inside do-while is allowed as its described at standard');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch12/12.6/12.6.2/S12.6.2_A4_T3.js b/js/src/tests/test262/ch12/12.6/12.6.2/S12.6.2_A4_T3.js
new file mode 100644
index 000000000..a86e95705
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.6/12.6.2/S12.6.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.
+
+/**
+ * "break" within a "while" Statement is allowed and performed as described in 12.8
+ *
+ * @path ch12/12.6/12.6.2/S12.6.2_A4_T3.js
+ * @description "break" and VariableDeclaration within a "while" Statement
+ */
+
+do_out : while(1===1) {
+ if (__in__do__before__break) break;
+ var __in__do__before__break="once";
+ do_in : while (1) {
+ var __in__do__IN__before__break="in";
+ break do_out;
+ var __in__do__IN__after__break="the";
+ } ;
+ var __in__do__after__break="lifetime";
+} ;
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (!(__in__do__before__break&&__in__do__IN__before__break&&!__in__do__IN__after__break&&!__in__do__after__break)) {
+ $ERROR('#1: Break inside do-while is allowed as its described at standard');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch12/12.6/12.6.2/S12.6.2_A4_T4.js b/js/src/tests/test262/ch12/12.6/12.6.2/S12.6.2_A4_T4.js
new file mode 100644
index 000000000..4dc75f137
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.6/12.6.2/S12.6.2_A4_T4.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.
+
+/**
+ * "break" within a "while" Statement is allowed and performed as described in 12.8
+ *
+ * @path ch12/12.6/12.6.2/S12.6.2_A4_T4.js
+ * @description "break" and VariableDeclaration within a "while" Statement
+ */
+
+do_out : while(1===1) {
+ if(__in__do__before__break)break;
+ var __in__do__before__break="can't";
+ do_in : while (1) {
+ var __in__do__IN__before__break="get";
+ break;
+ var __in__do__IN__after__break="no";
+ } ;
+ var __in__do__after__break="Satisfaction";
+} ;
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (!(__in__do__before__break&&__in__do__IN__before__break&&!__in__do__IN__after__break&&__in__do__after__break)) {
+ $ERROR('#1: Break inside do-while is allowed as its described at standard');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+
diff --git a/js/src/tests/test262/ch12/12.6/12.6.2/S12.6.2_A4_T5.js b/js/src/tests/test262/ch12/12.6/12.6.2/S12.6.2_A4_T5.js
new file mode 100644
index 000000000..46e5b95c7
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.6/12.6.2/S12.6.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.
+
+/**
+ * "break" within a "while" Statement is allowed and performed as described in 12.8
+ *
+ * @path ch12/12.6/12.6.2/S12.6.2_A4_T5.js
+ * @description Using labeled "break" in order to continue a "while" loop
+ */
+
+//CHECK#1
+var i=0;
+woohoo:{
+ while(true){
+ i++;
+ if ( ! (i < 10) ) {
+ break woohoo;
+ $ERROR('#1.1: "break woohoo" must break loop');
+ }
+ }
+ if (i!==10) $ERROR('#1.2: i===10. Actual: i==='+ i );
+}
+
diff --git a/js/src/tests/test262/ch12/12.6/12.6.2/S12.6.2_A5.js b/js/src/tests/test262/ch12/12.6/12.6.2/S12.6.2_A5.js
new file mode 100644
index 000000000..899837466
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.6/12.6.2/S12.6.2_A5.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.
+
+/**
+ * While using "while" within an eval statement, source "break" is allowed and (normal, V, empty) is returned
+ *
+ * @path ch12/12.6/12.6.2/S12.6.2_A5.js
+ * @description Using eval
+ */
+
+__evaluated = eval("while(1) {__in__do__before__break=1; break; __in__do__after__break=2;}");
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__in__do__before__break !== 1) {
+ $ERROR('#1: __in__do__before__break === 1. Actual: __in__do__before__break ==='+ __in__do__before__break );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (typeof __in__do__after__break !== "undefined") {
+ $ERROR('#2: typeof __in__do__after__break === "undefined". Actual: typeof __in__do__after__break ==='+ typeof __in__do__after__break );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if (__evaluated !== 1) {
+ $ERROR('#3: __evaluated === 1. Actual: __evaluated ==='+ __evaluated );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch12/12.6/12.6.2/S12.6.2_A6_T1.js b/js/src/tests/test262/ch12/12.6/12.6.2/S12.6.2_A6_T1.js
new file mode 100644
index 000000000..f9a4e9744
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.6/12.6.2/S12.6.2_A6_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.
+
+/**
+ * Expression in "while" IterationStatement is bracketed with braces
+ *
+ * @path ch12/12.6/12.6.2/S12.6.2_A6_T1.js
+ * @description Checking if execution of "while 1 break" fails
+ * @negative
+ */
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+while 1 break;
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch12/12.6/12.6.2/S12.6.2_A6_T2.js b/js/src/tests/test262/ch12/12.6/12.6.2/S12.6.2_A6_T2.js
new file mode 100644
index 000000000..b7f61b8b4
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.6/12.6.2/S12.6.2_A6_T2.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.
+
+/**
+ * Expression in "while" IterationStatement is bracketed with braces
+ *
+ * @path ch12/12.6/12.6.2/S12.6.2_A6_T2.js
+ * @description Checking if execution of "while 0 break" fails
+ * @negative
+ */
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+while 0 break;
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch12/12.6/12.6.2/S12.6.2_A6_T3.js b/js/src/tests/test262/ch12/12.6/12.6.2/S12.6.2_A6_T3.js
new file mode 100644
index 000000000..4b0eaea03
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.6/12.6.2/S12.6.2_A6_T3.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.
+
+/**
+ * Expression in "while" IterationStatement is bracketed with braces
+ *
+ * @path ch12/12.6/12.6.2/S12.6.2_A6_T3.js
+ * @description Checking if execution of "while true break" fails
+ * @negative
+ */
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+while true break;
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch12/12.6/12.6.2/S12.6.2_A6_T4.js b/js/src/tests/test262/ch12/12.6/12.6.2/S12.6.2_A6_T4.js
new file mode 100644
index 000000000..8d17ce8f1
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.6/12.6.2/S12.6.2_A6_T4.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.
+
+/**
+ * Expression in "while" IterationStatement is bracketed with braces
+ *
+ * @path ch12/12.6/12.6.2/S12.6.2_A6_T4.js
+ * @description Checking if execution of "while false break" fails
+ * @negative
+ */
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+while false break;
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch12/12.6/12.6.2/S12.6.2_A6_T5.js b/js/src/tests/test262/ch12/12.6/12.6.2/S12.6.2_A6_T5.js
new file mode 100644
index 000000000..e1b677741
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.6/12.6.2/S12.6.2_A6_T5.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.
+
+/**
+ * Expression in "while" IterationStatement is bracketed with braces
+ *
+ * @path ch12/12.6/12.6.2/S12.6.2_A6_T5.js
+ * @description Checking if execution of "while '' break" fails
+ * @negative
+ */
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+while '' break;
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch12/12.6/12.6.2/S12.6.2_A6_T6.js b/js/src/tests/test262/ch12/12.6/12.6.2/S12.6.2_A6_T6.js
new file mode 100644
index 000000000..78ce3abdb
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.6/12.6.2/S12.6.2_A6_T6.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.
+
+/**
+ * Expression in "while" IterationStatement is bracketed with braces
+ *
+ * @path ch12/12.6/12.6.2/S12.6.2_A6_T6.js
+ * @description Checking if execution of "while 'hood' break" fails
+ * @negative
+ */
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+while 'hood' break;
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch12/12.6/12.6.2/S12.6.2_A7.js b/js/src/tests/test262/ch12/12.6/12.6.2/S12.6.2_A7.js
new file mode 100644
index 000000000..5743cd6d4
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.6/12.6.2/S12.6.2_A7.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.
+
+/**
+ * The "while" Statement is evaluted according to 12.6.2 and returns (normal, V, empty)
+ *
+ * @path ch12/12.6/12.6.2/S12.6.2_A7.js
+ * @description using eval
+ */
+
+var __condition=0
+
+__evaluated = eval("while (__condition<5) eval(\"__condition++\");");
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__condition !== 5) {
+ $ERROR('#1: The "while" statement is evaluated as described in the Standard');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__evaluated !== 4) {
+ $ERROR('#2: The "while" statement returns (normal, V, empty)');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+
diff --git a/js/src/tests/test262/ch12/12.6/12.6.2/S12.6.2_A8.js b/js/src/tests/test262/ch12/12.6/12.6.2/S12.6.2_A8.js
new file mode 100644
index 000000000..a5af5748d
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.6/12.6.2/S12.6.2_A8.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.
+
+/**
+ * "continue" statement within a "while" Statement is allowed
+ *
+ * @path ch12/12.6/12.6.2/S12.6.2_A8.js
+ * @description using eval
+ */
+
+var __condition = 0, __odds=0;
+
+__evaluated = eval("while(__condition < 10) { __condition++; if (((''+__condition/2).split('.')).length>1) continue; __odds++;}");
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__odds !== 5) {
+ $ERROR('#1: __odds === 5. Actual: __odds ==='+ __odds );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__evaluated !== 4) {
+ $ERROR('#2: __evaluated === 4. Actual: __evaluated ==='+ __evaluated );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+
diff --git a/js/src/tests/test262/ch12/12.6/12.6.2/S12.6.2_A9.js b/js/src/tests/test262/ch12/12.6/12.6.2/S12.6.2_A9.js
new file mode 100644
index 000000000..f8cbed0a1
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.6/12.6.2/S12.6.2_A9.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.
+
+/**
+ * "while" Statement is evaluated without syntax checks
+ *
+ * @path ch12/12.6/12.6.2/S12.6.2_A9.js
+ * @description Throwing system exception inside "while" loop
+ */
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+try {
+ while(x!=1) {
+ var x = 1;
+ abaracadabara;
+ };
+ $ERROR('#1: "abbracadabra" lead to throwing exception');
+
+} catch (e) {
+ if (e instanceof Test262Error) throw e;
+}
+
+if (x !== 1) {
+ $ERROR('#1.1: while statement evaluates as is, without syntax checks');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch12/12.6/12.6.2/browser.js b/js/src/tests/test262/ch12/12.6/12.6.2/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.6/12.6.2/browser.js
diff --git a/js/src/tests/test262/ch12/12.6/12.6.2/shell.js b/js/src/tests/test262/ch12/12.6/12.6.2/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.6/12.6.2/shell.js
diff --git a/js/src/tests/test262/ch12/12.6/12.6.3/12.6.3_2-3-a-ii-1.js b/js/src/tests/test262/ch12/12.6/12.6.3/12.6.3_2-3-a-ii-1.js
new file mode 100644
index 000000000..a0aa03156
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.6/12.6.3/12.6.3_2-3-a-ii-1.js
@@ -0,0 +1,26 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * Refer 12.6.3;
+ * The production
+ * IterationStatement : for ( var VariableDeclarationListNoIn ; Expressionopt ; Expressionopt ) Statement
+ * is evaluated as follows:
+ *
+ * @path ch12/12.6/12.6.3/12.6.3_2-3-a-ii-1.js
+ * @description The for Statement - (normal, V, empty) will be returned when first Expression is an Object with value false
+ */
+
+
+function testcase() {
+ var accessed = false;
+ var obj = { value: false };
+ for (var i = 0; obj; ) {
+ accessed = true;
+ break;
+ }
+ return accessed;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch12/12.6/12.6.3/12.6.3_2-3-a-ii-10.js b/js/src/tests/test262/ch12/12.6/12.6.3/12.6.3_2-3-a-ii-10.js
new file mode 100644
index 000000000..cc1cb63d6
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.6/12.6.3/12.6.3_2-3-a-ii-10.js
@@ -0,0 +1,26 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * Refer 12.6.3;
+ * The production
+ * IterationStatement : for ( var VariableDeclarationListNoIn ; Expressionopt ; Expressionopt ) Statement
+ * is evaluated as follows:
+ *
+ * @path ch12/12.6/12.6.3/12.6.3_2-3-a-ii-10.js
+ * @description The for Statement - (normal, V, empty) will be returned when first Expression is a String object (value is '1')
+ */
+
+
+function testcase() {
+ var accessed = false;
+ var strObj = new String("1");
+ for (var i = 0; strObj;) {
+ accessed = true;
+ break;
+ }
+ return accessed;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch12/12.6/12.6.3/12.6.3_2-3-a-ii-11.js b/js/src/tests/test262/ch12/12.6/12.6.3/12.6.3_2-3-a-ii-11.js
new file mode 100644
index 000000000..2bccf56df
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.6/12.6.3/12.6.3_2-3-a-ii-11.js
@@ -0,0 +1,24 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * Refer 12.6.3;
+ * The production
+ * IterationStatement : for ( var VariableDeclarationListNoIn ; Expressionopt ; Expressionopt ) Statement
+ * is evaluated as follows:
+ *
+ * @path ch12/12.6/12.6.3/12.6.3_2-3-a-ii-11.js
+ * @description The for Statement - (normal, V, empty) will be returned when first Expression is undefined
+ */
+
+
+function testcase() {
+ var count = 0;
+ for (var i = 0; undefined;) {
+ count++;
+ }
+ return count === 0;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch12/12.6/12.6.3/12.6.3_2-3-a-ii-12.js b/js/src/tests/test262/ch12/12.6/12.6.3/12.6.3_2-3-a-ii-12.js
new file mode 100644
index 000000000..6698b966b
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.6/12.6.3/12.6.3_2-3-a-ii-12.js
@@ -0,0 +1,24 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * Refer 12.6.3;
+ * The production
+ * IterationStatement : for ( var VariableDeclarationListNoIn ; Expressionopt ; Expressionopt ) Statement
+ * is evaluated as follows:
+ *
+ * @path ch12/12.6/12.6.3/12.6.3_2-3-a-ii-12.js
+ * @description The for Statement - (normal, V, empty) will be returned when first Expression is null
+ */
+
+
+function testcase() {
+ var count = 0;
+ for (var i = 0; null;) {
+ count++;
+ }
+ return count === 0;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch12/12.6/12.6.3/12.6.3_2-3-a-ii-13.js b/js/src/tests/test262/ch12/12.6/12.6.3/12.6.3_2-3-a-ii-13.js
new file mode 100644
index 000000000..4e7d39333
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.6/12.6.3/12.6.3_2-3-a-ii-13.js
@@ -0,0 +1,24 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * Refer 12.6.3;
+ * The production
+ * IterationStatement : for ( var VariableDeclarationListNoIn ; Expressionopt ; Expressionopt ) Statement
+ * is evaluated as follows:
+ *
+ * @path ch12/12.6/12.6.3/12.6.3_2-3-a-ii-13.js
+ * @description The for Statement - (normal, V, empty) will be returned when first Expression is a boolean (value is false)
+ */
+
+
+function testcase() {
+ var count = 0;
+ for (var i = 0; false;) {
+ count++;
+ }
+ return count === 0;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch12/12.6/12.6.3/12.6.3_2-3-a-ii-14.js b/js/src/tests/test262/ch12/12.6/12.6.3/12.6.3_2-3-a-ii-14.js
new file mode 100644
index 000000000..865f68d77
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.6/12.6.3/12.6.3_2-3-a-ii-14.js
@@ -0,0 +1,24 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * Refer 12.6.3;
+ * The production
+ * IterationStatement : for ( var VariableDeclarationListNoIn ; Expressionopt ; Expressionopt ) Statement
+ * is evaluated as follows:
+ *
+ * @path ch12/12.6/12.6.3/12.6.3_2-3-a-ii-14.js
+ * @description The for Statement - (normal, V, empty) will be returned when first Expression is a number (value is NaN)
+ */
+
+
+function testcase() {
+ var count = 0;
+ for (var i = 0; NaN;) {
+ count++;
+ }
+ return count === 0;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch12/12.6/12.6.3/12.6.3_2-3-a-ii-15.js b/js/src/tests/test262/ch12/12.6/12.6.3/12.6.3_2-3-a-ii-15.js
new file mode 100644
index 000000000..8f85811f3
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.6/12.6.3/12.6.3_2-3-a-ii-15.js
@@ -0,0 +1,24 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * Refer 12.6.3;
+ * The production
+ * IterationStatement : for ( var VariableDeclarationListNoIn ; Expressionopt ; Expressionopt ) Statement
+ * is evaluated as follows:
+ *
+ * @path ch12/12.6/12.6.3/12.6.3_2-3-a-ii-15.js
+ * @description The for Statement - (normal, V, empty) will be returned when first Expression is a number (value is +0)
+ */
+
+
+function testcase() {
+ var count = 0;
+ for (var i = 0; +0;) {
+ count++;
+ }
+ return count === 0;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch12/12.6/12.6.3/12.6.3_2-3-a-ii-16.js b/js/src/tests/test262/ch12/12.6/12.6.3/12.6.3_2-3-a-ii-16.js
new file mode 100644
index 000000000..20d03326e
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.6/12.6.3/12.6.3_2-3-a-ii-16.js
@@ -0,0 +1,24 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * Refer 12.6.3;
+ * The production
+ * IterationStatement : for ( var VariableDeclarationListNoIn ; Expressionopt ; Expressionopt ) Statement
+ * is evaluated as follows:
+ *
+ * @path ch12/12.6/12.6.3/12.6.3_2-3-a-ii-16.js
+ * @description The for Statement - (normal, V, empty) will be returned when first Expression is a number (value is -0)
+ */
+
+
+function testcase() {
+ var count = 0;
+ for (var i = 0; -0;) {
+ count++;
+ }
+ return count === 0;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch12/12.6/12.6.3/12.6.3_2-3-a-ii-17.js b/js/src/tests/test262/ch12/12.6/12.6.3/12.6.3_2-3-a-ii-17.js
new file mode 100644
index 000000000..faca41566
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.6/12.6.3/12.6.3_2-3-a-ii-17.js
@@ -0,0 +1,25 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * Refer 12.6.3;
+ * The production
+ * IterationStatement : for ( var VariableDeclarationListNoIn ; Expressionopt ; Expressionopt ) Statement
+ * is evaluated as follows:
+ *
+ * @path ch12/12.6/12.6.3/12.6.3_2-3-a-ii-17.js
+ * @description The for Statement - (normal, V, empty) will be returned when first Expression is a number (value is a positive)
+ */
+
+
+function testcase() {
+ var accessed = false;
+ for (var i = 0; 2;) {
+ accessed = true;
+ break;
+ }
+ return accessed;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch12/12.6/12.6.3/12.6.3_2-3-a-ii-18.js b/js/src/tests/test262/ch12/12.6/12.6.3/12.6.3_2-3-a-ii-18.js
new file mode 100644
index 000000000..8fc6251de
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.6/12.6.3/12.6.3_2-3-a-ii-18.js
@@ -0,0 +1,24 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * Refer 12.6.3;
+ * The production
+ * IterationStatement : for ( var VariableDeclarationListNoIn ; Expressionopt ; Expressionopt ) Statement
+ * is evaluated as follows:
+ *
+ * @path ch12/12.6/12.6.3/12.6.3_2-3-a-ii-18.js
+ * @description The for Statement - (normal, V, empty) will be returned when first Expression is a string (value is empty string)
+ */
+
+
+function testcase() {
+ var count = 0;
+ for (var i = 0; "";) {
+ count++;
+ }
+ return count === 0;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch12/12.6/12.6.3/12.6.3_2-3-a-ii-19.js b/js/src/tests/test262/ch12/12.6/12.6.3/12.6.3_2-3-a-ii-19.js
new file mode 100644
index 000000000..19dc79e05
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.6/12.6.3/12.6.3_2-3-a-ii-19.js
@@ -0,0 +1,25 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * Refer 12.6.3;
+ * The production
+ * IterationStatement : for ( var VariableDeclarationListNoIn ; Expressionopt ; Expressionopt ) Statement
+ * is evaluated as follows:
+ *
+ * @path ch12/12.6/12.6.3/12.6.3_2-3-a-ii-19.js
+ * @description The for Statement - (normal, V, empty) will be returned when first Expression is a string (value is 'undefined')
+ */
+
+
+function testcase() {
+ var accessed = false;
+ for (var i = 0; "undefined";) {
+ accessed = true;
+ break;
+ }
+ return accessed;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch12/12.6/12.6.3/12.6.3_2-3-a-ii-2.js b/js/src/tests/test262/ch12/12.6/12.6.3/12.6.3_2-3-a-ii-2.js
new file mode 100644
index 000000000..eaf600c6e
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.6/12.6.3/12.6.3_2-3-a-ii-2.js
@@ -0,0 +1,26 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * Refer 12.6.3;
+ * The production
+ * IterationStatement : for ( var VariableDeclarationListNoIn ; Expressionopt ; Expressionopt ) Statement
+ * is evaluated as follows:
+ *
+ * @path ch12/12.6/12.6.3/12.6.3_2-3-a-ii-2.js
+ * @description The for Statement - (normal, V, empty) will be returned when first Expression is a Boolean object
+ */
+
+
+function testcase() {
+ var accessed = false;
+ var boolObj = new Boolean(false);
+ for (var i = 0; boolObj;) {
+ accessed = true;
+ break;
+ }
+ return accessed;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch12/12.6/12.6.3/12.6.3_2-3-a-ii-20.js b/js/src/tests/test262/ch12/12.6/12.6.3/12.6.3_2-3-a-ii-20.js
new file mode 100644
index 000000000..6c8e61c59
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.6/12.6.3/12.6.3_2-3-a-ii-20.js
@@ -0,0 +1,25 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * Refer 12.6.3;
+ * The production
+ * IterationStatement : for ( var VariableDeclarationListNoIn ; Expressionopt ; Expressionopt ) Statement
+ * is evaluated as follows:
+ *
+ * @path ch12/12.6/12.6.3/12.6.3_2-3-a-ii-20.js
+ * @description The for Statement - (normal, V, empty) will be returned when first Expression is a string (value is 'null')
+ */
+
+
+function testcase() {
+ var accessed = false;
+ for (var i = 0; "null";) {
+ accessed = true;
+ break;
+ }
+ return accessed;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch12/12.6/12.6.3/12.6.3_2-3-a-ii-21.js b/js/src/tests/test262/ch12/12.6/12.6.3/12.6.3_2-3-a-ii-21.js
new file mode 100644
index 000000000..d83bd0b18
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.6/12.6.3/12.6.3_2-3-a-ii-21.js
@@ -0,0 +1,25 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * Refer 12.6.3;
+ * The production
+ * IterationStatement : for ( var VariableDeclarationListNoIn ; Expressionopt ; Expressionopt ) Statement
+ * is evaluated as follows:
+ *
+ * @path ch12/12.6/12.6.3/12.6.3_2-3-a-ii-21.js
+ * @description The for Statement - (normal, V, empty) will be returned when first Expression is a string (value is '1')
+ */
+
+
+function testcase() {
+ var accessed = false;
+ for (var i = 0; "1";) {
+ accessed = true;
+ break;
+ }
+ return accessed;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch12/12.6/12.6.3/12.6.3_2-3-a-ii-3.js b/js/src/tests/test262/ch12/12.6/12.6.3/12.6.3_2-3-a-ii-3.js
new file mode 100644
index 000000000..76f27f8bd
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.6/12.6.3/12.6.3_2-3-a-ii-3.js
@@ -0,0 +1,26 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * Refer 12.6.3;
+ * The production
+ * IterationStatement : for ( var VariableDeclarationListNoIn ; Expressionopt ; Expressionopt ) Statement
+ * is evaluated as follows:
+ *
+ * @path ch12/12.6/12.6.3/12.6.3_2-3-a-ii-3.js
+ * @description The for Statement - (normal, V, empty) will be returned when first Expression is a Number object (value is NaN)
+ */
+
+
+function testcase() {
+ var accessed = false;
+ var numObj = new Number(NaN);
+ for (var i = 0; numObj;) {
+ accessed = true;
+ break;
+ }
+ return accessed;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch12/12.6/12.6.3/12.6.3_2-3-a-ii-4.js b/js/src/tests/test262/ch12/12.6/12.6.3/12.6.3_2-3-a-ii-4.js
new file mode 100644
index 000000000..81599d37b
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.6/12.6.3/12.6.3_2-3-a-ii-4.js
@@ -0,0 +1,26 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * Refer 12.6.3;
+ * The production
+ * IterationStatement : for ( var VariableDeclarationListNoIn ; Expressionopt ; Expressionopt ) Statement
+ * is evaluated as follows:
+ *
+ * @path ch12/12.6/12.6.3/12.6.3_2-3-a-ii-4.js
+ * @description The for Statement - (normal, V, empty) will be returned when first Expression is a Number object (value is +0)
+ */
+
+
+function testcase() {
+ var accessed = false;
+ var numObj = new Number(+0);
+ for (var i = 0; numObj;) {
+ accessed = true;
+ break;
+ }
+ return accessed;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch12/12.6/12.6.3/12.6.3_2-3-a-ii-5.js b/js/src/tests/test262/ch12/12.6/12.6.3/12.6.3_2-3-a-ii-5.js
new file mode 100644
index 000000000..5a3199947
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.6/12.6.3/12.6.3_2-3-a-ii-5.js
@@ -0,0 +1,26 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * Refer 12.6.3;
+ * The production
+ * IterationStatement : for ( var VariableDeclarationListNoIn ; Expressionopt ; Expressionopt ) Statement
+ * is evaluated as follows:
+ *
+ * @path ch12/12.6/12.6.3/12.6.3_2-3-a-ii-5.js
+ * @description The for Statement - (normal, V, empty) will be returned when first Expression is a Number object (value is -0)
+ */
+
+
+function testcase() {
+ var accessed = false;
+ var numObj = new Number(-0);
+ for (var i = 0; numObj;) {
+ accessed = true;
+ break;
+ }
+ return accessed;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch12/12.6/12.6.3/12.6.3_2-3-a-ii-6.js b/js/src/tests/test262/ch12/12.6/12.6.3/12.6.3_2-3-a-ii-6.js
new file mode 100644
index 000000000..6f8ed9cd3
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.6/12.6.3/12.6.3_2-3-a-ii-6.js
@@ -0,0 +1,26 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * Refer 12.6.3;
+ * The production
+ * IterationStatement : for ( var VariableDeclarationListNoIn ; Expressionopt ; Expressionopt ) Statement
+ * is evaluated as follows:
+ *
+ * @path ch12/12.6/12.6.3/12.6.3_2-3-a-ii-6.js
+ * @description The for Statement - (normal, V, empty) will be returned when first Expression is a Number object (value is a positive)
+ */
+
+
+function testcase() {
+ var accessed = false;
+ var numObj = new Number(12);
+ for (var i = 0; numObj;) {
+ accessed = true;
+ break;
+ }
+ return accessed;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch12/12.6/12.6.3/12.6.3_2-3-a-ii-7.js b/js/src/tests/test262/ch12/12.6/12.6.3/12.6.3_2-3-a-ii-7.js
new file mode 100644
index 000000000..920911c94
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.6/12.6.3/12.6.3_2-3-a-ii-7.js
@@ -0,0 +1,26 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * Refer 12.6.3;
+ * The production
+ * IterationStatement : for ( var VariableDeclarationListNoIn ; Expressionopt ; Expressionopt ) Statement
+ * is evaluated as follows:
+ *
+ * @path ch12/12.6/12.6.3/12.6.3_2-3-a-ii-7.js
+ * @description The for Statement - (normal, V, empty) will be returned when first Expression is a String object (value is empty string)
+ */
+
+
+function testcase() {
+ var accessed = false;
+ var strObj = new String("");
+ for (var i = 0; strObj;) {
+ accessed = true;
+ break;
+ }
+ return accessed;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch12/12.6/12.6.3/12.6.3_2-3-a-ii-8.js b/js/src/tests/test262/ch12/12.6/12.6.3/12.6.3_2-3-a-ii-8.js
new file mode 100644
index 000000000..f087aa207
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.6/12.6.3/12.6.3_2-3-a-ii-8.js
@@ -0,0 +1,26 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * Refer 12.6.3;
+ * The production
+ * IterationStatement : for ( var VariableDeclarationListNoIn ; Expressionopt ; Expressionopt ) Statement
+ * is evaluated as follows:
+ *
+ * @path ch12/12.6/12.6.3/12.6.3_2-3-a-ii-8.js
+ * @description The for Statement - (normal, V, empty) will be returned when first Expression is a String object (value is 'undefined')
+ */
+
+
+function testcase() {
+ var accessed = false;
+ var strObj = new String("undefined");
+ for (var i = 0; strObj;) {
+ accessed = true;
+ break;
+ }
+ return accessed;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch12/12.6/12.6.3/12.6.3_2-3-a-ii-9.js b/js/src/tests/test262/ch12/12.6/12.6.3/12.6.3_2-3-a-ii-9.js
new file mode 100644
index 000000000..45ed58923
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.6/12.6.3/12.6.3_2-3-a-ii-9.js
@@ -0,0 +1,26 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * Refer 12.6.3;
+ * The production
+ * IterationStatement : for ( var VariableDeclarationListNoIn ; Expressionopt ; Expressionopt ) Statement
+ * is evaluated as follows:
+ *
+ * @path ch12/12.6/12.6.3/12.6.3_2-3-a-ii-9.js
+ * @description The for Statement - (normal, V, empty) will be returned when first Expression is a String object (value is 'null')
+ */
+
+
+function testcase() {
+ var accessed = false;
+ var strObj = new String("null");
+ for (var i = 0; strObj;) {
+ accessed = true;
+ break;
+ }
+ return accessed;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch12/12.6/12.6.3/S12.6.3_A1.js b/js/src/tests/test262/ch12/12.6/12.6.3/S12.6.3_A1.js
new file mode 100644
index 000000000..dd200559c
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.6/12.6.3/S12.6.3_A1.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.
+
+/**
+ * The "for {;;}" for Statement with empty expressions is allowed and leads to performing an infinite loop
+ *
+ * @path ch12/12.6/12.6.3/S12.6.3_A1.js
+ * @description Breaking an infinite loop by throwing exception
+ */
+
+var __in__for = 0;
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+try {
+ for (;;){
+ //__in__for++;
+ if(++__in__for>100)throw 1;
+}
+} catch (e) {
+ if (e !== 1) {
+ $ERROR('#1: for {;;} is admitted and leads to infinite loop');
+ }
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__in__for !== 101) {
+ $ERROR('#2: __in__for === 101. Actual: __in__for ==='+ __in__for );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+
diff --git a/js/src/tests/test262/ch12/12.6/12.6.3/S12.6.3_A10.1.js b/js/src/tests/test262/ch12/12.6/12.6.3/S12.6.3_A10.1.js
new file mode 100644
index 000000000..13bfc59ff
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.6/12.6.3/S12.6.3_A10.1.js
@@ -0,0 +1,111 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * Nested "var-loops" nine blocks depth is evaluated properly
+ *
+ * @path ch12/12.6/12.6.3/S12.6.3_A10.1.js
+ * @description Checking if executing nested "var-loops" nine blocks depth is evaluated properly
+ */
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+try {
+ __in__deepest__loop=__in__deepest__loop;
+} catch (e) {
+ $ERROR('#1: "__in__deepest__loop=__in__deepest__loop" does not lead to throwing exception');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+try {
+ index0=index0;
+} catch (e) {
+ $ERROR('#2: "index0=index0" does not lead to throwing exception');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+try {
+ index1=index1;
+} catch (e) {
+ $ERROR('#3: "index1=index1" does not lead to throwing exception');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#4
+try {
+ index4=index4;
+} catch (e) {
+ $ERROR('#4: "index4=index4" does not lead to throwing exception');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#5
+try {
+ index5=index5;
+} catch (e) {
+ $ERROR('#4: "index5=index5" does not lead to throwing exception');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#6
+try {
+ index7=index7;
+} catch (e) {
+ $ERROR('#6: "index7=index7" does not lead to throwing exception');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#7
+try {
+ index8=index8;
+} catch (e) {
+ $ERROR('#7: "index8=index8" does not lead to throwing exception');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+__str="";
+
+for( var index0=0; index0<=1; index0++) {
+ for(var index1=0; index1<=index0; index1++) {
+ for( index2=0; index2<=index1; index2++) {
+ for( index3=0; index3<=index2; index3++) {
+ for(var index4=0; index4<=index3; index4++) {
+ for(var index5=0; index5<=index4; index5++) {
+ for( index6=0; index6<=index5; index6++) {
+ for(var index7=0; index7<=index6; index7++) {
+ for(var index8=0; index8<=index1; index8++) {
+ var __in__deepest__loop;
+ __str+=""+index0+index1+index2+index3+index4+index5+index6+index7+index8+'\n';
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+}
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__str!== "000000000\n100000000\n110000000\n110000001\n111000000\n111000001\n111100000\n111100001\n111110000\n111110001\n111111000\n111111001\n111111100\n111111101\n111111110\n111111111\n") {
+ $ERROR('#2: __str === "000000000\\n100000000\\n110000000\\n110000001\\n111000000\\n111000001\\n111100000\\n111100001\\n111110000\\n111110001\\n111111000\\n111111001\\n111111100\\n111111101\\n111111110\\n111111111\\n". Actual: __str ==='+ __str );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch12/12.6/12.6.3/S12.6.3_A10.js b/js/src/tests/test262/ch12/12.6/12.6.3/S12.6.3_A10.js
new file mode 100644
index 000000000..fb17b0b2c
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.6/12.6.3/S12.6.3_A10.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.
+
+/**
+ * Nested "var-loops" nine blocks depth is evaluated properly
+ *
+ * @path ch12/12.6/12.6.3/S12.6.3_A10.js
+ * @description Checking if executing nested "var-loops" nine blocks depth is evaluated properly
+ */
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#
+try {
+ __in__deepest__loop=__in__deepest__loop;
+} catch (e) {
+ $ERROR('#1: "__in__deepest__loop=__in__deepest__loop" does not lead to throwing exception');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+__str="";
+
+for( index0=0; index0<=1; index0++) {
+ for( index1=0; index1<=index0; index1++) {
+ for( index2=0; index2<=index1; index2++) {
+ for( index3=0; index3<=index2; index3++) {
+ for( index4=0; index4<=index3; index4++) {
+ for( index5=0; index5<=index4; index5++) {
+ for( index6=0; index6<=index5; index6++) {
+ for( index7=0; index7<=index6; index7++) {
+ for( index8=0; index8<=index1; index8++) {
+ var __in__deepest__loop;
+ __str+=""+index0+index1+index2+index3+index4+index5+index6+index7+index8+'\n';
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+}
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__str!== "000000000\n100000000\n110000000\n110000001\n111000000\n111000001\n111100000\n111100001\n111110000\n111110001\n111111000\n111111001\n111111100\n111111101\n111111110\n111111111\n") {
+ $ERROR('#2: __str === "000000000\\n100000000\\n110000000\\n110000001\\n111000000\\n111000001\\n111100000\\n111100001\\n111110000\\n111110001\\n111111000\\n111111001\\n111111100\\n111111101\\n111111110\\n111111111\\n". Actual: __str ==='+ __str );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch12/12.6/12.6.3/S12.6.3_A11.1_T1.js b/js/src/tests/test262/ch12/12.6/12.6.3/S12.6.3_A11.1_T1.js
new file mode 100644
index 000000000..d050b3dbc
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.6/12.6.3/S12.6.3_A11.1_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.
+
+/**
+ * If (Evaluate Statement).type is "continue" and (Evaluate Statement).target is in the current label set, iteration of labeled "var-loop" breaks
+ *
+ * @path ch12/12.6/12.6.3/S12.6.3_A11.1_T1.js
+ * @description Using "continue" in order to continue a loop
+ */
+
+__str=""
+
+for(var index=0; index<10; index+=1) {
+ if (index<5)continue;
+ __str+=index;
+}
+
+if (__str!=="56789") {
+ $ERROR('#1: __str === "56789". Actual: __str ==='+ __str );
+}
+
diff --git a/js/src/tests/test262/ch12/12.6/12.6.3/S12.6.3_A11.1_T2.js b/js/src/tests/test262/ch12/12.6/12.6.3/S12.6.3_A11.1_T2.js
new file mode 100644
index 000000000..cc0233d41
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.6/12.6.3/S12.6.3_A11.1_T2.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.
+
+/**
+ * If (Evaluate Statement).type is "continue" and (Evaluate Statement).target is in the current label set, iteration of labeled "var-loop" breaks
+ *
+ * @path ch12/12.6/12.6.3/S12.6.3_A11.1_T2.js
+ * @description Embedded loops
+ */
+
+__str="";
+
+outer : for(var index=0; index<4; index+=1) {
+ nested : for(var index_n=0; index_n<=index; index_n++) {
+ if (index*index_n == 6)continue nested;
+ __str+=""+index+index_n;
+ }
+}
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__str !== "001011202122303133") {
+ $ERROR('#1: __str === "001011202122303133". Actual: __str ==='+ __str );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+__str="";
+
+outer : for(var index=0; index<4; index+=1) {
+ nested : for(var index_n=0; index_n<=index; index_n++) {
+ if (index*index_n == 6)continue outer;
+ __str+=""+index+index_n;
+ }
+}
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__str !== "0010112021223031") {
+ $ERROR('#2: __str === "0010112021223031". Actual: __str ==='+ __str );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+__str="";
+
+outer : for(var index=0; index<4; index+=1) {
+ nested : for(var index_n=0; index_n<=index; index_n++) {
+ if (index*index_n == 6)continue ;
+ __str+=""+index+index_n;
+ }
+}
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if (__str !== "001011202122303133") {
+ $ERROR('#3: __str === "001011202122303133". Actual: __str ==='+ __str );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+
+
+
diff --git a/js/src/tests/test262/ch12/12.6/12.6.3/S12.6.3_A11.1_T3.js b/js/src/tests/test262/ch12/12.6/12.6.3/S12.6.3_A11.1_T3.js
new file mode 100644
index 000000000..d02abf292
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.6/12.6.3/S12.6.3_A11.1_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.
+
+/**
+ * If (Evaluate Statement).type is "continue" and (Evaluate Statement).target is in the current label set, iteration of labeled "var-loop" breaks
+ *
+ * @path ch12/12.6/12.6.3/S12.6.3_A11.1_T3.js
+ * @description Trying to continue non-existent label
+ * @negative
+ */
+
+__str="";
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+outer:for(var index=0;index<4;index+=1){
+ nested:for(var index_n=0;index_n<=index;index_n++){
+ if(index*index_n == 6)continue nonexist;
+ __str+=""+index+index_n;
+ }
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+
+
+
diff --git a/js/src/tests/test262/ch12/12.6/12.6.3/S12.6.3_A11_T1.js b/js/src/tests/test262/ch12/12.6/12.6.3/S12.6.3_A11_T1.js
new file mode 100644
index 000000000..192f1ebd5
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.6/12.6.3/S12.6.3_A11_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.
+
+/**
+ * If (Evaluate Statement).type is "continue" and (Evaluate Statement).target is in the current label set, iteration of labeled loop breaks
+ *
+ * @path ch12/12.6/12.6.3/S12.6.3_A11_T1.js
+ * @description Simple test of continue loop with using "continue"
+ */
+
+__str=""
+
+for(index=0; index<10; index+=1) {
+ if (index<5)continue;
+ __str+=index;
+}
+
+if (__str!=="56789") {
+ $ERROR('#1: __str === "56789". Actual: __str ==='+ __str );
+}
+
diff --git a/js/src/tests/test262/ch12/12.6/12.6.3/S12.6.3_A11_T2.js b/js/src/tests/test262/ch12/12.6/12.6.3/S12.6.3_A11_T2.js
new file mode 100644
index 000000000..cdc606b5c
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.6/12.6.3/S12.6.3_A11_T2.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.
+
+/**
+ * If (Evaluate Statement).type is "continue" and (Evaluate Statement).target is in the current label set, iteration of labeled loop breaks
+ *
+ * @path ch12/12.6/12.6.3/S12.6.3_A11_T2.js
+ * @description Embedded loops
+ */
+
+__str="";
+
+outer : for(index=0; index<4; index+=1) {
+ nested : for(index_n=0; index_n<=index; index_n++) {
+ if (index*index_n == 6)continue nested;
+ __str+=""+index+index_n;
+ }
+}
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__str !== "001011202122303133") {
+ $ERROR('#1: __str === "001011202122303133". Actual: __str ==='+ __str );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+__str="";
+
+outer : for(index=0; index<4; index+=1) {
+ nested : for(index_n=0; index_n<=index; index_n++) {
+ if (index*index_n == 6)continue outer;
+ __str+=""+index+index_n;
+ }
+}
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__str !== "0010112021223031") {
+ $ERROR('#2: __str === "0010112021223031". Actual: __str ==='+ __str );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+__str="";
+
+outer : for(index=0; index<4; index+=1) {
+ nested : for(index_n=0; index_n<=index; index_n++) {
+ if (index*index_n == 6)continue ;
+ __str+=""+index+index_n;
+ }
+}
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if (__str !== "001011202122303133") {
+ $ERROR('#3: __str === "001011202122303133". Actual: __str ==='+ __str );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+
+
+
diff --git a/js/src/tests/test262/ch12/12.6/12.6.3/S12.6.3_A11_T3.js b/js/src/tests/test262/ch12/12.6/12.6.3/S12.6.3_A11_T3.js
new file mode 100644
index 000000000..2807bc86f
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.6/12.6.3/S12.6.3_A11_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.
+
+/**
+ * If (Evaluate Statement).type is "continue" and (Evaluate Statement).target is in the current label set, iteration of labeled loop breaks
+ *
+ * @path ch12/12.6/12.6.3/S12.6.3_A11_T3.js
+ * @description Trying to continue non-existent label
+ * @negative
+ */
+
+__str="";
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#
+outer:for(index=0;index<4;index+=1){
+ nested:for(index_n=0;index_n<=index;index_n++){
+ if(index*index_n == 6)continue nonexist;
+ __str+=""+index+index_n;
+ }
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+
+
+
diff --git a/js/src/tests/test262/ch12/12.6/12.6.3/S12.6.3_A12.1_T1.js b/js/src/tests/test262/ch12/12.6/12.6.3/S12.6.3_A12.1_T1.js
new file mode 100644
index 000000000..48fc3b30c
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.6/12.6.3/S12.6.3_A12.1_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.
+
+/**
+ * If (Evaluate Statement).type is "break" and (Evaluate Statement).target is in the current label set, (normal, (Evaluate Statement), empty) is returned while evaluating a "var-loop"
+ *
+ * @path ch12/12.6/12.6.3/S12.6.3_A12.1_T1.js
+ * @description Breaking a loop with "break"
+ */
+
+__str=""
+
+for(var index=0; index<10; index+=1) {
+ if (index>5)break;
+ __str+=index;
+}
+
+if (__str!=="012345") {
+ $ERROR('#1: __str === "012345". Actual: __str ==='+ __str );
+}
+
diff --git a/js/src/tests/test262/ch12/12.6/12.6.3/S12.6.3_A12.1_T2.js b/js/src/tests/test262/ch12/12.6/12.6.3/S12.6.3_A12.1_T2.js
new file mode 100644
index 000000000..939fd991d
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.6/12.6.3/S12.6.3_A12.1_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.
+
+/**
+ * If (Evaluate Statement).type is "break" and (Evaluate Statement).target is in the current label set, (normal, (Evaluate Statement), empty) is returned while evaluating a "var-loop"
+ *
+ * @path ch12/12.6/12.6.3/S12.6.3_A12.1_T2.js
+ * @description Embedded loops
+ */
+
+__str="";
+
+outer : for(var index=0; index<4; index+=1) {
+ nested : for(var index_n=0; index_n<=index; index_n++) {
+ if (index*index_n >= 4)break nested;
+ __str+=""+index+index_n;
+ }
+}
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__str !== "00101120213031") {
+ $ERROR('#1: __str === "00101120213031". Actual: __str ==='+ __str );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+__str="";
+
+outer : for(var index=0; index<4; index+=1) {
+ nested : for(var index_n=0; index_n<=index; index_n++) {
+ if (index*index_n >= 4)break outer;
+ __str+=""+index+index_n;
+ }
+}
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__str !== "0010112021") {
+ $ERROR('#2: __str === "0010112021". Actual: __str ==='+ __str );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+__str="";
+
+outer : for(var index=0; index<4; index+=1) {
+ nested : for(var index_n=0; index_n<=index; index_n++) {
+ if (index*index_n >= 4)break ;
+ __str+=""+index+index_n;
+ }
+}
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if (__str !== "00101120213031") {
+ $ERROR('#3: __str === "00101120213031". Actual: __str ==='+ __str );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+
+
+
diff --git a/js/src/tests/test262/ch12/12.6/12.6.3/S12.6.3_A12.1_T3.js b/js/src/tests/test262/ch12/12.6/12.6.3/S12.6.3_A12.1_T3.js
new file mode 100644
index 000000000..96a5accd9
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.6/12.6.3/S12.6.3_A12.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.
+
+/**
+ * If (Evaluate Statement).type is "break" and (Evaluate Statement).target is in the current label set, (normal, (Evaluate Statement), empty) is returned while evaluating a "var-loop"
+ *
+ * @path ch12/12.6/12.6.3/S12.6.3_A12.1_T3.js
+ * @description Trying to break non-existent label
+ * @negative
+ */
+
+__str="";
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+outer:for(var index=0;index<4;index+=1){
+ nested:for(var index_n=0;index_n<=index;index_n++){
+ if(index*index_n >= 4)break nonexist;
+ __str+=""+index+index_n;
+ }
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch12/12.6/12.6.3/S12.6.3_A12_T1.js b/js/src/tests/test262/ch12/12.6/12.6.3/S12.6.3_A12_T1.js
new file mode 100644
index 000000000..55031321d
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.6/12.6.3/S12.6.3_A12_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.
+
+/**
+ * If (Evaluate Statement).type is "break" and (Evaluate Statement).target is in the current label set, (normal, (Evaluate Statement), empty) is returned while evaluating a loop
+ *
+ * @path ch12/12.6/12.6.3/S12.6.3_A12_T1.js
+ * @description Breaking a loop with "break"
+ */
+
+__str=""
+
+for(index=0; index<10; index+=1) {
+ if (index>5)break;
+ __str+=index;
+}
+
+if (__str!=="012345") {
+ $ERROR('#1:__str === "012345". Actual: __str ==='+__str );
+}
+
diff --git a/js/src/tests/test262/ch12/12.6/12.6.3/S12.6.3_A12_T2.js b/js/src/tests/test262/ch12/12.6/12.6.3/S12.6.3_A12_T2.js
new file mode 100644
index 000000000..e97dc7da3
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.6/12.6.3/S12.6.3_A12_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.
+
+/**
+ * If (Evaluate Statement).type is "break" and (Evaluate Statement).target is in the current label set, (normal, (Evaluate Statement), empty) is returned while evaluating a loop
+ *
+ * @path ch12/12.6/12.6.3/S12.6.3_A12_T2.js
+ * @description Embedded loops
+ */
+
+__str="";
+
+outer : for(index=0; index<4; index+=1) {
+ nested : for(index_n=0; index_n<=index; index_n++) {
+ if (index*index_n >= 4)break nested;
+ __str+=""+index+index_n;
+ }
+}
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__str !== "00101120213031") {
+ $ERROR('#1: __str === "00101120213031". Actual: __str ==='+ __str );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+__str="";
+
+outer : for(index=0; index<4; index+=1) {
+ nested : for(index_n=0; index_n<=index; index_n++) {
+ if (index*index_n >= 4)break outer;
+ __str+=""+index+index_n;
+ }
+}
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__str !== "0010112021") {
+ $ERROR('#2: __str === "0010112021". Actual: __str ==='+ __str );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+__str="";
+
+outer : for(index=0; index<4; index+=1) {
+ nested : for(index_n=0; index_n<=index; index_n++) {
+ if (index*index_n >= 4)break ;
+ __str+=""+index+index_n;
+ }
+}
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if (__str !== "00101120213031") {
+ $ERROR('#3: __str === "00101120213031". Actual: __str ==='+ __str );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+
+
+
diff --git a/js/src/tests/test262/ch12/12.6/12.6.3/S12.6.3_A12_T3.js b/js/src/tests/test262/ch12/12.6/12.6.3/S12.6.3_A12_T3.js
new file mode 100644
index 000000000..67fd236cd
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.6/12.6.3/S12.6.3_A12_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.
+
+/**
+ * If (Evaluate Statement).type is "break" and (Evaluate Statement).target is in the current label set, (normal, (Evaluate Statement), empty) is returned while evaluating a loop
+ *
+ * @path ch12/12.6/12.6.3/S12.6.3_A12_T3.js
+ * @description Trying to break non-existent label
+ * @negative
+ */
+
+__str="";
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#4
+outer:for(index=0;index<4;index+=1){
+ nested:for(index_n=0;index_n<=index;index_n++){
+ if(index*index_n >= 4)break nonexist;
+ __str+=""+index+index_n;
+ }
+};
+//
+//////////////////////////////////////////////////////////////////////////////
+
+
+
+
diff --git a/js/src/tests/test262/ch12/12.6/12.6.3/S12.6.3_A13.js b/js/src/tests/test262/ch12/12.6/12.6.3/S12.6.3_A13.js
new file mode 100644
index 000000000..452902537
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.6/12.6.3/S12.6.3_A13.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.
+
+/**
+ * VariableDeclaration in "var VariableDeclarationListNoIn" of for IterationStatement is allowed
+ *
+ * @path ch12/12.6/12.6.3/S12.6.3_A13.js
+ * @description Declaring variable in "for" ExpressionNoIn
+ */
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+try {
+ index = index;
+} catch (e) {
+ $ERROR('#1: VariableDeclaration in "var VariableDeclarationListNoIn" of for IterationStatement is allowed');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+
+for(var index=0; index<6; index++) {
+ ;
+}
+
diff --git a/js/src/tests/test262/ch12/12.6/12.6.3/S12.6.3_A14.js b/js/src/tests/test262/ch12/12.6/12.6.3/S12.6.3_A14.js
new file mode 100644
index 000000000..182482dd9
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.6/12.6.3/S12.6.3_A14.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.
+
+/**
+ * The production IterationStatement: "for (var VariableDeclarationListNoIn; Expression; Expression) Statement"
+ *
+ * @path ch12/12.6/12.6.3/S12.6.3_A14.js
+ * @description Using +,*,/, as the second Expression
+ */
+
+//CHECK#1
+for(var i=0;i<10;i++){}
+if (i!==10) $ERROR('#1: i === 10. Actual: i ==='+ i );
+
+//CHECK#2
+var j=0;
+for(var i=1;i<10;i*=2){
+ j++;
+}
+if (i!==16) $ERROR('#2.1: i === 16. Actual: i ==='+ i );
+if (j!==4) $ERROR('#2.2: j === 4. Actual: j ==='+ j );
+
+//CHECK#3
+var j=0;
+for(var i=16;i>1;i=i/2){
+ j++;
+}
+if (i!==1) $ERROR('#3.1: i === 1. Actual: i ==='+ i );
+if (j!==4) $ERROR('#3.2: j === 4. Actual: j ==='+ j );
+
+//CHECK#4
+var j=0;
+for(var i=10;i>1;i--){
+ j++;
+}
+if (i!==1) $ERROR('#4.1: i === 1. Actual: i ==='+ i );
+if (j!==9) $ERROR('#4.2: j === 9. Actual: j ==='+ j );
+
+//CHECK#5
+var j=0;
+for(var i=2;i<10;i*=i){
+ j++;
+}
+if (i!==16) $ERROR('#5.1: i === 16. Actual: i ==='+ i );
+if (j!==2) $ERROR('#5.2: j === 2. Actual: j ==='+ j );
+
diff --git a/js/src/tests/test262/ch12/12.6/12.6.3/S12.6.3_A15.js b/js/src/tests/test262/ch12/12.6/12.6.3/S12.6.3_A15.js
new file mode 100644
index 000000000..4ec6147b9
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.6/12.6.3/S12.6.3_A15.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.
+
+/**
+ * The production IterationStatement: "for (var VariableDeclarationListNoIn; Expression; Expression) Statement"
+ *
+ * @path ch12/12.6/12.6.3/S12.6.3_A15.js
+ * @description Statement must be evaluated before second Expression is evaluated
+ */
+
+//CHECK#1
+for(var i=0;i<10;i++){
+ i*=2;
+ break;
+}
+if (i!==0) $ERROR('#1: i === 0. Actual: i ==='+ i );
+
+//CHECK#2
+for(var i=0;i<10;i++){
+ i*=2;
+ if (i===3) $ERROR('#2: i !== 3');
+}
+
+
diff --git a/js/src/tests/test262/ch12/12.6/12.6.3/S12.6.3_A2.1.js b/js/src/tests/test262/ch12/12.6/12.6.3/S12.6.3_A2.1.js
new file mode 100644
index 000000000..78372a2d7
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.6/12.6.3/S12.6.3_A2.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.
+
+/**
+ * While evaluating "for (ExpressionNoIn ; ; Expression) Statement", Statement is evaulated first
+ *
+ * @path ch12/12.6/12.6.3/S12.6.3_A2.1.js
+ * @description Using "(function(){throw "NoInExpression"})()" as ExpressionNoIn
+ */
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+try {
+ for((function(){throw "NoInExpression"})(); ;(function(){throw "SecondExpression"})()) {
+ throw "Statement";
+ }
+ $ERROR('#1: (function(){throw "NoInExpression"})() lead to throwing exception');
+} catch (e) {
+ if (e !== "NoInExpression") {
+ $ERROR('#2: When for (ExpressionNoIn ; ; Expression) Statement is evaluated NoInExpression evaluates first');
+ }
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch12/12.6/12.6.3/S12.6.3_A2.2.js b/js/src/tests/test262/ch12/12.6/12.6.3/S12.6.3_A2.2.js
new file mode 100644
index 000000000..f6391e2f7
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.6/12.6.3/S12.6.3_A2.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.
+
+/**
+ * While evaluating "for (ExpressionNoIn;;) Statement", Statement is evaulated first
+ *
+ * @path ch12/12.6/12.6.3/S12.6.3_A2.2.js
+ * @description Using "(function(){throw "NoInExpression"})()" as ExpressionNoIn
+ */
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+try {
+ for((function(){throw "NoInExpression"})();;) {
+ throw "Statement";
+ }
+ $ERROR('#1: (function(){throw "NoInExpression"})() lead to throwing exception');
+} catch (e) {
+ if (e !== "NoInExpression") {
+ $ERROR('#1: When for (ExpressionNoIn ; ; ) Statement is evaluated NoInExpression evaluates first');
+ }
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch12/12.6/12.6.3/S12.6.3_A2.js b/js/src/tests/test262/ch12/12.6/12.6.3/S12.6.3_A2.js
new file mode 100644
index 000000000..86718d9d1
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.6/12.6.3/S12.6.3_A2.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.
+
+/**
+ * While evaluating "for (ExpressionNoIn; Expression; Expression) Statement", ExpressionNoIn is evaulated first
+ *
+ * @path ch12/12.6/12.6.3/S12.6.3_A2.js
+ * @description Using "(function(){throw "NoInExpression"})()" as ExpressionNoIn
+ */
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+try {
+ for((function(){throw "NoInExpression";})(); (function(){throw "FirstExpression";})(); (function(){throw "SecondExpression";})()) {
+ var in_for = "reached";
+ }
+ $ERROR('#1: (function(){throw "NoInExpression";})() lead to throwing exception');
+} catch (e) {
+ if (e !== "NoInExpression") {
+ $ERROR('#1: When for (ExpressionNoIn ; Expression ; Expression) Statement is evaluated ExpressionNoIn evaluates first');
+ }
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (in_for !== undefined) {
+ $ERROR('#2: in_for === undefined. Actual: in_for ==='+ in_for );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch12/12.6/12.6.3/S12.6.3_A3.js b/js/src/tests/test262/ch12/12.6/12.6.3/S12.6.3_A3.js
new file mode 100644
index 000000000..2c46dbfbb
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.6/12.6.3/S12.6.3_A3.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.
+
+/**
+ * While evaluating "for (ExpressionNoIn; FirstExpression; SecondExpression) Statement", ExpressionNoIn is evaulated first, FirstExpressoin is evaluated second
+ *
+ * @path ch12/12.6/12.6.3/S12.6.3_A3.js
+ * @description Using "(function(){throw "FirstExpression"})()" as FirstExpression
+ */
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+try {
+ for((function(){__in__NotInExpression__ = "checked";__in__NotInExpression__2 = "passed";})(); (function(){throw "FirstExpression"})(); (function(){throw "SecondExpression"})()) {
+ __in__for="reached";
+ }
+ $ERROR('#1: (function(){throw "SecondExpression"} lead to throwing exception');
+} catch (e) {
+ if (e !== "FirstExpression") {
+ $ERROR('#1: When for (ExpressionNoIn ; FirstExpression ; SecondExpression) Statement is evaluated first evaluates ExpressionNoIn then FirstExpression');
+ }
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if ((__in__NotInExpression__ !== "checked")&(__in__NotInExpression__2!=="passed")) {
+ $ERROR('#2: (__in__NotInExpression__ === "checked")&(__in__NotInExpression__2==="passed")');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if (typeof __in__for !== "undefined") {
+ $ERROR('#3: typeof __in__for === "undefined". Actual: typeof __in__for ==='+ typeof __in__for );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch12/12.6/12.6.3/S12.6.3_A4.1.js b/js/src/tests/test262/ch12/12.6/12.6.3/S12.6.3_A4.1.js
new file mode 100644
index 000000000..a64935274
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.6/12.6.3/S12.6.3_A4.1.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.
+
+/**
+ * "in"-expression is not allowed as a ExpressionNoIn in "for (ExpressionNoIn; FirstExpression; SecondExpression) Statement" IterationStatement
+ *
+ * @path ch12/12.6/12.6.3/S12.6.3_A4.1.js
+ * @description Checking if execution of "for (var a in arr;1;){}" fails
+ * @negative
+ */
+
+arr = [1,2,3,4,5];
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+for (var a in arr;1;){
+ break;
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+
diff --git a/js/src/tests/test262/ch12/12.6/12.6.3/S12.6.3_A4_T1.js b/js/src/tests/test262/ch12/12.6/12.6.3/S12.6.3_A4_T1.js
new file mode 100644
index 000000000..48e56c4b1
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.6/12.6.3/S12.6.3_A4_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.
+
+/**
+ * "in"-expression is not allowed as a ExpressionNoIn in "for (ExpressionNoIn; FirstExpression; SecondExpression) Statement" IterationStatement
+ *
+ * @path ch12/12.6/12.6.3/S12.6.3_A4_T1.js
+ * @description Checking if execution of "for (a in arr;1;){}" fails
+ * @negative
+ */
+
+arr = [1,2,3,4,5];
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+for (a in arr;1;){
+ break;
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+
diff --git a/js/src/tests/test262/ch12/12.6/12.6.3/S12.6.3_A4_T2.js b/js/src/tests/test262/ch12/12.6/12.6.3/S12.6.3_A4_T2.js
new file mode 100644
index 000000000..2a292a808
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.6/12.6.3/S12.6.3_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.
+
+/**
+ * "in"-expression is not allowed as a ExpressionNoIn in "for (ExpressionNoIn; FirstExpression; SecondExpression) Statement" IterationStatement
+ *
+ * @path ch12/12.6/12.6.3/S12.6.3_A4_T2.js
+ * @description Checking if execution of "for (1 in arr;1;){}" fails
+ * @negative
+ */
+
+arr = [1,2,3,4,5];
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+for(1 in arr;1;) {
+ break;
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+
diff --git a/js/src/tests/test262/ch12/12.6/12.6.3/S12.6.3_A5.js b/js/src/tests/test262/ch12/12.6/12.6.3/S12.6.3_A5.js
new file mode 100644
index 000000000..6cab0f017
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.6/12.6.3/S12.6.3_A5.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.
+
+/**
+ * "in"-expression wrapped into "eval" statement is allowed as a ExpressionNoIn in "for (ExpressionNoIn; FirstExpression; SecondExpression) Statement" IterationStatement
+ *
+ * @path ch12/12.6/12.6.3/S12.6.3_A5.js
+ * @description Using eval "for(eval("i in arr");1;)"
+ */
+
+arr = [1,2,3,4,5];
+i = 1;
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+try {
+ for(eval("i in arr");1;) {break;};
+} catch (e) {
+ $ERROR('#1.1: for(eval("i in arr");1;) {break;}; does not lead to throwing exception');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+try {
+ for(eval("var i = 1 in arr");1;) {break;};
+} catch (e) {
+ $ERROR('#2.1: for(eval("var i = 1 in arr");1;) {break;}; does not lead to throwing exception');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+try {
+ for(eval("1 in arr");1;) {break;};
+} catch (e) {
+ $ERROR('#3.1: for(eval("1 in arr");1;) {break;}; does not lead to throwing exception');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch12/12.6/12.6.3/S12.6.3_A6.js b/js/src/tests/test262/ch12/12.6/12.6.3/S12.6.3_A6.js
new file mode 100644
index 000000000..1dfd5b457
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.6/12.6.3/S12.6.3_A6.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.
+
+/**
+ * While evaluating "for ( ; ; Expression) Statement", Statement is evaluated first and then Expression is evaluated
+ *
+ * @path ch12/12.6/12.6.3/S12.6.3_A6.js
+ * @description Using "(function(){throw "SecondExpression";})()" as an Expression
+ */
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+try {
+ for(;;(function(){throw "SecondExpression";})()){
+ var __in__for = "reached";
+ }
+ $ERROR('#1: (function(){throw "SecondExpression"}() lead to throwing exception');
+} catch (e) {
+ if (e !== "SecondExpression") {
+ $ERROR('#1: When for ( ; ; Expression) Statement is evaluated Statement evaluates first then Expression evaluates');
+ }
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__in__for !== "reached") {
+ $ERROR('#2: __in__for === "reached". Actual: __in__for ==='+ __in__for );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch12/12.6/12.6.3/S12.6.3_A7.1_T1.js b/js/src/tests/test262/ch12/12.6/12.6.3/S12.6.3_A7.1_T1.js
new file mode 100644
index 000000000..f8b2fdbd0
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.6/12.6.3/S12.6.3_A7.1_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.
+
+/**
+ * Only three expressions and two semicolons in "for(with var)" braces are allowed.
+ * Appearing of for (ExpressionNoIn_opt ; Expression_opt ; Expression_opt; Expression_opt; Expression_opt;) statement leads to SyntaxError
+ *
+ * @path ch12/12.6/12.6.3/S12.6.3_A7.1_T1.js
+ * @description Checking if execution of "for(var index=0; index<10; index++; index--)" fails
+ * @negative
+ */
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+for(var index=0; index<10; index++; index--);
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch12/12.6/12.6.3/S12.6.3_A7.1_T2.js b/js/src/tests/test262/ch12/12.6/12.6.3/S12.6.3_A7.1_T2.js
new file mode 100644
index 000000000..550b14b19
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.6/12.6.3/S12.6.3_A7.1_T2.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.
+
+/**
+ * Only three expressions and two semicolons in "for(with var)" braces are allowed.
+ * Appearing of for (ExpressionNoIn_opt ; Expression_opt ; Expression_opt; Expression_opt; Expression_opt;) statement leads to SyntaxError
+ *
+ * @path ch12/12.6/12.6.3/S12.6.3_A7.1_T2.js
+ * @description Checking if execution of "for(var index=0; index<10; index+=4; index++; index--)" fails
+ * @negative
+ */
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+for(var index=0; index<10; index+=4; index++; index--) ;
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch12/12.6/12.6.3/S12.6.3_A7_T1.js b/js/src/tests/test262/ch12/12.6/12.6.3/S12.6.3_A7_T1.js
new file mode 100644
index 000000000..39dcc1c6a
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.6/12.6.3/S12.6.3_A7_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.
+
+/**
+ * Only three expressions and two semicolons in "for" braces are allowed.
+ * Appearing of for (ExpressionNoIn_opt ; Expression_opt ; Expression_opt; Expression_opt; Expression_opt;) statement leads to SyntaxError
+ *
+ * @path ch12/12.6/12.6.3/S12.6.3_A7_T1.js
+ * @description Checking if execution of "for(index=0; index<10; index++; index--)" fails
+ * @negative
+ */
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+for(index=0; index<10; index++; index--) ;
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch12/12.6/12.6.3/S12.6.3_A7_T2.js b/js/src/tests/test262/ch12/12.6/12.6.3/S12.6.3_A7_T2.js
new file mode 100644
index 000000000..2f22dbf3c
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.6/12.6.3/S12.6.3_A7_T2.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.
+
+/**
+ * Only three expressions and two semicolons in "for" braces are allowed.
+ * Appearing of for (ExpressionNoIn_opt ; Expression_opt ; Expression_opt; Expression_opt; Expression_opt;) statement leads to SyntaxError
+ *
+ * @path ch12/12.6/12.6.3/S12.6.3_A7_T2.js
+ * @description Checking if execution of "for(index=0; index<10; index+=4; index++; index--)" fails
+ * @negative
+ */
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+for(index=0; index<10; index+=4; index++; index--) ;
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch12/12.6/12.6.3/S12.6.3_A8.1_T1.js b/js/src/tests/test262/ch12/12.6/12.6.3/S12.6.3_A8.1_T1.js
new file mode 100644
index 000000000..ddd3c30e4
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.6/12.6.3/S12.6.3_A8.1_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.
+
+/**
+ * Blocks within "for(with var)" braces are not allowed
+ *
+ * @path ch12/12.6/12.6.3/S12.6.3_A8.1_T1.js
+ * @description Checking if execution of "for(var index=0; index<100; {index++; index*2;}) { arr.add(""+index);}" fails
+ * @negative
+ */
+
+var arr = [];
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+for(var index=0; index<100; {index++; index*2;}) { arr.add(""+index);};
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch12/12.6/12.6.3/S12.6.3_A8.1_T2.js b/js/src/tests/test262/ch12/12.6/12.6.3/S12.6.3_A8.1_T2.js
new file mode 100644
index 000000000..81cbed22b
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.6/12.6.3/S12.6.3_A8.1_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.
+
+/**
+ * Blocks within "for(with var)" braces are not allowed
+ *
+ * @path ch12/12.6/12.6.3/S12.6.3_A8.1_T2.js
+ * @description Checking if execution of "for(var index=0; {index++;index<100;}; index*2;) { arr.add(""+index);}" fails
+ * @negative
+ */
+
+var arr = [];
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+for(var index=0; {index++;index<100;}; index*2;) { arr.add(""+index);};
+//
+//////////////////////////////////////////////////////////////////////////////
+
+
+
+
diff --git a/js/src/tests/test262/ch12/12.6/12.6.3/S12.6.3_A8.1_T3.js b/js/src/tests/test262/ch12/12.6/12.6.3/S12.6.3_A8.1_T3.js
new file mode 100644
index 000000000..8c26060e3
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.6/12.6.3/S12.6.3_A8.1_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.
+
+/**
+ * Blocks within "for(with var)" braces are not allowed
+ *
+ * @path ch12/12.6/12.6.3/S12.6.3_A8.1_T3.js
+ * @description Checking if execution of "for({var index=0; index+=1;} index++<=10; index*2;) { arr.add(""+index);}" fails
+ * @negative
+ */
+
+var arr = [];
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+for({var index=0; index+=1;} index++<=10; index*2;) { arr.add(""+index);};
+//
+//////////////////////////////////////////////////////////////////////////////
+
+
+
+
diff --git a/js/src/tests/test262/ch12/12.6/12.6.3/S12.6.3_A8_T1.js b/js/src/tests/test262/ch12/12.6/12.6.3/S12.6.3_A8_T1.js
new file mode 100644
index 000000000..8f9ce29d6
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.6/12.6.3/S12.6.3_A8_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.
+
+/**
+ * Blocks within "for" braces are not allowed
+ *
+ * @path ch12/12.6/12.6.3/S12.6.3_A8_T1.js
+ * @description Checking if execution of "for(index=0; index<100; {index++; index*2;}) { arr.add(""+index);}" fails
+ * @negative
+ */
+
+var arr = [];
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+for(index=0; index<100; {index++; index*2;}) { arr.add(""+index);};
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch12/12.6/12.6.3/S12.6.3_A8_T2.js b/js/src/tests/test262/ch12/12.6/12.6.3/S12.6.3_A8_T2.js
new file mode 100644
index 000000000..406d23bbb
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.6/12.6.3/S12.6.3_A8_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.
+
+/**
+ * Blocks within "for" braces are not allowed
+ *
+ * @path ch12/12.6/12.6.3/S12.6.3_A8_T2.js
+ * @description Checking if execution of "for(index=0; {index++;index<100;}; index*2;) { arr.add(""+index);}" fails
+ * @negative
+ */
+
+var arr = [];
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+for(index=0; {index++;index<100;}; index*2;) { arr.add(""+index);};
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch12/12.6/12.6.3/S12.6.3_A8_T3.js b/js/src/tests/test262/ch12/12.6/12.6.3/S12.6.3_A8_T3.js
new file mode 100644
index 000000000..9843a3229
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.6/12.6.3/S12.6.3_A8_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.
+
+/**
+ * Blocks within "for" braces are not allowed
+ *
+ * @path ch12/12.6/12.6.3/S12.6.3_A8_T3.js
+ * @description Checking if execution of "for({index=0; index+=1;} index++<=10; index*2;) { arr.add(""+index);}" fails
+ * @negative
+ */
+
+var arr = [];
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+for({index=0; index+=1;} index++<=10; index*2;) { arr.add(""+index);};
+//
+//////////////////////////////////////////////////////////////////////////////
+
+
+
+
diff --git a/js/src/tests/test262/ch12/12.6/12.6.3/S12.6.3_A9.1.js b/js/src/tests/test262/ch12/12.6/12.6.3/S12.6.3_A9.1.js
new file mode 100644
index 000000000..c2031c9ab
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.6/12.6.3/S12.6.3_A9.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.
+
+/**
+ * The result of evaluating "for( ExpNoIn;Exp;Exp)" loop is returning (normal, evalValue, empty)
+ *
+ * @path ch12/12.6/12.6.3/S12.6.3_A9.1.js
+ * @description Using eval
+ */
+
+supreme=5;
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#
+try {
+ var __evaluated = eval("for(count=0;;) {if (count===supreme)break;else count++; }");
+ if (__evaluated !== 4) {
+ $ERROR('#1: __evaluated === 4. Actual: __evaluated ==='+ __evaluated );
+ }
+} catch (e) {
+ $ERROR('#1: var __evaluated = eval("for(count=0;;) {if (count===supreme)break;else count++; }"); does not lead to throwing exception');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch12/12.6/12.6.3/S12.6.3_A9.js b/js/src/tests/test262/ch12/12.6/12.6.3/S12.6.3_A9.js
new file mode 100644
index 000000000..11b88316f
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.6/12.6.3/S12.6.3_A9.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.
+
+/**
+ * The result of evaluating "for(var ExpNoIn;Exp;Exp)" loop is returning (normal, evalValue, empty)
+ *
+ * @path ch12/12.6/12.6.3/S12.6.3_A9.js
+ * @description Using eval
+ */
+
+supreme=5;
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#
+try {
+ var __evaluated = eval("for(var count=0;;) {if (count===supreme)break;else count++; }");
+ if (__evaluated !== 4) {
+ $ERROR('#1: __evaluated === 4. Actual: __evaluated ==='+ __evaluated );
+ }
+} catch (e) {
+ $ERROR('#1: var __evaluated = eval("for(var count=0;;) {if (count===supreme)break;else count++; }"); does not lead to throwing exception');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch12/12.6/12.6.3/browser.js b/js/src/tests/test262/ch12/12.6/12.6.3/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.6/12.6.3/browser.js
diff --git a/js/src/tests/test262/ch12/12.6/12.6.3/shell.js b/js/src/tests/test262/ch12/12.6/12.6.3/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.6/12.6.3/shell.js
diff --git a/js/src/tests/test262/ch12/12.6/12.6.4/12.6.4-1.js b/js/src/tests/test262/ch12/12.6/12.6.4/12.6.4-1.js
new file mode 100644
index 000000000..3929b0a23
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.6/12.6.4/12.6.4-1.js
@@ -0,0 +1,34 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch12/12.6/12.6.4/12.6.4-1.js
+ * @description The for-in Statement - a property name must not be visited more than once in any enumeration.
+ */
+
+
+function testcase() {
+ var obj = { prop1: "abc", prop2: "bbc", prop3: "cnn" };
+
+ var countProp1 = 0;
+ var countProp2 = 0;
+ var countProp3 = 0;
+
+ for (var p in obj) {
+ if (obj.hasOwnProperty(p)) {
+ if (p === "prop1") {
+ countProp1++;
+ }
+ if (p === "prop2") {
+ countProp2++;
+ }
+ if (p === "prop3") {
+ countProp3++;
+ }
+ }
+ }
+ return countProp1 === 1 && countProp2 === 1 && countProp3 === 1;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch12/12.6/12.6.4/12.6.4-2.js b/js/src/tests/test262/ch12/12.6/12.6.4/12.6.4-2.js
new file mode 100644
index 000000000..dca36c1ff
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.6/12.6.4/12.6.4-2.js
@@ -0,0 +1,52 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch12/12.6/12.6.4/12.6.4-2.js
+ * @description The for-in Statement - the values of [[Enumerable]] attributes are not considered when determining if a property of a prototype object is shadowed by a previous object on the prototype chain
+ */
+
+
+function testcase() {
+ var obj = {};
+
+ var proto = {};
+
+ Object.defineProperty(proto, "prop", {
+ value: "inheritedValue",
+ enumerable: false,
+ configurable: true,
+ writable: true
+ });
+
+ var ConstructFun = function () { };
+ ConstructFun.prototype = proto;
+
+ var child = new ConstructFun();
+
+ Object.defineProperty(child, "prop1", {
+ value: "overridedValue1",
+ enumerable: false
+ });
+ Object.defineProperty(child, "prop2", {
+ value: "overridedValue2",
+ enumerable: true
+ });
+ var accessedProp1 = false;
+ var accessedProp2 = false;
+
+ for (var p in child) {
+ if (child.hasOwnProperty(p)) {
+ if (p === "prop1") {
+ accessedProp1 = true;
+ }
+ if (p === "prop2") {
+ accessedProp2 = true;
+ }
+ }
+ }
+ return !accessedProp1 && accessedProp2 && child.prop1 === "overridedValue1" && child.prop2 === "overridedValue2";
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch12/12.6/12.6.4/S12.6.4_A1.js b/js/src/tests/test262/ch12/12.6/12.6.4/S12.6.4_A1.js
new file mode 100644
index 000000000..fd8c754bf
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.6/12.6.4/S12.6.4_A1.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.
+
+/**
+ * "for(key in undefined)" Statement is allowed
+ *
+ * @path ch12/12.6/12.6.4/S12.6.4_A1.js
+ * @description Checking if execution of "for(key in undefined)" passes
+ */
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+try {
+ for(__key in undefined){
+ var key=__key;
+ };
+} catch (e) {
+ $ERROR('#1: "for(key in undefined){}" does not lead to throwing exception');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (key!==undefined) {
+ $ERROR('#2: key === undefined. Actual: key === '+key);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+
+
diff --git a/js/src/tests/test262/ch12/12.6/12.6.4/S12.6.4_A14_T2.js b/js/src/tests/test262/ch12/12.6/12.6.4/S12.6.4_A14_T2.js
new file mode 100644
index 000000000..b90e3e99b
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.6/12.6.4/S12.6.4_A14_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.
+
+/**
+ * FunctionExpession within a "for-in" Expression is allowed
+ *
+ * @path ch12/12.6/12.6.4/S12.6.4_A14_T2.js
+ * @description Using "function __func(){return {a:1};}()" as Expession
+ */
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#
+for(x in function __func(){return {a:1};}()){
+ var __reached = x;
+};
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__reached !== "a") {
+ $ERROR('#2: function expession inside of for-in expression allowed');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch12/12.6/12.6.4/S12.6.4_A15.js b/js/src/tests/test262/ch12/12.6/12.6.4/S12.6.4_A15.js
new file mode 100644
index 000000000..c19908904
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.6/12.6.4/S12.6.4_A15.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.
+
+/**
+ * Block within a "for-in" Expression is not allowed
+ *
+ * @path ch12/12.6/12.6.4/S12.6.4_A15.js
+ * @description Using block within "for-in" Expression
+ * @negative
+ */
+
+var __arr=[1,2,3];
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#
+for(x in {__arr}){
+ break ;
+};
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch12/12.6/12.6.4/S12.6.4_A2.js b/js/src/tests/test262/ch12/12.6/12.6.4/S12.6.4_A2.js
new file mode 100644
index 000000000..e8db640c0
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.6/12.6.4/S12.6.4_A2.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.
+
+/**
+ * "for(key in null)" Expression is allowed
+ *
+ * @path ch12/12.6/12.6.4/S12.6.4_A2.js
+ * @description Checking if execution of "for(key in null)" passes
+ */
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#
+try {
+ for(__key in null){
+ var key=__key;
+ };
+} catch (e) {
+ $ERROR('#1: "for(__key in null){}" does not lead to throwing exception');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (key!==undefined) {
+ $ERROR('#2: key === undefined. Actual: key ==='+key);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+
+
+
diff --git a/js/src/tests/test262/ch12/12.6/12.6.4/S12.6.4_A3.1.js b/js/src/tests/test262/ch12/12.6/12.6.4/S12.6.4_A3.1.js
new file mode 100644
index 000000000..d232fe48d
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.6/12.6.4/S12.6.4_A3.1.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.
+
+/**
+ * The production IterationStatement: "for (var VariableDeclarationNoIn in Expression) Statement"
+ *
+ * @path ch12/12.6/12.6.4/S12.6.4_A3.1.js
+ * @description Using an array as an Expression is appropriate. Here Expression is an array of numbers
+ */
+
+__str="";
+
+__evaluated = eval("for(var ind in (arr=[2,1,4,3]))__str+=arr[ind]");
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__evaluated !== __str) {
+ $ERROR('#1: __evaluated === __str. Actual: __evaluated ==='+ __evaluated );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (!( (__str.indexOf("2")!==-1)&&(__str.indexOf("1")!==-1)&&(__str.indexOf("4")!==-1)&&(__str.indexOf("3")!==-1) )) {
+ $ERROR('#2: (__str.indexOf("2")!==-1)&&(__str.indexOf("1")!==-1)&&(__str.indexOf("4")!==-1)&&(__str.indexOf("3")!==-1)');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+
+
+
diff --git a/js/src/tests/test262/ch12/12.6/12.6.4/S12.6.4_A3.js b/js/src/tests/test262/ch12/12.6/12.6.4/S12.6.4_A3.js
new file mode 100644
index 000000000..2b34c38c7
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.6/12.6.4/S12.6.4_A3.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.
+
+/**
+ * The production IterationStatement: "for (var VariableDeclarationNoIn in Expression) Statement"
+ *
+ * @path ch12/12.6/12.6.4/S12.6.4_A3.js
+ * @description Using an array as an Expression is appropriate. Here Expression is an array of numbers. Eval is used
+ */
+
+__str="";
+
+__evaluated = eval("for(ind in (arr=[2,1,4,3]))__str+=arr[ind]");
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__evaluated !== __str) {
+ $ERROR('#1: __evaluated === __str. Actual: __evaluated ==='+ __evaluated );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (!( (__str.indexOf("2")!==-1)&&(__str.indexOf("1")!==-1)&&(__str.indexOf("4")!==-1)&&(__str.indexOf("3")!==-1) )) {
+ $ERROR('#2: (__str.indexOf("2")!==-1)&&(__str.indexOf("1")!==-1)&&(__str.indexOf("4")!==-1)&&(__str.indexOf("3")!==-1)');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+
+
+
diff --git a/js/src/tests/test262/ch12/12.6/12.6.4/S12.6.4_A4.1.js b/js/src/tests/test262/ch12/12.6/12.6.4/S12.6.4_A4.1.js
new file mode 100644
index 000000000..a491b3f34
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.6/12.6.4/S12.6.4_A4.1.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.
+
+/**
+ * The production IterationStatement: "for (var VariableDeclarationNoIn in Expression) Statement"
+ *
+ * @path ch12/12.6/12.6.4/S12.6.4_A4.1.js
+ * @description Using Object as an Expression is appropriate. Eval is used
+ */
+
+__str="";
+
+__evaluated = eval("for(var ind in (hash={2:'b',1:'a',4:'d',3:'c'}))__str+=hash[ind]");
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if ( !( (__evaluated.indexOf("a")!==-1)& (__evaluated.indexOf("b")!==-1)& (__evaluated.indexOf("c")!==-1)&(__evaluated.indexOf("d")!==-1) ) ) {
+ $ERROR('#1: (__evaluated.indexOf("a")!==-1)& (__evaluated.indexOf("b")!==-1)& (__evaluated.indexOf("c")!==-1)&(__evaluated.indexOf("d")!==-1)');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__str !== __evaluated) {
+ $ERROR('#2: __str === __evaluated. Actual: __str ==='+ __str );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+
+
+
+
diff --git a/js/src/tests/test262/ch12/12.6/12.6.4/S12.6.4_A4.js b/js/src/tests/test262/ch12/12.6/12.6.4/S12.6.4_A4.js
new file mode 100644
index 000000000..79f496b8c
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.6/12.6.4/S12.6.4_A4.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.
+
+/**
+ * The production IterationStatement: "for (var VariableDeclarationNoIn in Expression) Statement"
+ *
+ * @path ch12/12.6/12.6.4/S12.6.4_A4.js
+ * @description Using Object as an Expression is appropriate. Eval is used
+ */
+
+__str="";
+
+__evaluated = eval("for(ind in (hash={2:'b',1:'a',4:'d',3:'c'}))__str+=hash[ind]");
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if ( !( (__evaluated.indexOf("a")!==-1)& (__evaluated.indexOf("b")!==-1)& (__evaluated.indexOf("c")!==-1)&(__evaluated.indexOf("d")!==-1) ) ) {
+ $ERROR('#1: (__evaluated.indexOf("a")!==-1)& (__evaluated.indexOf("b")!==-1)& (__evaluated.indexOf("c")!==-1)&(__evaluated.indexOf("d")!==-1)');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__str !== __evaluated) {
+ $ERROR('#2: __str === __evaluated. Actual: __str ==='+ __str );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+
+
+
+
diff --git a/js/src/tests/test262/ch12/12.6/12.6.4/S12.6.4_A5.1.js b/js/src/tests/test262/ch12/12.6/12.6.4/S12.6.4_A5.1.js
new file mode 100644
index 000000000..37992e1dd
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.6/12.6.4/S12.6.4_A5.1.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.
+
+/**
+ * The production IterationStatement: "for (var VariableDeclarationNoIn in Expression) Statement"
+ *
+ * @path ch12/12.6/12.6.4/S12.6.4_A5.1.js
+ * @description Using hierarchical Object as an Expression is appropriate. The depth is two
+ */
+
+__hash__map={a:{aa:1,ab:2,ac:3,ad:4},b:{ba:1,bb:2,bc:3,bd:4},c:{ca:1,cb:2,cc:3,cd:4},d:{da:1,db:2,dc:3,dd:4}};
+
+__arr = "";
+
+for(var __key in __hash__map){
+ for (var __ind in __hash__map[__key]){
+ __arr+=("" + __ind + __hash__map[__key][__ind]);
+ }
+}
+
+if(!(
+(__arr.indexOf("aa1")!==-1)&
+(__arr.indexOf("ab2")!==-1)&
+(__arr.indexOf("ac3")!==-1)&
+(__arr.indexOf("ad4")!==-1)&
+(__arr.indexOf("ba1")!==-1)&
+(__arr.indexOf("bb2")!==-1)&
+(__arr.indexOf("bc3")!==-1)&
+(__arr.indexOf("bd4")!==-1)&
+(__arr.indexOf("ca1")!==-1)&
+(__arr.indexOf("cb2")!==-1)&
+(__arr.indexOf("cc3")!==-1)&
+(__arr.indexOf("cd4")!==-1)&
+(__arr.indexOf("da1")!==-1)&
+(__arr.indexOf("db2")!==-1)&
+(__arr.indexOf("dc3")!==-1)&
+(__arr.indexOf("dd4")!==-1)
+)) $ERROR('#1: The nested for-in Statement applied to hierarchial object works properly as described in the Standard');
+
+
+
+
diff --git a/js/src/tests/test262/ch12/12.6/12.6.4/S12.6.4_A5.js b/js/src/tests/test262/ch12/12.6/12.6.4/S12.6.4_A5.js
new file mode 100644
index 000000000..974659f10
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.6/12.6.4/S12.6.4_A5.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.
+
+/**
+ * The production IterationStatement: "for (var VariableDeclarationNoIn in Expression) Statement"
+ *
+ * @path ch12/12.6/12.6.4/S12.6.4_A5.js
+ * @description Using hierarchical Object as an Expression is appropriate. The depth is two
+ */
+
+__hash__map={a:{aa:1,ab:2,ac:3,ad:4},b:{ba:1,bb:2,bc:3,bd:4},c:{ca:1,cb:2,cc:3,cd:4},d:{da:1,db:2,dc:3,dd:4}};
+
+__arr = "";
+
+for(__key in __hash__map){
+ for (__ind in __hash__map[__key]){
+ __arr+=("" + __ind + __hash__map[__key][__ind]);
+ }
+}
+
+if(!(
+(__arr.indexOf("aa1")!==-1)&
+(__arr.indexOf("ab2")!==-1)&
+(__arr.indexOf("ac3")!==-1)&
+(__arr.indexOf("ad4")!==-1)&
+(__arr.indexOf("ba1")!==-1)&
+(__arr.indexOf("bb2")!==-1)&
+(__arr.indexOf("bc3")!==-1)&
+(__arr.indexOf("bd4")!==-1)&
+(__arr.indexOf("ca1")!==-1)&
+(__arr.indexOf("cb2")!==-1)&
+(__arr.indexOf("cc3")!==-1)&
+(__arr.indexOf("cd4")!==-1)&
+(__arr.indexOf("da1")!==-1)&
+(__arr.indexOf("db2")!==-1)&
+(__arr.indexOf("dc3")!==-1)&
+(__arr.indexOf("dd4")!==-1)
+)) $ERROR('#1: The nested for-in Statement applied to hierarchial object works properly as described in the Standard');
+
+
+
+
diff --git a/js/src/tests/test262/ch12/12.6/12.6.4/S12.6.4_A6.1.js b/js/src/tests/test262/ch12/12.6/12.6.4/S12.6.4_A6.1.js
new file mode 100644
index 000000000..78cc2e842
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.6/12.6.4/S12.6.4_A6.1.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.
+
+/**
+ * The production IterationStatement: "for (var VariableDeclarationNoIn in Expression) Statement"
+ *
+ * @path ch12/12.6/12.6.4/S12.6.4_A6.1.js
+ * @description Using Object with custom prototype as an Expression is appropriate. The prototype is "{feat:2,hint:"protohint"}"
+ */
+
+function FACTORY(){this.prop=1;this.hint="hinted"};
+
+FACTORY.prototype = {feat:2,hint:"protohint"};
+
+var __instance = new FACTORY;
+
+__accum="";
+
+for (var key in __instance){
+ __accum+=(key + __instance[key]);
+}
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (!((__accum.indexOf("prop1")!==-1)&&(__accum.indexOf("feat2")!==-1)&&(__accum.indexOf("hinthinted")!==-1))) {
+ $ERROR('#1: (__accum.indexOf("prop1")!==-1)&&(__accum.indexOf("feat2")!==-1)&&(__accum.indexOf("hinthinted")!==-1)');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__accum.indexOf("hintprotohint")!==-1) {
+ $ERROR('#2: __accum.indexOf("hintprotohint") === -1. Actual: __accum.indexOf("hintprotohint") ==='+ __accum.indexOf("hintprotohint") );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch12/12.6/12.6.4/S12.6.4_A6.js b/js/src/tests/test262/ch12/12.6/12.6.4/S12.6.4_A6.js
new file mode 100644
index 000000000..5a1f8d9c2
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.6/12.6.4/S12.6.4_A6.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.
+
+/**
+ * The production IterationStatement: "for (var VariableDeclarationNoIn in Expression) Statement"
+ *
+ * @path ch12/12.6/12.6.4/S12.6.4_A6.js
+ * @description Using Object with custom prototype as an Expression is appropriate. The prototype is "{feat:2,hint:"protohint"}"
+ */
+
+function FACTORY(){this.prop=1;this.hint="hinted"};
+
+FACTORY.prototype = {feat:2,hint:"protohint"};
+
+var __instance = new FACTORY;
+
+__accum="";
+
+for (key in __instance){
+ __accum+=(key + __instance[key]);
+}
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (!((__accum.indexOf("prop1")!==-1)&&(__accum.indexOf("feat2")!==-1)&&(__accum.indexOf("hinthinted")!==-1))) {
+ $ERROR('#1: (__accum.indexOf("prop1")!==-1)&&(__accum.indexOf("feat2")!==-1)&&(__accum.indexOf("hinthinted")!==-1)');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__accum.indexOf("hintprotohint")!==-1) {
+ $ERROR('#2: __accum.indexOf("hintprotohint") === -1. Actual: __accum.indexOf("hintprotohint") ==='+ __accum.indexOf("hintprotohint") );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch12/12.6/12.6.4/S12.6.4_A7_T1.js b/js/src/tests/test262/ch12/12.6/12.6.4/S12.6.4_A7_T1.js
new file mode 100644
index 000000000..1105b7ff2
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.6/12.6.4/S12.6.4_A7_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.
+
+/**
+ * Properties of the object being enumerated may be deleted during enumeration
+ *
+ * @path ch12/12.6/12.6.4/S12.6.4_A7_T1.js
+ * @description Checking "for (LeftHandSideExpression in Expression) Statement" case
+ */
+
+__obj={aa:1,ba:2,ca:3};
+
+__accum="";
+
+for (__key in __obj){
+
+ erasator_T_1000(__obj,"b");
+
+ __accum+=(__key+__obj[__key]);
+
+}
+
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (!((__accum.indexOf("aa1")!==-1)&&(__accum.indexOf("ca3")!==-1))) {
+ $ERROR('#1: (__accum.indexOf("aa1")!==-1)&&(__accum.indexOf("ca3")!==-1)');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__accum.indexOf("ba2")!==-1) {
+ $ERROR('#2: __accum.indexOf("ba2") === -1. Actual: __accum.indexOf("ba2") ==='+ __accum.indexOf("ba2") );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+
+// erasator is the hash map terminator
+function erasator_T_1000(hash_map, charactr){
+ for (key in hash_map){
+ if (key.indexOf(charactr)===0) {
+ delete hash_map[key];
+ };
+ }
+}
+
diff --git a/js/src/tests/test262/ch12/12.6/12.6.4/S12.6.4_A7_T2.js b/js/src/tests/test262/ch12/12.6/12.6.4/S12.6.4_A7_T2.js
new file mode 100644
index 000000000..48be196ab
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.6/12.6.4/S12.6.4_A7_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.
+
+/**
+ * Properties of the object being enumerated may be deleted during enumeration
+ *
+ * @path ch12/12.6/12.6.4/S12.6.4_A7_T2.js
+ * @description Checking "for (var VariableDeclarationNoIn in Expression) Statement" case
+ */
+
+__obj={aa:1,ba:2,ca:3};
+
+__accum="";
+
+for (var __key in __obj){
+
+ erasator_T_1000(__obj,"b");
+
+ __accum+=(__key+__obj[__key]);
+
+}
+
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (!((__accum.indexOf("aa1")!==-1)&&(__accum.indexOf("ca3")!==-1))) {
+ $ERROR('#1: (__accum.indexOf("aa1")!==-1)&&(__accum.indexOf("ca3")!==-1)');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__accum.indexOf("ba2")!==-1) {
+ $ERROR('#2: __accum.indexOf("ba2") === -1. Actual: __accum.indexOf("ba2") ==='+ __accum.indexOf("ba2") );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+
+// erasator is the hash map terminator
+function erasator_T_1000(hash_map, charactr){
+ for (key in hash_map){
+ if (key.indexOf(charactr)===0) {
+ delete hash_map[key];
+ };
+ }
+}
+
diff --git a/js/src/tests/test262/ch12/12.6/12.6.4/browser.js b/js/src/tests/test262/ch12/12.6/12.6.4/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.6/12.6.4/browser.js
diff --git a/js/src/tests/test262/ch12/12.6/12.6.4/shell.js b/js/src/tests/test262/ch12/12.6/12.6.4/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.6/12.6.4/shell.js
diff --git a/js/src/tests/test262/ch12/12.6/browser.js b/js/src/tests/test262/ch12/12.6/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.6/browser.js
diff --git a/js/src/tests/test262/ch12/12.6/shell.js b/js/src/tests/test262/ch12/12.6/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.6/shell.js
diff --git a/js/src/tests/test262/ch12/12.7/12.7-1.js b/js/src/tests/test262/ch12/12.7/12.7-1.js
new file mode 100644
index 000000000..a19060a82
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.7/12.7-1.js
@@ -0,0 +1,21 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch12/12.7/12.7-1.js
+ * @description The continue Statement - a continue statement without an identifier may have a LineTerminator before the semi-colon
+ */
+
+
+function testcase() {
+ var sum = 0;
+ for (var i = 1; i <= 10; i++) {
+ continue
+ ;
+ sum += i;
+ }
+ return sum === 0;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch12/12.7/S12.7_A1_T1.js b/js/src/tests/test262/ch12/12.7/S12.7_A1_T1.js
new file mode 100644
index 000000000..ec172729f
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.7/S12.7_A1_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.
+
+/**
+ * Appearing of continue without an IterationStatement leads to syntax error
+ *
+ * @path ch12/12.7/S12.7_A1_T1.js
+ * @description Checking if execution of single "continue" without any IterationStatement fails
+ * @negative
+ */
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+var x=1;
+continue;
+var y=2;
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch12/12.7/S12.7_A1_T2.js b/js/src/tests/test262/ch12/12.7/S12.7_A1_T2.js
new file mode 100644
index 000000000..2aa90f8b1
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.7/S12.7_A1_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.
+
+/**
+ * Appearing of continue without an IterationStatement leads to syntax error
+ *
+ * @path ch12/12.7/S12.7_A1_T2.js
+ * @description Checking if single "continue" with Label but without any IterationStatement fails
+ * @negative
+ */
+
+LABEL : x=3.14;
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+var x=1;
+continue LABEL;
+var y=2;
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch12/12.7/S12.7_A1_T3.js b/js/src/tests/test262/ch12/12.7/S12.7_A1_T3.js
new file mode 100644
index 000000000..4652dc865
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.7/S12.7_A1_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.
+
+/**
+ * Appearing of continue without an IterationStatement leads to syntax error
+ *
+ * @path ch12/12.7/S12.7_A1_T3.js
+ * @description Checking if laballed "continue" with no IterationStatement, placed into a block, fails
+ * @negative
+ */
+
+LABEL : x=3.14;
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+{
+ var x=1;
+ continue LABEL;
+ var y=2;
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch12/12.7/S12.7_A1_T4.js b/js/src/tests/test262/ch12/12.7/S12.7_A1_T4.js
new file mode 100644
index 000000000..ac34f2642
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.7/S12.7_A1_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.
+
+/**
+ * Appearing of continue without an IterationStatement leads to syntax error
+ *
+ * @path ch12/12.7/S12.7_A1_T4.js
+ * @description Checking if execution of "continue" with no IterationStatement, placed into a block, fails
+ * @negative
+ */
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+{
+ var x=1;
+ continue;
+ var y=2;
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+
diff --git a/js/src/tests/test262/ch12/12.7/S12.7_A2.js b/js/src/tests/test262/ch12/12.7/S12.7_A2.js
new file mode 100644
index 000000000..3f76aa1a4
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.7/S12.7_A2.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.
+
+/**
+ * Since LineTerminator between "continue" and Identifier is not allowed, "continue" is evaluated without label
+ *
+ * @path ch12/12.7/S12.7_A2.js
+ * @description Checking by using eval, inserting LineTerminator between continue and Identifier
+ */
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+try{
+ eval("FOR1 : for(var i=1;i<2;i++){FOR1NESTED : for(var j=1;j<2;j++) { continue\u000AFOR1; } while(0);}");
+ if (j!==2) {
+ $ERROR('#1: Since LineTerminator(U-000A) between continue and Identifier not allowed continue evaluates without label');
+ }
+} catch(e){
+ $ERROR('#1.1: eval("FOR1 : for(var i=1;i<2;i++){FOR1NESTED : for(var j=1;j<2;j++) { continue\\u000AFOR1; } while(0);}") does not lead to throwing exception');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+try{
+ eval("FOR2 : for(var i=1;i<2;i++){FOR2NESTED : for(var j=1;j<2;j++) { continue\u000DFOR2; } while(0);}");
+ if (j!==2) {
+ $ERROR('#2: Since LineTerminator(U-000D) between continue and Identifier not allowed continue evaluates without label');
+ }
+} catch(e){
+ $ERROR('#2.1: eval("FOR2 : for(var i=1;i<2;i++){FOR2NESTED : for(var j=1;j<2;j++) { continue\\u000DFOR2; } while(0);}") does not lead to throwing exception');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+try{
+ eval("FOR3 : for(var i=1;i<2;i++){FOR3NESTED : for(var j=1;j<2;j++) { continue\u2028FOR3; } while(0);}");
+ if (j!==2) {
+ $ERROR('#3: Since LineTerminator(U-2028) between continue and Identifier not allowed continue evaluates without label');
+ }
+} catch(e){
+ $ERROR('#3.1: eval("FOR3 : for(var i=1;i<2;i++){FOR3NESTED : for(var j=1;j<2;j++) { continue\\u2028FOR3; } while(0);}") does not lead to throwing exception');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#4
+try{
+ eval("FOR4 : for(var i=1;i<2;i++){FOR4NESTED : for(var j=1;j<2;j++) { continue\u2029FOR4; } while(0);}");
+ if (j!==2) {
+ $ERROR('#4: Since LineTerminator(U-2029) between continue and Identifier not allowed continue evaluates without label');
+ }
+} catch(e){
+ $ERROR('#4.1: eval("FOR4 : for(var i=1;i<2;i++){FOR4NESTED : for(var j=1;j<2;j++) { continue\\u2029FOR4; } while(0);}"); does not lead to throwing exception');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+
+
diff --git a/js/src/tests/test262/ch12/12.7/S12.7_A5_T1.js b/js/src/tests/test262/ch12/12.7/S12.7_A5_T1.js
new file mode 100644
index 000000000..14a8b5f7a
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.7/S12.7_A5_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.
+
+/**
+ * When "continue Identifier" is evaluated Identifier must be label in the label set of an enclosing (but not crossing function boundaries) IterationStatement
+ *
+ * @path ch12/12.7/S12.7_A5_T1.js
+ * @description Trying to continue another labeled loop
+ * @negative
+ */
+
+LABEL_OUT : var x=0, y=0;
+LABEL_DO_LOOP : do {
+ LABEL_IN : x++;
+ if(x===10)break;
+ continue LABEL_ANOTHER_LOOP;
+ LABEL_IN_2 : y++;
+ function IN_DO_FUNC(){}
+} while(0);
+
+LABEL_ANOTHER_LOOP : do {
+ ;
+} while(0);
+
+function OUT_FUNC(){}
+
diff --git a/js/src/tests/test262/ch12/12.7/S12.7_A5_T2.js b/js/src/tests/test262/ch12/12.7/S12.7_A5_T2.js
new file mode 100644
index 000000000..1d3f7e9c1
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.7/S12.7_A5_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.
+
+/**
+ * When "continue Identifier" is evaluated Identifier must be label in the label set of an enclosing (but not crossing function boundaries) IterationStatement
+ *
+ * @path ch12/12.7/S12.7_A5_T2.js
+ * @description Identifier is a function name
+ * @negative
+ */
+
+LABEL_OUT : var x=0, y=0;
+LABEL_DO_LOOP : do {
+ LABEL_IN : x++;
+ if(x===10)break;
+ continue IN_DO_FUNC;
+ LABEL_IN_2 : y++;
+ function IN_DO_FUNC(){}
+} while(0);
+
+LABEL_ANOTHER_LOOP : do {
+ ;
+} while(0);
+
+function OUT_FUNC(){};
+
diff --git a/js/src/tests/test262/ch12/12.7/S12.7_A5_T3.js b/js/src/tests/test262/ch12/12.7/S12.7_A5_T3.js
new file mode 100644
index 000000000..16babd629
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.7/S12.7_A5_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.
+
+/**
+ * When "continue Identifier" is evaluated Identifier must be label in the label set of an enclosing (but not crossing function boundaries) IterationStatement
+ *
+ * @path ch12/12.7/S12.7_A5_T3.js
+ * @description Identifier is within loop label
+ * @negative
+ */
+
+LABEL_OUT : var x=0, y=0;
+
+LABEL_DO_LOOP : do {
+ LABEL_IN : x++;
+ if(x===10)break;
+ continue LABEL_IN;
+ LABEL_IN_2 : y++;
+ function IN_DO_FUNC(){}
+} while(0);
+
+LABEL_ANOTHER_LOOP : do {
+ ;
+} while(0);
+
+function OUT_FUNC(){}
+
diff --git a/js/src/tests/test262/ch12/12.7/S12.7_A6.js b/js/src/tests/test262/ch12/12.7/S12.7_A6.js
new file mode 100644
index 000000000..11bb439aa
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.7/S12.7_A6.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.
+
+/**
+ * Appearing of "continue" within a function call that is within an IterationStatement yields SyntaxError
+ *
+ * @path ch12/12.7/S12.7_A6.js
+ * @description Using labaled "continue Identifier" within a function body
+ * @negative
+ */
+
+var x=0,y=0;
+
+LABEL1 : do {
+ x++;
+ (function(){continue LABEL1;})();
+ y++;
+} while(0);
+
diff --git a/js/src/tests/test262/ch12/12.7/S12.7_A7.js b/js/src/tests/test262/ch12/12.7/S12.7_A7.js
new file mode 100644
index 000000000..c43f701e1
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.7/S12.7_A7.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.
+
+/**
+ * Appearing of continue within eval statement that is within an IterationStatement yields SyntaxError
+ *
+ * @path ch12/12.7/S12.7_A7.js
+ * @description Using eval "eval("continue LABEL1")"
+ */
+
+var x=0,y=0;
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+try{
+ LABEL1 : do {
+ x++;
+ eval("continue LABEL1");
+ y++;
+ } while(0);
+ $ERROR('#1: eval("continue LABEL1") does not lead to throwing exception');
+} catch(e){
+ if(!(e instanceof SyntaxError)){
+ $ERROR("1.1: Appearing of continue within eval statement inside of IterationStatement yields SyntaxError");
+ }
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch12/12.7/S12.7_A8_T1.js b/js/src/tests/test262/ch12/12.7/S12.7_A8_T1.js
new file mode 100644
index 000000000..76f8538a8
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.7/S12.7_A8_T1.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.
+
+/**
+ * Appearing of "continue" within a "try/catch" Block yields SyntaxError
+ *
+ * @path ch12/12.7/S12.7_A8_T1.js
+ * @description Checking if execution of "continue Identifier" within catch Block fails
+ * @negative
+ */
+
+var x=0,y=0;
+
+try{
+ LABEL1 : do {
+ x++;
+ throw "gonna leave it";
+ y++;
+ } while(0);
+ $ERROR('#1: throw "gonna leave it" lead to throwing exception');
+} catch(e){
+ continue LABEL2;
+ LABEL2 : do {
+ x++;
+ y++;
+ } while(0);
+};
+
diff --git a/js/src/tests/test262/ch12/12.7/S12.7_A8_T2.js b/js/src/tests/test262/ch12/12.7/S12.7_A8_T2.js
new file mode 100644
index 000000000..4d6f48e8b
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.7/S12.7_A8_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.
+
+/**
+ * Appearing of "continue" within a "try/catch" Block yields SyntaxError
+ *
+ * @path ch12/12.7/S12.7_A8_T2.js
+ * @description Checking if execution of "continue" within catch Block fails
+ * @negative
+ */
+
+var x=0,y=0;
+
+try{
+ LABEL1 : do {
+ x++;
+ throw "gonna leave it";
+ y++;
+ } while(0);
+ $ERROR('#1: throw "gonna leave it" lead to throwing exception');
+} catch(e){
+ continue;
+ LABEL2 : do {
+ x++;
+ y++;
+ } while(0);
+};
+
diff --git a/js/src/tests/test262/ch12/12.7/S12.7_A9_T1.js b/js/src/tests/test262/ch12/12.7/S12.7_A9_T1.js
new file mode 100644
index 000000000..e6ab1f542
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.7/S12.7_A9_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.
+
+/**
+ * Continue inside of try-catch nested in a loop is allowed
+ *
+ * @path ch12/12.7/S12.7_A9_T1.js
+ * @description Using "continue Identifier" within catch Block that is within a loop
+ */
+
+var x=0,y=0;
+
+(function(){
+FOR : for(;;){
+ try{
+ x++;
+ if(x===10)return;
+ throw 1;
+ } catch(e){
+ continue FOR;
+ }
+}
+})();
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (x!==10) {
+ $ERROR('#1: Continue inside of try-catch nested in loop is allowed');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch12/12.7/S12.7_A9_T2.js b/js/src/tests/test262/ch12/12.7/S12.7_A9_T2.js
new file mode 100644
index 000000000..8763414eb
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.7/S12.7_A9_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.
+
+/**
+ * Continue inside of try-catch nested in a loop is allowed
+ *
+ * @path ch12/12.7/S12.7_A9_T2.js
+ * @description Using "continue" within catch Block that is within a loop
+ */
+
+var x=0,y=0;
+
+(function(){
+FOR : for(;;){
+ try{
+ x++;
+ if(x===10)return;
+ throw 1;
+ } catch(e){
+ continue;
+ }
+}
+})();
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (x!==10) {
+ $ERROR('#1: Continue inside of try-catch nested in loop is allowed');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch12/12.7/browser.js b/js/src/tests/test262/ch12/12.7/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.7/browser.js
diff --git a/js/src/tests/test262/ch12/12.7/shell.js b/js/src/tests/test262/ch12/12.7/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.7/shell.js
diff --git a/js/src/tests/test262/ch12/12.8/12.8-1.js b/js/src/tests/test262/ch12/12.8/12.8-1.js
new file mode 100644
index 000000000..e32f54168
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.8/12.8-1.js
@@ -0,0 +1,23 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch12/12.8/12.8-1.js
+ * @description The break Statement - a break statement without an identifier may have a LineTerminator before the semi-colon
+ */
+
+
+function testcase() {
+ var sum = 0;
+ for (var i = 1; i <= 10; i++) {
+ if (i === 6) {
+ break
+ ;
+ }
+ sum += i;
+ }
+ return sum === 15;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch12/12.8/S12.8_A1_T1.js b/js/src/tests/test262/ch12/12.8/S12.8_A1_T1.js
new file mode 100644
index 000000000..546e66780
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.8/S12.8_A1_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.
+
+/**
+ * Appearing of break without an IterationStatement leads to syntax error
+ *
+ * @path ch12/12.8/S12.8_A1_T1.js
+ * @description Checking if break statement with no loop fails
+ * @negative
+ */
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+var x=1;
+break;
+var y=2;
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch12/12.8/S12.8_A1_T2.js b/js/src/tests/test262/ch12/12.8/S12.8_A1_T2.js
new file mode 100644
index 000000000..c141c7722
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.8/S12.8_A1_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.
+
+/**
+ * Appearing of break without an IterationStatement leads to syntax error
+ *
+ * @path ch12/12.8/S12.8_A1_T2.js
+ * @description Checking if break Identifier with no loop fails
+ * @negative
+ */
+
+LABEL : x=3.14;
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+var x=1;
+break LABEL;
+var y=2;
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch12/12.8/S12.8_A1_T3.js b/js/src/tests/test262/ch12/12.8/S12.8_A1_T3.js
new file mode 100644
index 000000000..6627be368
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.8/S12.8_A1_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.
+
+/**
+ * Appearing of break without an IterationStatement leads to syntax error
+ *
+ * @path ch12/12.8/S12.8_A1_T3.js
+ * @description Checking if break statement with no loop, placed into a block, fails
+ * @negative
+ */
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+{
+ var x=1;
+ break;
+ var y=2;
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch12/12.8/S12.8_A1_T4.js b/js/src/tests/test262/ch12/12.8/S12.8_A1_T4.js
new file mode 100644
index 000000000..1663fc5f5
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.8/S12.8_A1_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.
+
+/**
+ * Appearing of break without an IterationStatement leads to syntax error
+ *
+ * @path ch12/12.8/S12.8_A1_T4.js
+ * @description Checking if break Identifier with no loop, placed into a block, fails
+ * @negative
+ */
+
+LABEL : x=3.14;
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+{
+ var x=1;
+ break LABEL;
+ var y=2;
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch12/12.8/S12.8_A2.js b/js/src/tests/test262/ch12/12.8/S12.8_A2.js
new file mode 100644
index 000000000..a1154aeca
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.8/S12.8_A2.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.
+
+/**
+ * Since LineTerminator between "break" and Identifier is not allowed, "break" is evaluated without label
+ *
+ * @path ch12/12.8/S12.8_A2.js
+ * @description Checking by using eval, inserting LineTerminator between break and Identifier
+ */
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+try{
+ eval("FOR1 : for(var i=1;i<2;i++){ LABEL1 : do {var x =1;break\u000AFOR1;var y=2;} while(0);}");
+ if (i!==2) {
+ $ERROR('#1: Since LineTerminator(U-000A) between break and Identifier not allowed break evaluates without label');
+ }
+} catch(e){
+ $ERROR('#1.1: eval("FOR1 : for(var i=1;i<2;i++){ LABEL1 : do {var x =1;break\\u000AFOR1;var y=2;} while(0);}") does not lead to throwing exception');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+try{
+ eval("FOR2 : for(var i=1;i<2;i++){ LABEL2 : do {var x =1;break\u000DFOR2;var y=2;} while(0);}");
+ if (i!==2) {
+ $ERROR('#2: Since LineTerminator(U-000D) between break and Identifier not allowed break evaluates without label');
+ }
+} catch(e){
+ $ERROR('#2.1: eval("FOR2 : for(var i=1;i<2;i++){ LABEL2 : do {var x =1;break\\u000DFOR2;var y=2;} while(0);}") does not lead to throwing exception');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+try{
+ eval("FOR3 : for(var i=1;i<2;i++){ LABEL3 : do {var x =1;break\u2028FOR3;var y=2;} while(0);}");
+ if (i!==2) {
+ $ERROR('#3: Since LineTerminator(U-2028) between break and Identifier not allowed break evaluates without label');
+ }
+} catch(e){
+ $ERROR('#3.1: eval("FOR3 : for(var i=1;i<2;i++){ LABEL3 : do {var x =1;break\\u2028FOR3;var y=2;} while(0);}") does not lead to throwing exception');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#4
+try{
+ eval("FOR4 : for(var i=1;i<2;i++){ LABEL4 : do {var x =1;break\u2029FOR4;var y=2;} while(0);}");
+ if (i!==2) {
+ $ERROR('#4: Since LineTerminator(U-2029) between break and Identifier not allowed break evaluates without label');
+ }
+} catch(e){
+ $ERROR('#4.1: eval("FOR4 : for(var i=1;i<2;i++){ LABEL4 : do {var x =1;break\\u2029FOR4;var y=2;} while(0);}") does not lead to throwing exception');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+
+
diff --git a/js/src/tests/test262/ch12/12.8/S12.8_A3.js b/js/src/tests/test262/ch12/12.8/S12.8_A3.js
new file mode 100644
index 000000000..d2aaa5ad3
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.8/S12.8_A3.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.
+
+/**
+ * When "break" is evaluated, (break, empty, empty) is returned
+ *
+ * @path ch12/12.8/S12.8_A3.js
+ * @description Using "break" without Identifier within labeled loop
+ */
+
+LABEL_OUT : var x=0, y=0;
+
+LABEL_DO_LOOP : do {
+ LABEL_IN : x=2;
+ break ;
+ LABEL_IN_2 : var y=2;
+
+ function IN_DO_FUNC(){}
+} while(0);
+
+LABEL_ANOTHER_LOOP : do {
+ ;
+} while(0);
+
+function OUT_FUNC(){}
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if ((x!==2)&&(y!==0)) {
+ $ERROR('#1: x === 2 and y === 0. Actual: x ==='+x+' and y ==='+y);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch12/12.8/S12.8_A4_T1.js b/js/src/tests/test262/ch12/12.8/S12.8_A4_T1.js
new file mode 100644
index 000000000..86e258a4e
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.8/S12.8_A4_T1.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.
+
+/**
+ * When "break Identifier" is evaluated, (break, empty, Identifier) is returned
+ *
+ * @path ch12/12.8/S12.8_A4_T1.js
+ * @description Using "break Identifier" within labaeled loop
+ */
+
+LABEL_OUT : var x=0, y=0;
+(function(){
+LABEL_DO_LOOP : do {
+ LABEL_IN : x++;
+ if(x===10)return;
+ break LABEL_DO_LOOP;
+ LABEL_IN_2 : y++;
+
+ function IN_DO_FUNC(){}
+} while(0);
+
+LABEL_ANOTHER_LOOP : do {
+ ;
+} while(0);
+
+function OUT_FUNC(){}
+})();
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if ((x!==1)&&(y!==0)) {
+ $ERROR('#1: x === 1 and y === 0. Actual: x === '+x+' and y ==='+ y );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch12/12.8/S12.8_A4_T2.js b/js/src/tests/test262/ch12/12.8/S12.8_A4_T2.js
new file mode 100644
index 000000000..8662cf829
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.8/S12.8_A4_T2.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.
+
+/**
+ * When "break Identifier" is evaluated, (break, empty, Identifier) is returned
+ *
+ * @path ch12/12.8/S12.8_A4_T2.js
+ * @description Using embedded and labeled loops, breaking to nested loop
+ */
+
+LABEL_OUT : var x=0, y=0, xx=0, yy=0;
+(function(){
+LABEL_DO_LOOP : do {
+ LABEL_IN : x++;
+ if(x===10)return;
+ LABEL_NESTED_LOOP : do {
+ LABEL_IN_NESTED : xx++;
+ if(xx===10)return;
+ break LABEL_NESTED_LOOP;
+ LABEL_IN_NESTED_2 : yy++;
+ } while (0);
+
+ LABEL_IN_2 : y++;
+
+ function IN_DO_FUNC(){}
+} while(0);
+
+LABEL_ANOTHER_LOOP : do {
+ ;
+} while(0);
+
+function OUT_FUNC(){}
+})();
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if ((x!==1)&&(y!==1)&&(xx!==1)&(yy!==0)) {
+ $ERROR('#1: x === 1 and y === 1 and xx === 1 and yy === 0. Actual: x==='+x+' and y==='+y+' and xx==='+xx+' and yy==='+yy );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch12/12.8/S12.8_A4_T3.js b/js/src/tests/test262/ch12/12.8/S12.8_A4_T3.js
new file mode 100644
index 000000000..7ca7fc2d6
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.8/S12.8_A4_T3.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.
+
+/**
+ * When "break Identifier" is evaluated, (break, empty, Identifier) is returned
+ *
+ * @path ch12/12.8/S12.8_A4_T3.js
+ * @description Using embedded and labeled loops, breaking to outer loop
+ */
+
+LABEL_OUT : var x=0, y=0, xx=0, yy=0;
+(function(){
+LABEL_DO_LOOP : do {
+ LABEL_IN : x++;
+ if(x===10)return;
+ LABEL_NESTED_LOOP : do {
+ LABEL_IN_NESTED : xx++;
+ if(xx===10)return;
+ break LABEL_DO_LOOP;
+ LABEL_IN_NESTED_2 : yy++;
+ } while (0);
+
+ LABEL_IN_2 : y++;
+
+ function IN_DO_FUNC(){}
+} while(0);
+
+LABEL_ANOTHER_LOOP : do {
+ ;
+} while(0);
+
+function OUT_FUNC(){}
+})();
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if ((x!==1)&&(y!==0)&&(xx!==1)&(yy!==0)) {
+ $ERROR('#1: x === 1 and y === 0 and xx === 1 and yy === 0. Actual: x==='+x+' and y==='+y+' and xx==='+xx+' and yy==='+yy );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch12/12.8/S12.8_A5_T1.js b/js/src/tests/test262/ch12/12.8/S12.8_A5_T1.js
new file mode 100644
index 000000000..34fbed938
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.8/S12.8_A5_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.
+
+/**
+ * Identifier must be label in the label set of an enclosing (but not crossing function boundaries) IterationStatement
+ *
+ * @path ch12/12.8/S12.8_A5_T1.js
+ * @description Checking if breaking another labeled loop fails
+ * @negative
+ */
+
+(function(){
+ LABEL_OUT : var x=0, y=0;
+ LABEL_DO_LOOP : do {
+ LABEL_IN : x++;
+ if(x===10)
+ return;
+ break LABEL_ANOTHER_LOOP;
+ LABEL_IN_2 : y++;
+ function IN_DO_FUNC(){}
+ } while(0);
+
+ LABEL_ANOTHER_LOOP : do {
+ ;
+ } while(0);
+
+ function OUT_FUNC(){}
+})();
+
diff --git a/js/src/tests/test262/ch12/12.8/S12.8_A5_T2.js b/js/src/tests/test262/ch12/12.8/S12.8_A5_T2.js
new file mode 100644
index 000000000..f843c3bb1
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.8/S12.8_A5_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.
+
+/**
+ * Identifier must be label in the label set of an enclosing (but not crossing function boundaries) IterationStatement
+ *
+ * @path ch12/12.8/S12.8_A5_T2.js
+ * @description Checking if using function name as an Identifier appears to be invalid
+ * @negative
+ */
+
+(function(){
+ LABEL_OUT : var x=0, y=0;
+ LABEL_DO_LOOP : do {
+ LABEL_IN : x++;
+ if(x===10)
+ return;
+ break IN_DO_FUNC;
+ LABEL_IN_2 : y++;
+ function IN_DO_FUNC(){}
+ } while(0);
+
+ LABEL_ANOTHER_LOOP : do {
+ ;
+ } while(0);
+
+ function OUT_FUNC(){}
+})();
+
diff --git a/js/src/tests/test262/ch12/12.8/S12.8_A5_T3.js b/js/src/tests/test262/ch12/12.8/S12.8_A5_T3.js
new file mode 100644
index 000000000..d6f930705
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.8/S12.8_A5_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.
+
+/**
+ * Identifier must be label in the label set of an enclosing (but not crossing function boundaries) IterationStatement
+ *
+ * @path ch12/12.8/S12.8_A5_T3.js
+ * @description Checking if using internal loop label as an Identifier appears to be invalid
+ * @negative
+ */
+
+(function(){
+ LABEL_OUT : var x=0, y=0;
+ LABEL_DO_LOOP : do {
+ LABEL_IN : x++;
+ if(x===10)
+ return;
+ break LABEL_IN;
+ LABEL_IN_2 : y++;
+
+ function IN_DO_FUNC(){}
+
+ } while(0);
+
+ LABEL_ANOTHER_LOOP : do {
+ ;
+ } while(0);
+
+ function OUT_FUNC(){}
+
+})();
+
diff --git a/js/src/tests/test262/ch12/12.8/S12.8_A6.js b/js/src/tests/test262/ch12/12.8/S12.8_A6.js
new file mode 100644
index 000000000..264f74d86
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.8/S12.8_A6.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.
+
+/**
+ * Appearing of "break" within a function call that is nested in a IterationStatement yields SyntaxError
+ *
+ * @path ch12/12.8/S12.8_A6.js
+ * @description Checking if using "break Identifier" within a function body appears to be invalid
+ * @negative
+ */
+
+var x=0,y=0;
+
+LABEL1 : do {
+ x++;
+ (function(){break LABEL1;})();
+ y++;
+} while(0);
+
diff --git a/js/src/tests/test262/ch12/12.8/S12.8_A7.js b/js/src/tests/test262/ch12/12.8/S12.8_A7.js
new file mode 100644
index 000000000..a5f5bebaf
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.8/S12.8_A7.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.
+
+/**
+ * Appearing of "break" within eval statement that is nested in an IterationStatement yields SyntaxError
+ *
+ * @path ch12/12.8/S12.8_A7.js
+ * @description Using eval "eval("break LABEL1")"
+ */
+
+var x=0,y=0;
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+try{
+ LABEL1 : do {
+ x++;
+ eval("break LABEL1");
+ y++;
+ } while(0);
+ $ERROR('#1: eval("break LABEL1") does not lead to throwing exception');
+} catch(e){
+ if(!(e instanceof SyntaxError)){
+ $ERROR("1.1: Appearing of break within eval statement inside of IterationStatement yields SyntaxError");
+ }
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch12/12.8/S12.8_A8_T1.js b/js/src/tests/test262/ch12/12.8/S12.8_A8_T1.js
new file mode 100644
index 000000000..cbcba7f69
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.8/S12.8_A8_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.
+
+/**
+ * Appearing of "break" within "try/catch" Block yields SyntaxError
+ *
+ * @path ch12/12.8/S12.8_A8_T1.js
+ * @description Checking if using "break Identifier" from within catch Block appears to be invalid
+ * @negative
+ */
+
+var x=0,y=0;
+
+try{
+ LABEL1 : do {
+ x++;
+ throw "gonna leave it";
+ y++;
+ } while(0);
+ $ERROR('#1: throw "gonna leave it" lead to throwing exception');
+} catch(e){
+ break LABEL2;
+ LABEL2 : do {
+ x++;
+ y++;
+ } while(0);
+}
+
+
diff --git a/js/src/tests/test262/ch12/12.8/S12.8_A8_T2.js b/js/src/tests/test262/ch12/12.8/S12.8_A8_T2.js
new file mode 100644
index 000000000..92771babf
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.8/S12.8_A8_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.
+
+/**
+ * Appearing of "break" within "try/catch" Block yields SyntaxError
+ *
+ * @path ch12/12.8/S12.8_A8_T2.js
+ * @description Checking if using "break Identifier" from within catch Block appears to be invalid
+ * @negative
+ */
+
+var x=0,y=0;
+
+try{
+ LABEL1 : do {
+ x++;
+ throw "gonna leave it";
+ y++;
+ } while(0);
+ $ERROR('#1: throw "gonna leave it" lead to throwing exception');
+} catch(e){
+ break;
+ LABEL2 : do {
+ x++;
+ y++;
+ } while(0);
+}
+
+
diff --git a/js/src/tests/test262/ch12/12.8/S12.8_A9_T1.js b/js/src/tests/test262/ch12/12.8/S12.8_A9_T1.js
new file mode 100644
index 000000000..60da11ef2
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.8/S12.8_A9_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.
+
+/**
+ * Using "break" within "try/catch" statement that is nested in a loop is allowed
+ *
+ * @path ch12/12.8/S12.8_A9_T1.js
+ * @description Using "continue Identifier" within "catch" statement
+ */
+
+var x=0,y=0;
+
+(function(){
+FOR : for(;;){
+ try{
+ x++;
+ if(x===10)return;
+ throw 1;
+ } catch(e){
+ break FOR;
+ }
+}
+})();
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (x!==1) {
+ $ERROR('#1: break inside of try-catch nested in loop is allowed');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch12/12.8/S12.8_A9_T2.js b/js/src/tests/test262/ch12/12.8/S12.8_A9_T2.js
new file mode 100644
index 000000000..53dc3555c
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.8/S12.8_A9_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.
+
+/**
+ * Using "break" within "try/catch" statement that is nested in a loop is allowed
+ *
+ * @path ch12/12.8/S12.8_A9_T2.js
+ * @description Using "continue Identifier" within "catch" statement
+ */
+
+var x=0,y=0;
+
+(function(){
+FOR : for(;;){
+ try{
+ x++;
+ if(x===10)return;
+ throw 1;
+ } catch(e){
+ break ;
+ }
+}
+})();
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (x!==1) {
+ $ERROR('#1: break inside of try-catch nested in loop is allowed');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch12/12.8/browser.js b/js/src/tests/test262/ch12/12.8/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.8/browser.js
diff --git a/js/src/tests/test262/ch12/12.8/shell.js b/js/src/tests/test262/ch12/12.8/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.8/shell.js
diff --git a/js/src/tests/test262/ch12/12.9/12.9-1.js b/js/src/tests/test262/ch12/12.9/12.9-1.js
new file mode 100644
index 000000000..098042e93
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.9/12.9-1.js
@@ -0,0 +1,25 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch12/12.9/12.9-1.js
+ * @description The return Statement - a return statement without an expression may have a LineTerminator before the semi-colon
+ */
+
+
+function testcase() {
+ var sum = 0;
+ (function innerTest() {
+ for (var i = 1; i <= 10; i++) {
+ if (i === 6) {
+ return
+ ;
+ }
+ sum += i;
+ }
+ })();
+ return sum === 15;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch12/12.9/S12.9_A1_T1.js b/js/src/tests/test262/ch12/12.9/S12.9_A1_T1.js
new file mode 100644
index 000000000..a4115f7ec
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.9/S12.9_A1_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.
+
+/**
+ * Appearing of "return" without a function body leads to syntax error
+ *
+ * @path ch12/12.9/S12.9_A1_T1.js
+ * @description Checking if execution of "return" with no function fails
+ * @negative
+ */
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+var x=1;
+return;
+var y=2;
+
diff --git a/js/src/tests/test262/ch12/12.9/S12.9_A1_T10.js b/js/src/tests/test262/ch12/12.9/S12.9_A1_T10.js
new file mode 100644
index 000000000..63bcd816c
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.9/S12.9_A1_T10.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.
+
+/**
+ * Appearing of "return" without a function body leads to syntax error
+ *
+ * @path ch12/12.9/S12.9_A1_T10.js
+ * @description Checking if execution of "return (0)" with no function fails
+ * @negative
+ */
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+return (0);
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch12/12.9/S12.9_A1_T2.js b/js/src/tests/test262/ch12/12.9/S12.9_A1_T2.js
new file mode 100644
index 000000000..74f657b60
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.9/S12.9_A1_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.
+
+/**
+ * Appearing of "return" without a function body leads to syntax error
+ *
+ * @path ch12/12.9/S12.9_A1_T2.js
+ * @description Checking if execution of "return x" with no function fails
+ * @negative
+ */
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+var x=1;
+return x;
+var y=2;
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch12/12.9/S12.9_A1_T3.js b/js/src/tests/test262/ch12/12.9/S12.9_A1_T3.js
new file mode 100644
index 000000000..8f22b8859
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.9/S12.9_A1_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.
+
+/**
+ * Appearing of "return" without a function body leads to syntax error
+ *
+ * @path ch12/12.9/S12.9_A1_T3.js
+ * @description Checking if execution of "return" within "try" statement fails
+ * @negative
+ */
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+try {
+ return 1;
+} catch(e){
+ return 1;
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch12/12.9/S12.9_A1_T4.js b/js/src/tests/test262/ch12/12.9/S12.9_A1_T4.js
new file mode 100644
index 000000000..3add975cb
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.9/S12.9_A1_T4.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.
+
+/**
+ * Appearing of "return" without a function body leads to syntax error
+ *
+ * @path ch12/12.9/S12.9_A1_T4.js
+ * @description Checking if execution of "return" with no function fails
+ * @negative
+ */
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+return;
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch12/12.9/S12.9_A1_T5.js b/js/src/tests/test262/ch12/12.9/S12.9_A1_T5.js
new file mode 100644
index 000000000..a53d7c764
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.9/S12.9_A1_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.
+
+/**
+ * Appearing of "return" without a function body leads to syntax error
+ *
+ * @path ch12/12.9/S12.9_A1_T5.js
+ * @description Checking if execution of "return" with no function, placed into a Block, fails
+ * @negative
+ */
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+{
+ var x=1;
+ return;
+ var y=2;
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch12/12.9/S12.9_A1_T6.js b/js/src/tests/test262/ch12/12.9/S12.9_A1_T6.js
new file mode 100644
index 000000000..aea6ec977
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.9/S12.9_A1_T6.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.
+
+/**
+ * Appearing of "return" without a function body leads to syntax error
+ *
+ * @path ch12/12.9/S12.9_A1_T6.js
+ * @description Checking if execution of "return" with no function, placed into a loop, fails
+ * @negative
+ */
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+do {
+ var x=1;
+ return;
+ var y=2;
+} while(0);
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch12/12.9/S12.9_A1_T7.js b/js/src/tests/test262/ch12/12.9/S12.9_A1_T7.js
new file mode 100644
index 000000000..ad863d473
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.9/S12.9_A1_T7.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.
+
+/**
+ * Appearing of "return" without a function body leads to syntax error
+ *
+ * @path ch12/12.9/S12.9_A1_T7.js
+ * @description Checking if execution of "return x" with no function, placed inside Block, fails
+ * @negative
+ */
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+{
+ var x=1;
+ return x;
+ var y=2;
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch12/12.9/S12.9_A1_T8.js b/js/src/tests/test262/ch12/12.9/S12.9_A1_T8.js
new file mode 100644
index 000000000..edfbd1660
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.9/S12.9_A1_T8.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.
+
+/**
+ * Appearing of "return" without a function body leads to syntax error
+ *
+ * @path ch12/12.9/S12.9_A1_T8.js
+ * @description Checking if execution of "return x" with no function, placed into a loop, fails
+ * @negative
+ */
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+do {
+ var x=1;
+ return x;
+ var y=2;
+} while(0);
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch12/12.9/S12.9_A1_T9.js b/js/src/tests/test262/ch12/12.9/S12.9_A1_T9.js
new file mode 100644
index 000000000..57e39aee7
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.9/S12.9_A1_T9.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.
+
+/**
+ * Appearing of "return" without a function body leads to syntax error
+ *
+ * @path ch12/12.9/S12.9_A1_T9.js
+ * @description Checking if execution of "return", placed into a catch Block, fails
+ * @negative
+ */
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+try {
+ throw 1;
+} catch(e){
+ return e;
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch12/12.9/S12.9_A2.js b/js/src/tests/test262/ch12/12.9/S12.9_A2.js
new file mode 100644
index 000000000..177205dbb
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.9/S12.9_A2.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.
+
+/**
+ * LineTerminator between return and Identifier_opt yields return without Identifier_opt
+ *
+ * @path ch12/12.9/S12.9_A2.js
+ * @description Checking by using eval, inserting LineTerminator between return and Variable
+ */
+
+//CHECK#1
+try{
+ if (eval("(function(){var x = 1;return\u000Ax;var y=2;})()") !== undefined) {
+ $ERROR("#1: LineTerminator(U-000A) between return and Identifier_opt yields return without Identifier_opt");
+ }
+} catch(e){
+ $ERROR('#1: eval("(function(){var x = 1;return\\u000Ax;var y=2;})()") does not lead to throwing exception');
+}
+
+
+
+
+//CHECK#2
+try{
+ if (eval("(function(){var x = 1;return\u000Dx;var y=2;})()") !== undefined) {
+ $ERROR("#1: LineTerminator(U-000D) between return and Identifier_opt yields return without Identifier_opt");
+ }
+} catch(e){
+ $ERROR('#2: eval("(function(){var x = 1;return\\u000Dx;var y=2;})()") does not lead to throwing exception');
+}
+
+
+
+
+//CHECK#3
+try{
+ if (eval("(function(){var x = 1;return\u2028x;var y=2;})()") !== undefined) {
+ $ERROR("#1: LineTerminator(U-2028) between return and Identifier_opt yields return without Identifier_opt");
+ }
+} catch(e){
+ $ERROR('#3: eval("(function(){var x = 1;return\\u2028x;var y=2;})()") does not lead to throwing exception');
+}
+
+
+
+
+//CHECK#4
+try{
+ if (eval("(function(){var x =1;return\u2029x;var y=2;})()") !== undefined) {
+ $ERROR("#1: LineTerminator(U-2029) between return and Identifier_opt yields return without Identifier_opt");
+ }
+} catch(e){
+ $ERROR('#4: eval("(function(){var x =1;return\\u2029x;var y=2;})()") does not lead to throwing exception');
+}
+
diff --git a/js/src/tests/test262/ch12/12.9/S12.9_A3.js b/js/src/tests/test262/ch12/12.9/S12.9_A3.js
new file mode 100644
index 000000000..95b87c363
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.9/S12.9_A3.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.
+
+/**
+ * If Expression is omitted, the return value is undefined
+ *
+ * @path ch12/12.9/S12.9_A3.js
+ * @description Return without Expression
+ */
+
+__evaluated = (function (){return;})();
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__evaluated !== undefined) {
+ $ERROR('#1: If Expression is omitted, the return value is undefined');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch12/12.9/S12.9_A4.js b/js/src/tests/test262/ch12/12.9/S12.9_A4.js
new file mode 100644
index 000000000..97c923979
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.9/S12.9_A4.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.
+
+/**
+ * The production ReturnStatement : return Expression; is evaluated as:
+ * i) Evaluate Expression.
+ * ii) Call GetValue(Result(2)).
+ * iii) Return (return, Result(3), empty)
+ *
+ * @path ch12/12.9/S12.9_A4.js
+ * @description Return very sophisticated expression and function
+ */
+
+// second derivative
+function DD_operator(f, delta){return function(x){return (f(x+delta)-2*f(x)+f(x-delta))/(delta*delta)};}
+
+DDsin = DD_operator(Math.sin, 0.00001);
+
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+// ((sin(x))')' = -sin(x)
+if (DDsin( Math.PI/2 ) + Math.sin( Math.PI/2 ) > 0.00001) {
+ $ERROR('#1: return Expression yields to Return (return, GetValue(Evaluate Expression), empty)');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch12/12.9/S12.9_A5.js b/js/src/tests/test262/ch12/12.9/S12.9_A5.js
new file mode 100644
index 000000000..3b0b98e43
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.9/S12.9_A5.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.
+
+/**
+ * Code after ReturnStatement is not evaluated
+ *
+ * @path ch12/12.9/S12.9_A5.js
+ * @description Using code after Return statement
+ */
+
+//CHECK#1
+var x1=1;
+function myfunc1(){
+ x1++;
+ return;
+ x1*=2;
+}
+myfunc1();
+if (x1!==2) $ERROR('#1: x1 === 2. Actual: x1 ==='+ x1 );
+
+//CHECK#2
+var x2=1;
+function myfunc2(){
+ x2++;
+ return x2;
+ x2*=2;
+}
+myfunc2();
+if (x2!==2) $ERROR('#2: x2 === 2. Actual: x2 ==='+ x2 );
+
+//CHECK#3
+var x3=1;
+function myfunc3(){
+ x3++;
+ return;
+ return x3;
+ x3*=2;
+}
+if (myfunc3()!==undefined) $ERROR('#3: myfunc3() === undefined. Actual: myfunc3() ==='+ myfunc3() );
+
diff --git a/js/src/tests/test262/ch12/12.9/browser.js b/js/src/tests/test262/ch12/12.9/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.9/browser.js
diff --git a/js/src/tests/test262/ch12/12.9/shell.js b/js/src/tests/test262/ch12/12.9/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch12/12.9/shell.js
diff --git a/js/src/tests/test262/ch12/browser.js b/js/src/tests/test262/ch12/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch12/browser.js
diff --git a/js/src/tests/test262/ch12/shell.js b/js/src/tests/test262/ch12/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch12/shell.js
diff --git a/js/src/tests/test262/ch13/13.0/13.0-1.js b/js/src/tests/test262/ch13/13.0/13.0-1.js
new file mode 100644
index 000000000..0873465b5
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.0/13.0-1.js
@@ -0,0 +1,20 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch13/13.0/13.0-1.js
+ * @description 13.0 - multiple names in one function declaration is not allowed, two function names
+ */
+
+
+function testcase() {
+ try {
+ eval("function x, y() {}");
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch13/13.0/13.0-10-s.js b/js/src/tests/test262/ch13/13.0/13.0-10-s.js
new file mode 100644
index 000000000..71af1f4e4
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.0/13.0-10-s.js
@@ -0,0 +1,32 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * Refer 13;
+ * The production FunctionBody : SourceElementsopt is evaluated as follows:
+ *
+ * @path ch13/13.0/13.0-10-s.js
+ * @description Strict Mode - SourceElements is evaluated as strict mode code when the code of this FunctionBody with an inner function contains a Use Strict Directive
+ * @onlyStrict
+ */
+
+
+function testcase() {
+
+ function _13_0_10_fun() {
+ function _13_0_10_inner() {
+ "use strict";
+ eval("eval = 42;");
+ }
+ _13_0_10_inner();
+ };
+ try {
+ _13_0_10_fun();
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch13/13.0/13.0-11-s.js b/js/src/tests/test262/ch13/13.0/13.0-11-s.js
new file mode 100644
index 000000000..5c623c054
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.0/13.0-11-s.js
@@ -0,0 +1,32 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * Refer 13;
+ * The production FunctionBody : SourceElementsopt is evaluated as follows:
+ *
+ * @path ch13/13.0/13.0-11-s.js
+ * @description Strict Mode - SourceElements is evaluated as strict mode code when the code of this FunctionBody with an inner function which is in strict mode
+ * @onlyStrict
+ */
+
+
+function testcase() {
+
+ function _13_0_11_fun() {
+ "use strict";
+ function _13_0_11_inner() {
+ eval("eval = 42;");
+ }
+ _13_0_11_inner();
+ };
+ try {
+ _13_0_11_fun();
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch13/13.0/13.0-12-s.js b/js/src/tests/test262/ch13/13.0/13.0-12-s.js
new file mode 100644
index 000000000..17d593f1e
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.0/13.0-12-s.js
@@ -0,0 +1,24 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * Refer 13;
+ * The production FunctionBody : SourceElementsopt is evaluated as follows:
+ *
+ * @path ch13/13.0/13.0-12-s.js
+ * @description Strict Mode - SourceElements is not evaluated as strict mode code when a Function constructor is contained in strict mode code and the function constructor body is not strict
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+
+ var _13_0_12_fun = new Function(" ","eval = 42;");
+ _13_0_12_fun();
+ return true;
+
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch13/13.0/13.0-13-s.js b/js/src/tests/test262/ch13/13.0/13.0-13-s.js
new file mode 100644
index 000000000..1e231e4aa
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.0/13.0-13-s.js
@@ -0,0 +1,25 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * Refer 13;
+ * The production FunctionBody : SourceElementsopt is evaluated as follows:
+ *
+ * @path ch13/13.0/13.0-13-s.js
+ * @description Strict Mode - SourceElements is evaluated as strict mode code when the function body of a Function constructor begins with a Strict Directive
+ * @onlyStrict
+ */
+
+
+function testcase() {
+
+ try {
+ eval("var _13_0_13_fun = new Function(\" \", \"'use strict'; eval = 42;\"); _13_0_13_fun();");
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch13/13.0/13.0-14-s.js b/js/src/tests/test262/ch13/13.0/13.0-14-s.js
new file mode 100644
index 000000000..86ec4534d
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.0/13.0-14-s.js
@@ -0,0 +1,26 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * Refer 13;
+ * The production FunctionBody : SourceElementsopt is evaluated as follows:
+ *
+ * @path ch13/13.0/13.0-14-s.js
+ * @description Strict Mode - SourceElements is evaluated as strict mode code when the function body of a Function constructor contains a Strict Directive
+ * @onlyStrict
+ */
+
+
+function testcase() {
+
+ try {
+ var _13_0_14_fun = new Function(" ", "'use strict'; eval = 42; ");
+ _13_0_14_fun();
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch13/13.0/13.0-15-s.js b/js/src/tests/test262/ch13/13.0/13.0-15-s.js
new file mode 100644
index 000000000..7f86492f7
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.0/13.0-15-s.js
@@ -0,0 +1,26 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * Refer 13;
+ * The production FunctionBody : SourceElementsopt is evaluated as follows:
+ *
+ * @path ch13/13.0/13.0-15-s.js
+ * @description Strict Mode - SourceElements is evaluated as strict mode code when a FunctionDeclaration is contained in strict mode code within eval code
+ * @onlyStrict
+ */
+
+
+function testcase() {
+
+ try {
+ eval("'use strict'; function _13_0_15_fun() {eval = 42;};");
+ _13_0_15_fun();
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch13/13.0/13.0-16-s.js b/js/src/tests/test262/ch13/13.0/13.0-16-s.js
new file mode 100644
index 000000000..93c01c323
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.0/13.0-16-s.js
@@ -0,0 +1,26 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * Refer 13;
+ * The production FunctionBody : SourceElementsopt is evaluated as follows:
+ *
+ * @path ch13/13.0/13.0-16-s.js
+ * @description Strict Mode - SourceElements is evaluated as strict mode code when a FunctionExpression is contained in strict mode code within eval code
+ * @onlyStrict
+ */
+
+
+function testcase() {
+
+ try {
+ eval("'use strict'; var _13_0_16_fun = function () {eval = 42;};");
+ _13_0_16_fun();
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch13/13.0/13.0-17-s.js b/js/src/tests/test262/ch13/13.0/13.0-17-s.js
new file mode 100644
index 000000000..283b3f7c3
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.0/13.0-17-s.js
@@ -0,0 +1,21 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * Refer 13;
+ * The production FunctionBody : SourceElementsopt is evaluated as follows:
+ *
+ * @path ch13/13.0/13.0-17-s.js
+ * @description Strict Mode - SourceElements is not evaluated as strict mode code when a Function constructor is contained in strict mode code within eval code
+ * @onlyStrict
+ */
+
+
+function testcase() {
+
+ eval("'use strict'; var _13_0_17_fun = new Function('eval = 42;'); _13_0_17_fun();");
+ return true;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch13/13.0/13.0-2.js b/js/src/tests/test262/ch13/13.0/13.0-2.js
new file mode 100644
index 000000000..d30becfbf
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.0/13.0-2.js
@@ -0,0 +1,20 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch13/13.0/13.0-2.js
+ * @description 13.0 - multiple names in one function declaration is not allowed, three function names
+ */
+
+
+function testcase() {
+ try {
+ eval("function x,y,z(){}");
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch13/13.0/13.0-3.js b/js/src/tests/test262/ch13/13.0/13.0-3.js
new file mode 100644
index 000000000..780c2d2b9
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.0/13.0-3.js
@@ -0,0 +1,21 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch13/13.0/13.0-3.js
+ * @description 13.0 - property names in function definition is not allowed, add a new property into object
+ */
+
+
+function testcase() {
+ var obj = {};
+ try {
+ eval("function obj.tt() {};");
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch13/13.0/13.0-4.js b/js/src/tests/test262/ch13/13.0/13.0-4.js
new file mode 100644
index 000000000..ce881f319
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.0/13.0-4.js
@@ -0,0 +1,22 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch13/13.0/13.0-4.js
+ * @description 13.0 - multiple names in one function declaration is not allowed, add a new property into a property which is a object
+ */
+
+
+function testcase() {
+ var obj = {};
+ obj.tt = { len: 10 };
+ try {
+ eval("function obj.tt.ss() {};");
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch13/13.0/13.0-7-s.js b/js/src/tests/test262/ch13/13.0/13.0-7-s.js
new file mode 100644
index 000000000..e73ed6548
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.0/13.0-7-s.js
@@ -0,0 +1,26 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * Refer 13;
+ * The production FunctionBody : SourceElementsopt is evaluated as follows:
+ *
+ * @path ch13/13.0/13.0-7-s.js
+ * @description Strict Mode - SourceElements is evaluated as strict mode code when the code of this FunctionDeclaration is contained in non-strict mode but the call to eval is a direct call in strict mode code
+ * @onlyStrict
+ */
+
+
+function testcase() {
+
+ try {
+ eval("'use strict'; function _13_0_7_fun() {eval = 42;};");
+ _13_0_7_fun();
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch13/13.0/13.0-8-s.js b/js/src/tests/test262/ch13/13.0/13.0-8-s.js
new file mode 100644
index 000000000..a1b6e22a3
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.0/13.0-8-s.js
@@ -0,0 +1,27 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * Refer 13;
+ * The production FunctionBody : SourceElementsopt is evaluated as follows:
+ *
+ * @path ch13/13.0/13.0-8-s.js
+ * @description Strict Mode - SourceElements is evaluated as strict mode code when the code of this FunctionExpression is contained in non-strict mode but the call to eval is a direct call in strict mode code
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+
+ try {
+ eval("var _13_0_8_fun = function () {eval = 42;};");
+ _13_0_8_fun();
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch13/13.0/13.0-9-s.js b/js/src/tests/test262/ch13/13.0/13.0-9-s.js
new file mode 100644
index 000000000..a7f12ca4f
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.0/13.0-9-s.js
@@ -0,0 +1,30 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * Refer 13;
+ * The production FunctionBody : SourceElementsopt is evaluated as follows:
+ *
+ * @path ch13/13.0/13.0-9-s.js
+ * @description Strict Mode - SourceElements is evaluated as strict mode code when a FunctionDeclaration that is contained in strict mode code has an inner function
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+
+ var _13_0_9_fun = function () {
+ function _13_0_9_inner() { eval("eval = 42;"); }
+ _13_0_9_inner();
+ };
+ try {
+ _13_0_9_fun();
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch13/13.0/13.0_4-17gs.js b/js/src/tests/test262/ch13/13.0/13.0_4-17gs.js
new file mode 100644
index 000000000..c5eb74302
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.0/13.0_4-17gs.js
@@ -0,0 +1,16 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+
+/**
+ * @path ch13/13.0/13.0_4-17gs.js
+ * @description Strict Mode - SourceElements is not evaluated as strict mode code when a Function constructor is contained in strict mode code
+ * @onlyStrict
+ * @negative NotEarlyError
+ */
+
+"use strict";
+var _13_0_4_17_fun = new Function('eval = 42;');
+throw NotEarlyError;
diff --git a/js/src/tests/test262/ch13/13.0/13.0_4-5gs.js b/js/src/tests/test262/ch13/13.0/13.0_4-5gs.js
new file mode 100644
index 000000000..4f9c01325
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.0/13.0_4-5gs.js
@@ -0,0 +1,16 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+
+/**
+ * @path ch13/13.0/13.0_4-5gs.js
+ * @description Strict Mode - SourceElements is evaluated as strict mode code when a FunctionDeclaration is contained in strict mode code
+ * @onlyStrict
+ * @negative ^((?!NotEarlyError).)*$
+ */
+
+"use strict";
+throw NotEarlyError;
+function _13_0_4_5_fun() { eval = 42; };
diff --git a/js/src/tests/test262/ch13/13.0/S13_A1.js b/js/src/tests/test262/ch13/13.0/S13_A1.js
new file mode 100644
index 000000000..8d0a905af
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.0/S13_A1.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.
+
+/**
+ * "x=function y(){}" statement does not store a reference to the new function in the varaible y(Identifier)
+ *
+ * @path ch13/13.0/S13_A1.js
+ * @description Checking the type of y
+ */
+
+var __func = function __exp__func(){return 0;};
+
+////////////////////////////////////////////////
+// //////////////////////////////
+//CHECK#1
+if (typeof __func !== "function") {
+ $ERROR('#1: typeof __func === "function". Actual: typeof __func ==='+typeof __func);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (typeof __exp__func !== "undefined"){
+ $ERROR('#2: typeof __exp__func === "undefined". Actual: typeof __exp__func ==='+typeof __exp__func);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch13/13.0/S13_A10.js b/js/src/tests/test262/ch13/13.0/S13_A10.js
new file mode 100644
index 000000000..dd85f242b
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.0/S13_A10.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.
+
+/**
+ * Function is a data
+ *
+ * @path ch13/13.0/S13_A10.js
+ * @description Using function as a property of an object
+ */
+
+function __ziggy__func(){return "ziggy stardust"}
+
+var __music_box={};
+
+__music_box.ziggy = __ziggy__func;
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#
+if (typeof __music_box.ziggy !== "function") {
+ $ERROR('#1: typeof __music_box.ziggy === "function". Actual: typeof __music_box.ziggy ==='+typeof __music_box.ziggy);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__music_box.ziggy() !== "ziggy stardust") {
+ $ERROR('#2: __music_box.ziggy() === "ziggy stardust". Actual: __music_box.ziggy() ==='+__music_box.ziggy());
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch13/13.0/S13_A11_T1.js b/js/src/tests/test262/ch13/13.0/S13_A11_T1.js
new file mode 100644
index 000000000..e9dc0e39a
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.0/S13_A11_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.
+
+/**
+ * Since arguments property has attribute { DontDelete }, only its elements can be deleted
+ *
+ * @path ch13/13.0/S13_A11_T1.js
+ * @description Returning result of "delete arguments"
+ */
+
+function __func(){ return delete arguments;}
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__func("A","B",1,2)) {
+ $ERROR('#1: arguments property has attribute { DontDelete }');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch13/13.0/S13_A11_T2.js b/js/src/tests/test262/ch13/13.0/S13_A11_T2.js
new file mode 100644
index 000000000..18886a307
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.0/S13_A11_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.
+
+/**
+ * Since arguments property has attribute { DontDelete }, only its elements can be deleted
+ *
+ * @path ch13/13.0/S13_A11_T2.js
+ * @description Checking if deleting the arguments property fails and then returning it
+ */
+
+function __func(){
+ delete arguments;
+ return arguments;
+}
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (typeof __func("A","B",1,2) !== "object") {
+ $ERROR('#1: arguments property has attribute { DontDelete }');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch13/13.0/S13_A11_T3.js b/js/src/tests/test262/ch13/13.0/S13_A11_T3.js
new file mode 100644
index 000000000..94345da8f
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.0/S13_A11_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.
+
+/**
+ * Since arguments property has attribute { DontDelete }, only its elements can be deleted
+ *
+ * @path ch13/13.0/S13_A11_T3.js
+ * @description Deleting arguments[i] and returning result of the operation
+ */
+
+function __func(){
+ was_del=false;
+ for (i=0; i < arguments.length; i++)
+ was_del= was_del || delete arguments[i];
+ return was_del;
+}
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (!__func("A","B",1,2)) {
+ $ERROR('#1: Since arguments property has attribute { DontDelete } elements of arguments can be deleted');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch13/13.0/S13_A11_T4.js b/js/src/tests/test262/ch13/13.0/S13_A11_T4.js
new file mode 100644
index 000000000..c107879cd
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.0/S13_A11_T4.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.
+
+/**
+ * Since arguments property has attribute { DontDelete }, only its elements can be deleted
+ *
+ * @path ch13/13.0/S13_A11_T4.js
+ * @description Deleting arguments[i] and checking the type of arguments[i]
+ */
+
+function __func(){
+ is_undef=true;
+ for (i=0; i < arguments.length; i++)
+ {
+ delete arguments[i];
+ is_undef= is_undef && (typeof arguments[i] === "undefined");
+ };
+ return is_undef;
+};
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (!__func("A","B",1,2)) {
+ $ERROR('#1: Since arguments property has attribute { DontDelete }, but elements of arguments can be deleted');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch13/13.0/S13_A12_T1.js b/js/src/tests/test262/ch13/13.0/S13_A12_T1.js
new file mode 100644
index 000000000..278a46ac6
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.0/S13_A12_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.
+
+/**
+ * Function declarations in global or function scope are {DontDelete}
+ *
+ * @path ch13/13.0/S13_A12_T1.js
+ * @description Checking if deleting a function that is declared in global scope fails
+ */
+
+ALIVE="Letov is alive"
+
+function __func(){
+ return ALIVE;
+};
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (delete __func) {
+ $ERROR('#1: delete __func returning false');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__func() !== ALIVE) {
+ $ERROR('#2: __func() === ALIVE. Actual: __func() ==='+__func());
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch13/13.0/S13_A12_T2.js b/js/src/tests/test262/ch13/13.0/S13_A12_T2.js
new file mode 100644
index 000000000..08ea18247
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.0/S13_A12_T2.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.
+
+/**
+ * Function declarations in global or function scope are {DontDelete}
+ *
+ * @path ch13/13.0/S13_A12_T2.js
+ * @description Checking if deleting a function that is declared in function scope fails
+ */
+
+ALIVE="Letov is alive"
+
+function __cont(){
+
+ function __func(){
+ return ALIVE;
+ };
+
+ //////////////////////////////////////////////////////////////////////////////
+ //CHECK#1
+ if (delete __func) {
+ $ERROR('#1: delete __func returning false');
+ }
+ //
+ //////////////////////////////////////////////////////////////////////////////
+
+ //////////////////////////////////////////////////////////////////////////////
+ //CHECK#2
+ if (__func() !== ALIVE) {
+ $ERROR('#2: __func() === ALIVE. Actual: __func() ==='+__func());
+ }
+ //
+ //////////////////////////////////////////////////////////////////////////////
+};
+
+__cont();
+
diff --git a/js/src/tests/test262/ch13/13.0/S13_A13_T1.js b/js/src/tests/test262/ch13/13.0/S13_A13_T1.js
new file mode 100644
index 000000000..072966196
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.0/S13_A13_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.
+
+/**
+ * Deleting arguments[i] leads to breaking the connection to local reference
+ *
+ * @path ch13/13.0/S13_A13_T1.js
+ * @description Deleting arguments[i]
+ */
+
+function __func(__arg){
+ delete arguments[0];
+ if (arguments[0] !== undefined) {
+ $ERROR('#1.1: arguments[0] === undefined');
+ }
+ return __arg;
+}
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__func(1) !== 1) {
+ $ERROR('#1.2: __func(1) === 1. Actual: __func(1) ==='+__func(1));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch13/13.0/S13_A13_T2.js b/js/src/tests/test262/ch13/13.0/S13_A13_T2.js
new file mode 100644
index 000000000..49ba62ada
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.0/S13_A13_T2.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.
+
+/**
+ * Deleting arguments[i] leads to breaking the connection to local reference
+ *
+ * @path ch13/13.0/S13_A13_T2.js
+ * @description Changing arguments value and then deleting the argument
+ */
+
+function __func(__arg){
+ __arg = 2;
+ delete arguments[0];
+ if (arguments[0] !== undefined) {
+ $ERROR('#1.1: arguments[0] === undefined');
+ }
+ return __arg;
+}
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__func(1) !== 2) {
+ $ERROR('#1.2: __func(1) === 2. Actual: __func(1) ==='+__func(1));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch13/13.0/S13_A13_T3.js b/js/src/tests/test262/ch13/13.0/S13_A13_T3.js
new file mode 100644
index 000000000..715150018
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.0/S13_A13_T3.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.
+
+/**
+ * Deleting arguments[i] leads to breaking the connection to local reference
+ *
+ * @path ch13/13.0/S13_A13_T3.js
+ * @description Changing argument value, deleting the argument and then defining a new value for arguments[i]
+ */
+
+function __func(__arg){
+ __arg = 2;
+ delete arguments[0];
+ if (arguments[0] !== undefined) {
+ $ERROR('#1.1: arguments[0] === undefined');
+ }
+ arguments[0] = "A";
+ if (arguments[0] !== "A") {
+ $ERROR('#1.2: arguments[0] === "A"');
+ }
+ return __arg;
+}
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__func(1) !== 2) {
+ $ERROR('#1.3: __func(1) === 2. Actual: __func(1) ==='+__func(1));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch13/13.0/S13_A14.js b/js/src/tests/test262/ch13/13.0/S13_A14.js
new file mode 100644
index 000000000..7d5bc732f
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.0/S13_A14.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.
+
+/**
+ * Unicode symbols in function name are allowed
+ *
+ * @path ch13/13.0/S13_A14.js
+ * @description Defining function name with unicode symbols
+ */
+
+eval("function __func\u0041(__arg){return __arg;};");
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (typeof __funcA !== "function") {
+ $ERROR('#1: unicode symbols in function name are allowed');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch13/13.0/S13_A15_T1.js b/js/src/tests/test262/ch13/13.0/S13_A15_T1.js
new file mode 100644
index 000000000..74531f8c5
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.0/S13_A15_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.
+
+/**
+ * ''arguments'' variable overrides ActivationObject.arguments
+ *
+ * @path ch13/13.0/S13_A15_T1.js
+ * @description Declaring a function with "__func(arguments)"
+ */
+
+function __func(arguments){
+ return arguments;
+};
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__func(42) !== 42) {
+ $ERROR('#1: "arguments" variable overrides ActivationObject.arguments');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch13/13.0/S13_A15_T2.js b/js/src/tests/test262/ch13/13.0/S13_A15_T2.js
new file mode 100644
index 000000000..77e7c847b
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.0/S13_A15_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.
+
+/**
+ * ''arguments'' variable overrides ActivationObject.arguments
+ *
+ * @path ch13/13.0/S13_A15_T2.js
+ * @description Overriding arguments within functions body
+ */
+
+THE_ANSWER="Answer to Life, the Universe, and Everything";
+
+function __func(){
+ var arguments = THE_ANSWER;
+ return arguments;
+};
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__func(42,42,42) !== THE_ANSWER) {
+ $ERROR('#1: "arguments" variable overrides ActivationObject.arguments');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch13/13.0/S13_A15_T3.js b/js/src/tests/test262/ch13/13.0/S13_A15_T3.js
new file mode 100644
index 000000000..4ba50e717
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.0/S13_A15_T3.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.
+
+/**
+ * ''arguments'' variable overrides ActivationObject.arguments
+ *
+ * @path ch13/13.0/S13_A15_T3.js
+ * @description Declaring a variable named with "arguments" without a function
+ */
+
+THE_ANSWER="Answer to Life, the Universe, and Everything";
+
+var arguments = THE_ANSWER;
+
+function __func(arguments){
+ return arguments;
+
+};
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (typeof __func() !== "undefined") {
+ $ERROR('#1: typeof __func() === "undefined". Actual: typeof __func() ==='+typeof __func());
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__func("The Ultimate Question") !== "The Ultimate Question") {
+ $ERROR('#2: __func("The Ultimate Question") === "The Ultimate Question". Actual: __func("The Ultimate Question")==='+__func("The Ultimate Question"));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch13/13.0/S13_A15_T4.js b/js/src/tests/test262/ch13/13.0/S13_A15_T4.js
new file mode 100644
index 000000000..a71b34833
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.0/S13_A15_T4.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.
+
+/**
+ * ''arguments'' variable overrides ActivationObject.arguments
+ *
+ * @path ch13/13.0/S13_A15_T4.js
+ * @description Declaring a variable named with "arguments" and following a "return" statement within a function body
+ */
+
+THE_ANSWER="Answer to Life, the Universe, and Everything";
+
+function __func(){
+ return typeof arguments;
+ var arguments = THE_ANSWER;
+};
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__func(42,42,42) !== "object") {
+ $ERROR('#1: __func(42,42,42) === "object". Actual: __func(42,42,42)==='+__func(42,42,42));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch13/13.0/S13_A15_T5.js b/js/src/tests/test262/ch13/13.0/S13_A15_T5.js
new file mode 100644
index 000000000..4896a19c2
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.0/S13_A15_T5.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.
+
+/**
+ * ''arguments'' variable overrides ActivationObject.arguments
+ *
+ * @path ch13/13.0/S13_A15_T5.js
+ * @description Creating a variable named with "arguments" without a function
+ */
+
+THE_ANSWER="Answer to Life, the Universe, and Everything";
+
+var arguments = THE_ANSWER;
+
+function __func(){
+ return arguments;
+};
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if ( __func() === THE_ANSWER) {
+ $ERROR('#1: __func() !== THE_ANSWER');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__func("The Ultimate Question") === "The Ultimate Question") {
+ $ERROR('#2: __func("The Ultimate Question") !== "The Ultimate Question"');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch13/13.0/S13_A16.js b/js/src/tests/test262/ch13/13.0/S13_A16.js
new file mode 100644
index 000000000..8b8ee7080
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.0/S13_A16.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.
+
+/**
+ * Any separators are admitted between declaration chunks
+ *
+ * @path ch13/13.0/S13_A16.js
+ * @description Inserting separators between declaration chunks
+ */
+
+function
+x
+(
+)
+{
+}
+;
+
+x();
+
+function y ( ) {};
+
+y();
+
+function
+
+z
+
+(
+
+)
+
+{
+
+}
+
+;
+
+z();
+
+eval("function\u0009\u2029w(\u000C)\u00A0{\u000D};");
+
+w();
+
diff --git a/js/src/tests/test262/ch13/13.0/S13_A17_T1.js b/js/src/tests/test262/ch13/13.0/S13_A17_T1.js
new file mode 100644
index 000000000..1ea6c287a
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.0/S13_A17_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.
+
+/**
+ * Function call cannot appear in the program before the FunctionExpression appears
+ *
+ * @path ch13/13.0/S13_A17_T1.js
+ * @description Trying to call a function before the FunctionExpression appears
+ */
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+try{
+ var __result = __func();
+ $FAIL("#1.1: var __result = __func() lead to throwing exception");
+} catch(e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#1.2: func should throw a TypeError Actual: ' + (e));
+ }
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+var __func = function (){return "ONE";};
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+var __result = __func();
+if (__result !== "ONE") {
+ $ERROR('#2: __result === "ONE". Actual: __result ==='+__result);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+__func = function (){return "TWO";};
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+var __result = __func();
+if (__result !== "TWO") {
+ $ERROR('#3: __result === "TWO". Actual: __result ==='+__result);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch13/13.0/S13_A17_T2.js b/js/src/tests/test262/ch13/13.0/S13_A17_T2.js
new file mode 100644
index 000000000..d502d3b46
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.0/S13_A17_T2.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.
+
+/**
+ * Function call cannot appear in the program before the FunctionExpression appears
+ *
+ * @path ch13/13.0/S13_A17_T2.js
+ * @description Trying to call a function before the FunctionExpression appears and then using the FunctionExpression one more time
+ */
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+try{
+ var __result = __func();
+ $ERROR("#1: var __result = __func() lead to throwing exception");
+} catch(e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#1.2: func should throw a TypeError Actual: ' + (e));
+ }
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+// now we reach the __func overwriting by new expression
+var __func = function __func(){return "ONE";};
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+var __result = __func();
+if (__result !== "ONE") {
+ $ERROR('#2: __result === "ONE". Actual: __result ==='+__result);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+__func = function __func(){return "TWO";};
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+var __result = __func();
+if (__result !== "TWO") {
+ $ERROR('#3: __result === "TWO". Actual: __result ==='+__result);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch13/13.0/S13_A18.js b/js/src/tests/test262/ch13/13.0/S13_A18.js
new file mode 100644
index 000000000..827db7547
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.0/S13_A18.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.
+
+/**
+ * Closures are admitted
+ *
+ * @path ch13/13.0/S13_A18.js
+ * @description Using a function declaration as a function parameter
+ */
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (typeof sinx !== 'undefined') {
+ $ERROR('#1: typeof sinx === \'undefined\'. Actual: typeof sinx ==='+typeof sinx);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+var __val = function derivative(f, dx) {
+ return function(x) {
+ return (f(x + dx) - f(x)) / dx;
+ };
+}(function sinx(x){return Math.sin(x);},.0001)(0.5);
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (typeof sinx !== 'undefined') {
+ $ERROR('#2: typeof sinx === \'undefined\'. Actual: typeof sinx ==='+typeof sinx);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch13/13.0/S13_A19_T1.js b/js/src/tests/test262/ch13/13.0/S13_A19_T1.js
new file mode 100644
index 000000000..9bcf1921f
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.0/S13_A19_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.
+
+/**
+ * "var" does not override function declaration
+ *
+ * @path ch13/13.0/S13_A19_T1.js
+ * @description Creating a function and a variable with identical Identifiers in global scope
+ */
+
+// since "var" does not override function declaration __decl is set to function
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (typeof __decl !== "function") {
+ $ERROR('#1: typeof __decl === "function". Actual: typeof __decl ==='+typeof __decl);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+var __decl = 1;
+
+//since statement was evaluted __decl turns to 1 from function
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__decl !== 1) {
+ $ERROR('#2: __decl === 1. Actual: __decl ==='+__decl);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+function __decl(){return 1;}
+
diff --git a/js/src/tests/test262/ch13/13.0/S13_A19_T2.js b/js/src/tests/test262/ch13/13.0/S13_A19_T2.js
new file mode 100644
index 000000000..7757d8be6
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.0/S13_A19_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.
+
+/**
+ * "var" does not override function declaration
+ *
+ * @path ch13/13.0/S13_A19_T2.js
+ * @description Creating a function and a variable with identical Identifiers within function scope
+ */
+
+(function (){
+
+ // since "var" does not override function declaration __decl is set to function
+ //////////////////////////////////////////////////////////////////////////////
+ //CHECK#1
+ if (typeof __decl !== "function") {
+ $ERROR('#1: typeof __decl === "function". Actual: typeof __decl ==='+typeof __decl);
+ }
+ //
+ //////////////////////////////////////////////////////////////////////////////
+
+ var __decl = 1;
+
+ //since statement was evaluted __decl turns to 1 from function
+ //////////////////////////////////////////////////////////////////////////////
+ //CHECK#2
+ if (__decl !== 1) {
+ $ERROR('#2: __decl === 1. Actual: __decl ==='+__decl);
+ }
+ //
+ //////////////////////////////////////////////////////////////////////////////
+
+ function __decl(){return 1;}
+})();
+
diff --git a/js/src/tests/test262/ch13/13.0/S13_A2_T1.js b/js/src/tests/test262/ch13/13.0/S13_A2_T1.js
new file mode 100644
index 000000000..b9307ac70
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.0/S13_A2_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.
+
+/**
+ * function must be evaluated inside the expression
+ *
+ * @path ch13/13.0/S13_A2_T1.js
+ * @description Defining function body with "return arg"
+ */
+
+var x = (function __func(arg){return arg})(1);
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (x !== 1) {
+ $ERROR('#1: x === 1. Actual: x ==='+x);
+}
+
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (typeof __func !== 'undefined') {
+ $ERROR('#2: typeof __func === \'undefined\'. Actual: typeof __func ==='+typeof __func);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch13/13.0/S13_A2_T2.js b/js/src/tests/test262/ch13/13.0/S13_A2_T2.js
new file mode 100644
index 000000000..c43c58e79
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.0/S13_A2_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.
+
+/**
+ * function must be evaluated inside the expression
+ *
+ * @path ch13/13.0/S13_A2_T2.js
+ * @description Defining function body with "return arg + arguments[1]"
+ */
+
+var x = (function __func(arg){return arg + arguments[1]})(1,"1");
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (x !== "11") {
+ $ERROR('#1: x === "11". Actual: x ==='+x);
+}
+
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (typeof __func !== 'undefined') {
+ $ERROR('#2: typeof __func === \'undefined\'. Actual: typeof __func ==='+typeof __func);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch13/13.0/S13_A2_T3.js b/js/src/tests/test262/ch13/13.0/S13_A2_T3.js
new file mode 100644
index 000000000..83d3f2463
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.0/S13_A2_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.
+
+/**
+ * function must be evaluated inside the expression
+ *
+ * @path ch13/13.0/S13_A2_T3.js
+ * @description Defining function body with "return arguments[0] +"-"+ arguments[1]"
+ */
+
+var x = (function __func(){return arguments[0] +"-"+ arguments[1]})("Obi","Wan");
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (x !== "Obi-Wan") {
+ $ERROR('#1: x === "Obi-Wan". Actual: x ==='+x);
+}
+
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (typeof __func !== 'undefined') {
+ $ERROR('#2: typeof __func === \'undefined\'. Actual: typeof __func ==='+typeof __func);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch13/13.0/S13_A3_T1.js b/js/src/tests/test262/ch13/13.0/S13_A3_T1.js
new file mode 100644
index 000000000..cac7e243d
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.0/S13_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.
+
+/**
+ * The Identifier in a FunctionExpression can be referenced from inside the FunctionExpression's FunctionBody to allow the function calling itself recursively
+ *
+ * @path ch13/13.0/S13_A3_T1.js
+ * @description Creating a recursive function that calculates factorial, as a variable.
+ * Function call itself by it`s name
+ */
+
+var __func = function __exp__func(arg){
+ if (arg === 1) {
+ return arg;
+ } else {
+ return __exp__func(arg-1)*arg;
+ }
+};
+
+var fact_of_3 = __func(3);
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (fact_of_3 !== 6) {
+ $ERROR("#1: fact_of_3 === 6. Actual: fact_of_3 ==="+fact_of_3);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch13/13.0/S13_A3_T2.js b/js/src/tests/test262/ch13/13.0/S13_A3_T2.js
new file mode 100644
index 000000000..2137666a7
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.0/S13_A3_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.
+
+/**
+ * The Identifier in a FunctionExpression can be referenced from inside the FunctionExpression's FunctionBody to allow the function calling itself recursively
+ *
+ * @path ch13/13.0/S13_A3_T2.js
+ * @description Creating a recursive function that calculates factorial, as a variable.
+ * Function calls itself by the name of the variable
+ */
+
+var __func = function (arg){
+ if (arg === 1) {
+ return arg;
+ } else {
+ return __func(arg-1)*arg;
+ }
+};
+
+var fact_of_3 = __func(3);
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (fact_of_3 !== 6) {
+ $ERROR("#1: fact_of_3 === 6. Actual: fact_of_3 ==="+fact_of_3);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch13/13.0/S13_A3_T3.js b/js/src/tests/test262/ch13/13.0/S13_A3_T3.js
new file mode 100644
index 000000000..467f3fea5
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.0/S13_A3_T3.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.
+
+/**
+ * The Identifier in a FunctionExpression can be referenced from inside the FunctionExpression's FunctionBody to allow the function calling itself recursively
+ *
+ * @path ch13/13.0/S13_A3_T3.js
+ * @description Creating simple recursive function that calculates factorial
+ */
+
+function __func(arg){
+ if (arg === 1) {
+ return arg;
+ } else {
+ return __func(arg-1)*arg;
+ }
+};
+
+var fact_of_3 = __func(3);
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (fact_of_3 !== 6) {
+ $ERROR("#1: fact_of_3 === 6. Actual: fact_of_3 ==="+fact_of_3);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch13/13.0/S13_A4_T1.js b/js/src/tests/test262/ch13/13.0/S13_A4_T1.js
new file mode 100644
index 000000000..453207158
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.0/S13_A4_T1.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.
+
+/**
+ * The production FunctionDeclaration: "function Identifier ( FormalParameterList_opt ) { FunctionBody }" is processed by function declarations
+ *
+ * @path ch13/13.0/S13_A4_T1.js
+ * @description Declaring a function that returns string
+ */
+
+function __func(){return "zig-zig-sputnik";};
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (typeof __func !== "function") {
+ $ERROR('#1: typeof __func === "function". Actual: typeof __func ==='+typeof __func);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__func() !== "zig-zig-sputnik") {
+ $ERROR('#2: __func() === "zig-zig-sputnik". Actual: __func() ==='+__func());
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch13/13.0/S13_A4_T2.js b/js/src/tests/test262/ch13/13.0/S13_A4_T2.js
new file mode 100644
index 000000000..d7b4a2788
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.0/S13_A4_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.
+
+/**
+ * The production FunctionDeclaration: "function Identifier ( FormalParameterList_opt ) { FunctionBody }" is processed by function declarations
+ *
+ * @path ch13/13.0/S13_A4_T2.js
+ * @description Declaring a function that uses prefix increment operator within its "return" Expression
+ */
+
+function __func(arg){return ++arg;};
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (typeof __func !== "function") {
+ $ERROR('#1: typeof __func === "function". Actual: typeof __func ==='+typeof __func);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__func(1) !== 2) {
+ $ERROR('#2: __func(1) === 2. Actual: __func(1) ==='+__func(1));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch13/13.0/S13_A4_T3.js b/js/src/tests/test262/ch13/13.0/S13_A4_T3.js
new file mode 100644
index 000000000..6595f4f77
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.0/S13_A4_T3.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.
+
+/**
+ * The production FunctionDeclaration: "function Identifier ( FormalParameterList_opt ) { FunctionBody }" is processed by function declarations
+ *
+ * @path ch13/13.0/S13_A4_T3.js
+ * @description Declaring a function that uses arithmetical operators within its "return" Expression
+ */
+
+function __func(arg1, arg2, arg3){return arg1+=(arg2+=arg3);};
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (typeof __func !== "function") {
+ $ERROR('#1: typeof __func === "function". Actual: typeof __func ==='+typeof __func);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__func(10, 20, 30) !== 60) {
+ $ERROR('#2: __func(10, 20, 30) === 60. Actual: __func(10,20,30) ==='+__func(10,20,30));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch13/13.0/S13_A4_T4.js b/js/src/tests/test262/ch13/13.0/S13_A4_T4.js
new file mode 100644
index 000000000..7330bd80f
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.0/S13_A4_T4.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.
+
+/**
+ * The production FunctionDeclaration: "function Identifier ( FormalParameterList_opt ) { FunctionBody }" is processed by function declarations
+ *
+ * @path ch13/13.0/S13_A4_T4.js
+ * @description Declaring a function that uses strings concatenaion opeator within its "return" Expression
+ */
+
+function __func(){return arguments[0].name + " " + arguments[0].surname;};
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (typeof __func !== "function") {
+ $ERROR('#1: typeof __func === "function". Actual: typeof __func ==='+typeof __func);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__func({name:'fox', surname:'malder'}) !== "fox malder") {
+ $ERROR('#2: __func({name:\'fox\', surname:\'malder\'}) === "fox malder". Actual: __func({name:\'fox\', surname:\'malder\'}) ==='+__func({name:'fox', surname:'malder'}));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+function func__(arg){return arg.name + " " + arg.surname;};
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if (typeof func__ !== "function") {
+ $ERROR('#3: typeof func__ === "function". Actual: typeof __func ==='+typeof __func);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#4
+if (func__({name:'john', surname:'lennon'}) !== "john lennon") {
+ $ERROR('#4: func__({name:\'john\', surname:\'lennon\'}) === "john lennon". Actual: __func({name:\'john\', surname:\'lennon\'}) ==='+__func({name:'john', surname:'lennon'}));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch13/13.0/S13_A6_T1.js b/js/src/tests/test262/ch13/13.0/S13_A6_T1.js
new file mode 100644
index 000000000..2cdd53709
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.0/S13_A6_T1.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.
+
+/**
+ * FunctionDeclaration can be overrided by other FunctionDeclaration with the same Identifier
+ *
+ * @path ch13/13.0/S13_A6_T1.js
+ * @description Duplicating function declaration
+ */
+
+function __func(){return 1};
+
+var __store__func = __func;
+
+var __1 = __func();
+
+ function __func(){return 'A'};
+
+var __A = __func();
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__store__func !== __func) {
+ $ERROR('#1: __store__func === __func. Actual: __store__func ==='+__store__func);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__1 !== __A) {
+ $ERROR('#2: __1 === __A. Actual: __1 ==='+__1);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch13/13.0/S13_A6_T2.js b/js/src/tests/test262/ch13/13.0/S13_A6_T2.js
new file mode 100644
index 000000000..6268e06e2
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.0/S13_A6_T2.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.
+
+/**
+ * FunctionDeclaration can be overrided by other FunctionDeclaration with the same Identifier
+ *
+ * @path ch13/13.0/S13_A6_T2.js
+ * @description Calling a function before it is declared one more time
+ */
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+try{
+ var __result = __func();
+} catch(e) {
+ $FAIL("#1: Function call can appears in the program before the FunctionDeclaration appears");
+}
+if (__result !== "SECOND") {
+ $ERROR('#1.1: __result === "SECOND". Actual: __result ==='+__result);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+function __func(){return "FIRST";};
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+__result = __func();
+if (__result !== "SECOND") {
+ $ERROR('#2: __result === "SECOND". Actual: __result ==='+__result);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+function __func(){return "SECOND";};
+
diff --git a/js/src/tests/test262/ch13/13.0/S13_A7_T1.js b/js/src/tests/test262/ch13/13.0/S13_A7_T1.js
new file mode 100644
index 000000000..b83e6e140
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.0/S13_A7_T1.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.
+
+/**
+ * The FunctionBody must be SourceElements
+ *
+ * @path ch13/13.0/S13_A7_T1.js
+ * @description Using only SourceElements within the FunctionBody
+ */
+
+function __func(){'ground control to major tom'};
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (typeof __func !== "function") {
+ $ERROR('#1: typeof __func === "function". Actual: typeof __func ==='+typeof __func);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+function __func__2(){b};
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (typeof __func__2 !== "function") {
+ $ERROR('#2: typeof __func__2 === "function". Actual: typeof __func__2 ==='+typeof __func__2);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+function __func__3(){1};
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if (typeof __func__3 !== "function") {
+ $ERROR('#3: typeof __func__3 === "function". Actual: typeof __func__3 ==='+typeof __func__3);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+function __func__4(){1+c};
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#4
+if (typeof __func__4 !== "function") {
+ $ERROR('#4: typeof __func__4 === "function". Actual: typeof __func__4 ==='+typeof __func__4);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+function __func__5(){inc(d)};
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#5
+if (typeof __func__5 !== "function") {
+ $ERROR('#5: typeof __func__5 === "function". Actual: typeof __func__5 ==='+typeof __func__5);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+function __func__6(){var \u0042 = 1;};
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#6
+if (typeof __func__6 !== "function") {
+ $ERROR('#6: typeof __func__6 === "function". Actual: typeof __func__6 ==='+typeof __func__6);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//function __func__7(){var \u003d = 1;};
+////////////////////////////////////////////////////////////////////////////////
+////CHECK#7
+//if (typeof __func__7 !== "function") {
+// $ERROR('#7: The FunctionBody must be SourceElements');
+//}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch13/13.0/S13_A7_T2.js b/js/src/tests/test262/ch13/13.0/S13_A7_T2.js
new file mode 100644
index 000000000..6b381b794
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.0/S13_A7_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.
+
+/**
+ * The FunctionBody must be SourceElements
+ *
+ * @path ch13/13.0/S13_A7_T2.js
+ * @description Inserting elements that is different from SourceElements into the FunctionBody
+ */
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+try{
+ eval("function __func(){/ ABC}");
+ $ERROR('#1: eval("function __func(){/ ABC}") lead to throwing exception');
+} catch(e){
+ if(!(e instanceof SyntaxError)){
+ $ERROR('#1.1: eval("function __func(){/ ABC}") lead to throwing exception of SyntaxError. Actual: exception is '+e);
+ }
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+try{
+ eval("function __func(){&1}");
+ $ERROR('#3: eval("function __func(){&1}") lead to throwing exception');
+} catch(e){
+ if(!(e instanceof SyntaxError)){
+ $ERROR('#3.1: eval("function __func(){&1}") lead to throwing exception of SyntaxError. Actual: exception is '+e);
+ }
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#4
+try{
+ eval("function __func(){# ABC}");
+ $ERROR('#4: eval("function __func(){# ABC}") lead to throwing exception');
+} catch(e){
+ if(!(e instanceof SyntaxError)){
+ $ERROR('#4.1: eval("function __func(){# ABC}") lead to throwing exception of SyntaxError. Actual: exception is '+e);
+ }
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch13/13.0/S13_A7_T3.js b/js/src/tests/test262/ch13/13.0/S13_A7_T3.js
new file mode 100644
index 000000000..e2b893b65
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.0/S13_A7_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.
+
+/**
+ * The FunctionBody must be SourceElements
+ *
+ * @path ch13/13.0/S13_A7_T3.js
+ * @description Checking if execution of "function __func(){\A\B\C}" fails
+ * @negative
+ */
+
+function __func(){\A\B\C};
+
diff --git a/js/src/tests/test262/ch13/13.0/S13_A8_T1.js b/js/src/tests/test262/ch13/13.0/S13_A8_T1.js
new file mode 100644
index 000000000..d147259ce
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.0/S13_A8_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.
+
+/**
+ * Arguments property of activation object contains real params to be passed
+ *
+ * @path ch13/13.0/S13_A8_T1.js
+ * @description Creating a function declared with "function __func(param1, param2, param3)" and using arguments.length property in order to perform the test
+ */
+
+ function __func(param1, param2, param3) {
+ return arguments.length;
+ }
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__func('A') !== 1) {
+ $ERROR('#1: __func(\'A\') === 1. Actual: __func(\'A\') ==='+__func('A'));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__func('A', 'B', 1, 2,__func) !== 5) {
+ $ERROR('#2: __func(\'A\', \'B\', 1, 2,__func) === 5. Actual: __func(\'A\', \'B\', 1, 2,__func) ==='+__func('A', 'B', 1, 2,__func));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+
+
+
diff --git a/js/src/tests/test262/ch13/13.0/S13_A8_T2.js b/js/src/tests/test262/ch13/13.0/S13_A8_T2.js
new file mode 100644
index 000000000..6e4b3f05c
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.0/S13_A8_T2.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.
+
+/**
+ * Arguments property of activation object contains real params to be passed
+ *
+ * @path ch13/13.0/S13_A8_T2.js
+ * @description Creating a function with no parameters and using arguments.length property in order to perform the test
+ */
+
+ function __func() {
+ return arguments.length;
+ }
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__func('A') !== 1) {
+ $ERROR('#1: __func(\'A\') === 1. Actual: __func(\'A\') ==='+__func('A'));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__func('A', 'B', 1, 2,__func) !== 5) {
+ $ERROR('#2: __func(\'A\', \'B\', 1, 2,__func) === 5. Actual: __func(\'A\', \'B\', 1, 2,__func) ==='+__func('A', 'B', 1, 2,__func));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if (__func() !== 0) {
+ $ERROR('#3: __func() === 0. Actual: __func() ==='+__func());
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch13/13.0/S13_A9.js b/js/src/tests/test262/ch13/13.0/S13_A9.js
new file mode 100644
index 000000000..c13119af9
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.0/S13_A9.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.
+
+/**
+ * Function can be passed as argument
+ *
+ * @path ch13/13.0/S13_A9.js
+ * @description Using function as argument of another function
+ */
+
+function __func__INC(arg){return arg + 1;};
+function __func__MULT(incrementator, arg, mult){ return incrementator(arg)*mult; };
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__func__MULT(__func__INC, 2, 2) !== 6) {
+ $ERROR('#1: function can be passed as argument');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+
diff --git a/js/src/tests/test262/ch13/13.0/browser.js b/js/src/tests/test262/ch13/13.0/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.0/browser.js
diff --git a/js/src/tests/test262/ch13/13.0/shell.js b/js/src/tests/test262/ch13/13.0/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.0/shell.js
diff --git a/js/src/tests/test262/ch13/13.1/13.1-1-1.js b/js/src/tests/test262/ch13/13.1/13.1-1-1.js
new file mode 100644
index 000000000..a30103edc
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.1/13.1-1-1.js
@@ -0,0 +1,21 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch13/13.1/13.1-1-1.js
+ * @description Duplicate identifier allowed in non-strict function declaration parameter list
+ */
+
+
+function testcase()
+{
+ try
+ {
+ eval('function foo(a,a){}');
+ return true;
+ }
+ catch (e) { return false }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch13/13.1/13.1-1-2.js b/js/src/tests/test262/ch13/13.1/13.1-1-2.js
new file mode 100644
index 000000000..dc6708fb4
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.1/13.1-1-2.js
@@ -0,0 +1,21 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch13/13.1/13.1-1-2.js
+ * @description Duplicate identifier allowed in non-strict function expression parameter list
+ */
+
+
+function testcase()
+{
+ try
+ {
+ eval('(function foo(a,a){})');
+ return true;
+ }
+ catch (e) { return false }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch13/13.1/13.1-1-s.js b/js/src/tests/test262/ch13/13.1/13.1-1-s.js
new file mode 100644
index 000000000..4768b2072
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.1/13.1-1-s.js
@@ -0,0 +1,27 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * Refer 13.1;
+ * It is a SyntaxError if the Identifier "eval" or the Identifier "arguments" occurs within a FormalParameterList
+ * of a strict mode FunctionDeclaration or FunctionExpression.
+ *
+ * @path ch13/13.1/13.1-1-s.js
+ * @description Strict Mode - SyntaxError is thrown if the identifier 'eval' appears within a FormalParameterList of a strict mode FunctionDeclaration
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+
+ try {
+ eval("function _13_1_1_fun(eval) { }");
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch13/13.1/13.1-10-s.js b/js/src/tests/test262/ch13/13.1/13.1-10-s.js
new file mode 100644
index 000000000..802c13ab4
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.1/13.1-10-s.js
@@ -0,0 +1,27 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * Refer 13.1;
+ * It is a SyntaxError if any Identifier value occurs more than once within a FormalParameterList of a strict mode
+ * FunctionDeclaration or FunctionExpression.
+ *
+ * @path ch13/13.1/13.1-10-s.js
+ * @description Strict Mode - SyntaxError is thrown if a function is created in 'strict mode' using a FunctionExpression and the function has three identical parameters
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+
+ try {
+ eval("var _13_1_10_fun = function (param, param, param) { };")
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch13/13.1/13.1-11-s.js b/js/src/tests/test262/ch13/13.1/13.1-11-s.js
new file mode 100644
index 000000000..5f63b5627
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.1/13.1-11-s.js
@@ -0,0 +1,22 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch13/13.1/13.1-11-s.js
+ * @description StrictMode - SyntaxError is thrown if 'eval' occurs as the function name of a FunctionDeclaration in strict mode
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+ try {
+ eval("function eval() { };")
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch13/13.1/13.1-12-s.js b/js/src/tests/test262/ch13/13.1/13.1-12-s.js
new file mode 100644
index 000000000..8ebf40b26
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.1/13.1-12-s.js
@@ -0,0 +1,24 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch13/13.1/13.1-12-s.js
+ * @description StrictMode - SyntaxError is thrown if 'eval' occurs as the Identifier of a FunctionExpression in strict mode
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+ var _13_1_12_s = {};
+
+ try {
+ eval("_13_1_12_s.x = function eval() {};");
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch13/13.1/13.1-13-s.js b/js/src/tests/test262/ch13/13.1/13.1-13-s.js
new file mode 100644
index 000000000..b1eb17421
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.1/13.1-13-s.js
@@ -0,0 +1,23 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch13/13.1/13.1-13-s.js
+ * @description StrictMode - SyntaxError is thrown if 'arguments' occurs as the function name of a FunctionDeclaration in strict mode
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+
+ try {
+ eval("function arguments() { };")
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch13/13.1/13.1-13gs.js b/js/src/tests/test262/ch13/13.1/13.1-13gs.js
new file mode 100644
index 000000000..5287ab343
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.1/13.1-13gs.js
@@ -0,0 +1,14 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch13/13.1/13.1-13gs.js
+ * @description StrictMode - SyntaxError is thrown if 'arguments' occurs as the Identifier of a FunctionDeclaration
+ * @onlyStrict
+ * @negative ^((?!NotEarlyError).)*$
+ */
+"use strict";
+throw NotEarlyError;
+function arguments() { };
diff --git a/js/src/tests/test262/ch13/13.1/13.1-14-s.js b/js/src/tests/test262/ch13/13.1/13.1-14-s.js
new file mode 100644
index 000000000..4841cee18
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.1/13.1-14-s.js
@@ -0,0 +1,24 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch13/13.1/13.1-14-s.js
+ * @description StrictMode - SyntaxError is thrown if 'arguments' occurs as the Identifier of a FunctionExpression in strict mode
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+ var _13_1_14_s = {};
+
+ try {
+ eval("_13_1_14_s.x = function arguments() {};");
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch13/13.1/13.1-15-s.js b/js/src/tests/test262/ch13/13.1/13.1-15-s.js
new file mode 100644
index 000000000..0f49d0b97
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.1/13.1-15-s.js
@@ -0,0 +1,26 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * Refer 13.1;
+ * It is a SyntaxError if the Identifier "eval" or the Identifier "arguments" occurs within a FormalParameterList
+ * of a strict mode FunctionDeclaration or FunctionExpression.
+ *
+ * @path ch13/13.1/13.1-15-s.js
+ * @description Strict Mode - SyntaxError is thrown if the identifier 'eval' appears within a FormalParameterList of a strict mode FunctionDeclaration in strict eval code
+ * @onlyStrict
+ */
+
+
+function testcase() {
+
+ try {
+ eval("'use strict';function _13_1_15_fun(eval) { }");
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch13/13.1/13.1-16-s.js b/js/src/tests/test262/ch13/13.1/13.1-16-s.js
new file mode 100644
index 000000000..4dd74265a
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.1/13.1-16-s.js
@@ -0,0 +1,26 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * Refer 13.1;
+ * It is a SyntaxError if the Identifier "eval" or the Identifier "arguments" occurs within a FormalParameterList
+ * of a strict mode FunctionDeclaration or FunctionExpression.
+ *
+ * @path ch13/13.1/13.1-16-s.js
+ * @description StrictMode - SyntaxError is thrown if the identifier 'eval' appears within a FormalParameterList of a strict mode FunctionDeclaration when FuctionBody is strict code
+ * @onlyStrict
+ */
+
+
+function testcase() {
+
+ try {
+ eval("function _13_1_16_fun(eval) { 'use strict'; }");
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch13/13.1/13.1-17-s.js b/js/src/tests/test262/ch13/13.1/13.1-17-s.js
new file mode 100644
index 000000000..e38ee27c6
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.1/13.1-17-s.js
@@ -0,0 +1,26 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * Refer 13.1;
+ * It is a SyntaxError if the Identifier "eval" or the Identifier "arguments" occurs within a FormalParameterList
+ * of a strict mode FunctionDeclaration or FunctionExpression.
+ *
+ * @path ch13/13.1/13.1-17-s.js
+ * @description StrictMode - SyntaxError is thrown if the identifier 'eval' appears within a FormalParameterList of a strict mode FunctionExpression in strict eval code
+ * @onlyStrict
+ */
+
+
+function testcase() {
+
+ try {
+ eval("'use strict'; var _13_1_17_fun = function (eval) { }");
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch13/13.1/13.1-18-s.js b/js/src/tests/test262/ch13/13.1/13.1-18-s.js
new file mode 100644
index 000000000..51668c621
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.1/13.1-18-s.js
@@ -0,0 +1,26 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * Refer 13.1;
+ * It is a SyntaxError if the Identifier "eval" or the Identifier "arguments" occurs within a FormalParameterList
+ * of a strict mode FunctionDeclaration or FunctionExpression.
+ *
+ * @path ch13/13.1/13.1-18-s.js
+ * @description StrictMode - SyntaxError is thrown if the identifier 'eval' appears within a FormalParameterList of a strict mode FunctionExpression when FuctionBody is strict code
+ * @onlyStrict
+ */
+
+
+function testcase() {
+
+ try {
+ eval("var _13_1_18_fun = function (eval) { 'use strict'; }");
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch13/13.1/13.1-19-s.js b/js/src/tests/test262/ch13/13.1/13.1-19-s.js
new file mode 100644
index 000000000..a063fba9f
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.1/13.1-19-s.js
@@ -0,0 +1,26 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * Refer 13.1;
+ * It is a SyntaxError if the Identifier "eval" or the Identifier "arguments" occurs within a FormalParameterList
+ * of a strict mode FunctionDeclaration or FunctionExpression.
+ *
+ * @path ch13/13.1/13.1-19-s.js
+ * @description Strict Mode - SyntaxError is thrown if the identifier 'arguments' appears within a FormalParameterList of a strict mode FunctionDeclaration in strict eval code
+ * @onlyStrict
+ */
+
+
+function testcase() {
+
+ try {
+ eval("'use strict';function _13_1_19_fun(arguments) { }");
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch13/13.1/13.1-1gs.js b/js/src/tests/test262/ch13/13.1/13.1-1gs.js
new file mode 100644
index 000000000..bc4971291
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.1/13.1-1gs.js
@@ -0,0 +1,14 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch13/13.1/13.1-1gs.js
+ * @description Strict Mode - SyntaxError is thrown if the identifier 'eval' appears within a FormalParameterList of a strict mode FunctionDeclaration
+ * @onlyStrict
+ * @negative ^((?!NotEarlyError).)*$
+ */
+"use strict";
+throw NotEarlyError;
+function _13_1_1_fun(eval) { } \ No newline at end of file
diff --git a/js/src/tests/test262/ch13/13.1/13.1-2-1.js b/js/src/tests/test262/ch13/13.1/13.1-2-1.js
new file mode 100644
index 000000000..8d4155037
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.1/13.1-2-1.js
@@ -0,0 +1,21 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch13/13.1/13.1-2-1.js
+ * @description eval allowed as formal parameter name of a non-strict function declaration
+ */
+
+
+function testcase()
+{
+ try
+ {
+ eval("function foo(eval){};");
+ return true;
+ }
+ catch (e) { }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch13/13.1/13.1-2-2.js b/js/src/tests/test262/ch13/13.1/13.1-2-2.js
new file mode 100644
index 000000000..04e19c1a6
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.1/13.1-2-2.js
@@ -0,0 +1,17 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch13/13.1/13.1-2-2.js
+ * @description eval allowed as formal parameter name of a non-strict function expression
+ */
+
+
+function testcase()
+{
+ eval("(function foo(eval){});");
+ return true;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch13/13.1/13.1-2-5.js b/js/src/tests/test262/ch13/13.1/13.1-2-5.js
new file mode 100644
index 000000000..e60842ff1
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.1/13.1-2-5.js
@@ -0,0 +1,21 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch13/13.1/13.1-2-5.js
+ * @description arguments allowed as formal parameter name of a non-strict function declaration
+ */
+
+
+function testcase()
+{
+ try
+ {
+ eval("function foo(arguments){};");
+ return true;
+ }
+ catch (e) { }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch13/13.1/13.1-2-6.js b/js/src/tests/test262/ch13/13.1/13.1-2-6.js
new file mode 100644
index 000000000..ce9b76b3c
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.1/13.1-2-6.js
@@ -0,0 +1,17 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch13/13.1/13.1-2-6.js
+ * @description arguments allowed as formal parameter name of a non-strict function expression
+ */
+
+
+function testcase()
+{
+ eval("(function foo(arguments){});");
+ return true;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch13/13.1/13.1-2-s.js b/js/src/tests/test262/ch13/13.1/13.1-2-s.js
new file mode 100644
index 000000000..0e3c4473a
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.1/13.1-2-s.js
@@ -0,0 +1,27 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * Refer 13.1;
+ * It is a SyntaxError if the Identifier "eval" or the Identifier "arguments" occurs within a FormalParameterList
+ * of a strict mode FunctionDeclaration or FunctionExpression.
+ *
+ * @path ch13/13.1/13.1-2-s.js
+ * @description Strict Mode - SyntaxError is thrown if the identifier 'eval' appears within a FormalParameterList of a strict mode FunctionExpression
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+
+ try {
+ eval("var _13_1_2_fun = function (eval) { }");
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch13/13.1/13.1-20-s.js b/js/src/tests/test262/ch13/13.1/13.1-20-s.js
new file mode 100644
index 000000000..064bc4deb
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.1/13.1-20-s.js
@@ -0,0 +1,26 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * Refer 13.1;
+ * It is a SyntaxError if the Identifier "eval" or the Identifier "arguments" occurs within a FormalParameterList
+ * of a strict mode FunctionDeclaration or FunctionExpression.
+ *
+ * @path ch13/13.1/13.1-20-s.js
+ * @description StrictMode - SyntaxError is thrown if the identifier 'arguments' appears within a FormalParameterList of a strict mode FunctionDeclaration when FuctionBody is strict code
+ * @onlyStrict
+ */
+
+
+function testcase() {
+
+ try {
+ eval("function _13_1_20_fun(arguments) { 'use strict'; }");
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch13/13.1/13.1-21-s.js b/js/src/tests/test262/ch13/13.1/13.1-21-s.js
new file mode 100644
index 000000000..2bf127083
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.1/13.1-21-s.js
@@ -0,0 +1,26 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * Refer 13.1;
+ * It is a SyntaxError if the Identifier "eval" or the Identifier "arguments" occurs within a FormalParameterList
+ * of a strict mode FunctionDeclaration or FunctionExpression.
+ *
+ * @path ch13/13.1/13.1-21-s.js
+ * @description StrictMode - SyntaxError is thrown if the identifier 'arguments' appears within a FormalParameterList of a strict mode FunctionExpression in strict eval code
+ * @onlyStrict
+ */
+
+
+function testcase() {
+
+ try {
+ eval("'use strict'; var _13_1_21_fun = function (arguments) { }");
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch13/13.1/13.1-22-s.js b/js/src/tests/test262/ch13/13.1/13.1-22-s.js
new file mode 100644
index 000000000..38e2e9726
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.1/13.1-22-s.js
@@ -0,0 +1,26 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * Refer 13.1;
+ * It is a SyntaxError if the Identifier "eval" or the Identifier "arguments" occurs within a FormalParameterList
+ * of a strict mode FunctionDeclaration or FunctionExpression.
+ *
+ * @path ch13/13.1/13.1-22-s.js
+ * @description StrictMode - SyntaxError is thrown if the identifier 'arguments' appears within a FormalParameterList of a strict mode FunctionExpression when FuctionBody is strict code
+ * @onlyStrict
+ */
+
+
+function testcase() {
+
+ try {
+ eval("var _13_1_22_fun = function (arguments) { 'use strict'; }");
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch13/13.1/13.1-23-s.js b/js/src/tests/test262/ch13/13.1/13.1-23-s.js
new file mode 100644
index 000000000..748044089
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.1/13.1-23-s.js
@@ -0,0 +1,26 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * Refer 13.1;
+ * It is a SyntaxError if any Identifier value occurs more than once within a FormalParameterList of a strict mode
+ * FunctionDeclaration or FunctionExpression.
+ *
+ * @path ch13/13.1/13.1-23-s.js
+ * @description Strict Mode - SyntaxError is thrown if a function is created using a FunctionDeclaration that is contained in eval strict code and the function has two identical parameters
+ * @onlyStrict
+ */
+
+
+function testcase() {
+
+ try {
+ eval("'use strict'; function _13_1_23_fun(param, param) { }");
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch13/13.1/13.1-24-s.js b/js/src/tests/test262/ch13/13.1/13.1-24-s.js
new file mode 100644
index 000000000..b39fc5c19
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.1/13.1-24-s.js
@@ -0,0 +1,26 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * Refer 13.1;
+ * It is a SyntaxError if any Identifier value occurs more than once within a FormalParameterList of a strict mode
+ * FunctionDeclaration or FunctionExpression.
+ *
+ * @path ch13/13.1/13.1-24-s.js
+ * @description Strict Mode - SyntaxError is thrown if a function is created using a FunctionDeclaration whose FunctionBody is contained in strict code and the function has two identical parameters
+ * @onlyStrict
+ */
+
+
+function testcase() {
+
+ try {
+ eval("function _13_1_24_fun(param, param) { 'use strict'; }");
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch13/13.1/13.1-25-s.js b/js/src/tests/test262/ch13/13.1/13.1-25-s.js
new file mode 100644
index 000000000..45b0026b5
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.1/13.1-25-s.js
@@ -0,0 +1,26 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * Refer 13.1;
+ * It is a SyntaxError if any Identifier value occurs more than once within a FormalParameterList of a strict mode
+ * FunctionDeclaration or FunctionExpression.
+ *
+ * @path ch13/13.1/13.1-25-s.js
+ * @description Strict Mode - SyntaxError is thrown if a function is created using a FunctionDeclaration that is contained in eval strict code and the function has two identical parameters which are separated by a unique parameter name
+ * @onlyStrict
+ */
+
+
+function testcase() {
+
+ try {
+ eval("'use strict'; function _13_1_25_fun(param1, param2, param1) { }");
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch13/13.1/13.1-26-s.js b/js/src/tests/test262/ch13/13.1/13.1-26-s.js
new file mode 100644
index 000000000..c9f9410fd
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.1/13.1-26-s.js
@@ -0,0 +1,26 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * Refer 13.1;
+ * It is a SyntaxError if any Identifier value occurs more than once within a FormalParameterList of a strict mode
+ * FunctionDeclaration or FunctionExpression.
+ *
+ * @path ch13/13.1/13.1-26-s.js
+ * @description Strict Mode - SyntaxError is thrown if a function is created using a FunctionDeclaration whose FunctionBody is contained in strict code and the function has two identical parameters which are separated by a unique parameter name
+ * @onlyStrict
+ */
+
+
+function testcase() {
+
+ try {
+ eval("function _13_1_26_fun(param1, param2, param1) { 'use strict'; }");
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch13/13.1/13.1-27-s.js b/js/src/tests/test262/ch13/13.1/13.1-27-s.js
new file mode 100644
index 000000000..aa5084332
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.1/13.1-27-s.js
@@ -0,0 +1,26 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * Refer 13.1;
+ * It is a SyntaxError if any Identifier value occurs more than once within a FormalParameterList of a strict mode
+ * FunctionDeclaration or FunctionExpression.
+ *
+ * @path ch13/13.1/13.1-27-s.js
+ * @description Strict Mode - SyntaxError is thrown if a function is created using a FunctionDeclaration that is contained in eval strict code and the function has three identical parameters
+ * @onlyStrict
+ */
+
+
+function testcase() {
+
+ try {
+ eval("'use strict'; function _13_1_27_fun(param, param, param) { }");
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch13/13.1/13.1-28-s.js b/js/src/tests/test262/ch13/13.1/13.1-28-s.js
new file mode 100644
index 000000000..1dbda4fc5
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.1/13.1-28-s.js
@@ -0,0 +1,27 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * Refer 13.1;
+ * It is a SyntaxError if any Identifier value occurs more than once within a FormalParameterList of a strict mode
+ * FunctionDeclaration or FunctionExpression.
+ *
+ * @path ch13/13.1/13.1-28-s.js
+ * @description Strict Mode - SyntaxError is thrown if a function is created using a FunctionDeclaration whose FunctionBody is contained in strict code and the function has three identical parameters
+ * @onlyStrict
+ */
+
+
+function testcase() {
+
+
+ try {
+ eval("function _13_1_28_fun(param, param, param) { 'use strict'; }");
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch13/13.1/13.1-29-s.js b/js/src/tests/test262/ch13/13.1/13.1-29-s.js
new file mode 100644
index 000000000..a7c74290d
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.1/13.1-29-s.js
@@ -0,0 +1,26 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * Refer 13.1;
+ * It is a SyntaxError if any Identifier value occurs more than once within a FormalParameterList of a strict mode
+ * FunctionDeclaration or FunctionExpression.
+ *
+ * @path ch13/13.1/13.1-29-s.js
+ * @description Strict Mode - SyntaxError is thrown if a function is created using a FunctionExpression that is contained in eval strict code and the function has two identical parameters
+ * @onlyStrict
+ */
+
+
+function testcase() {
+
+ try {
+ eval("'use strict'; var _13_1_29_fun = function (param, param) { };");
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch13/13.1/13.1-3-1.js b/js/src/tests/test262/ch13/13.1/13.1-3-1.js
new file mode 100644
index 000000000..47598c165
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.1/13.1-3-1.js
@@ -0,0 +1,21 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch13/13.1/13.1-3-1.js
+ * @description eval allowed as function identifier in non-strict function declaration
+ */
+
+
+function testcase()
+{
+ try
+ {
+ eval("function eval(){};");
+ return true;
+ }
+ catch (e) { }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch13/13.1/13.1-3-2.js b/js/src/tests/test262/ch13/13.1/13.1-3-2.js
new file mode 100644
index 000000000..598e3faf6
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.1/13.1-3-2.js
@@ -0,0 +1,21 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch13/13.1/13.1-3-2.js
+ * @description eval allowed as function identifier in non-strict function expression
+ */
+
+
+function testcase()
+{
+ try
+ {
+ eval("(function eval(){});");
+ return true;
+ }
+ catch (e) { }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch13/13.1/13.1-3-7.js b/js/src/tests/test262/ch13/13.1/13.1-3-7.js
new file mode 100644
index 000000000..c6bbd159c
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.1/13.1-3-7.js
@@ -0,0 +1,21 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch13/13.1/13.1-3-7.js
+ * @description arguments allowed as function identifier in non-strict function declaration
+ */
+
+
+function testcase()
+{
+ try
+ {
+ eval("function arguments (){};");
+ return true;
+ }
+ catch (e) { }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch13/13.1/13.1-3-8.js b/js/src/tests/test262/ch13/13.1/13.1-3-8.js
new file mode 100644
index 000000000..cd9ef9a2a
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.1/13.1-3-8.js
@@ -0,0 +1,21 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch13/13.1/13.1-3-8.js
+ * @description arguments allowed as function identifier in non-strict function expression
+ */
+
+
+function testcase()
+{
+ try
+ {
+ eval("(function arguments (){});");
+ return true;
+ }
+ catch (e) { }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch13/13.1/13.1-3-s.js b/js/src/tests/test262/ch13/13.1/13.1-3-s.js
new file mode 100644
index 000000000..ecc0385ea
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.1/13.1-3-s.js
@@ -0,0 +1,27 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * Refer 13.1;
+ * It is a SyntaxError if the Identifier "eval" or the Identifier "arguments" occurs within a FormalParameterList
+ * of a strict mode FunctionDeclaration or FunctionExpression.
+ *
+ * @path ch13/13.1/13.1-3-s.js
+ * @description Strict Mode - SyntaxError is thrown if the identifier 'arguments' appears within a FormalParameterList of a strict mode FunctionDeclaration
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+
+ try {
+ eval("function _13_1_3_fun(arguments) { }");
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch13/13.1/13.1-30-s.js b/js/src/tests/test262/ch13/13.1/13.1-30-s.js
new file mode 100644
index 000000000..b07291c1d
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.1/13.1-30-s.js
@@ -0,0 +1,26 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * Refer 13.1;
+ * It is a SyntaxError if any Identifier value occurs more than once within a FormalParameterList of a strict mode
+ * FunctionDeclaration or FunctionExpression.
+ *
+ * @path ch13/13.1/13.1-30-s.js
+ * @description Strict Mode - SyntaxError is thrown if a function is created using a FunctionExpression whose FunctionBody is contained in strict code and the function has two identical parameters
+ * @onlyStrict
+ */
+
+
+function testcase() {
+
+ try {
+ eval("var _13_1_30_fun = function (param, param) { 'use strict'; };");
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch13/13.1/13.1-31-s.js b/js/src/tests/test262/ch13/13.1/13.1-31-s.js
new file mode 100644
index 000000000..1e47d2acf
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.1/13.1-31-s.js
@@ -0,0 +1,26 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * Refer 13.1;
+ * It is a SyntaxError if any Identifier value occurs more than once within a FormalParameterList of a strict mode
+ * FunctionDeclaration or FunctionExpression.
+ *
+ * @path ch13/13.1/13.1-31-s.js
+ * @description Strict Mode - SyntaxError is thrown if a function is created using a FunctionExpression that is contained in eval strict code and the function has two identical parameters, which are separated by a unique parameter name
+ * @onlyStrict
+ */
+
+
+function testcase() {
+
+ try {
+ eval("'use strict'; var _13_1_31_fun = function (param1, param2, param1) { };");
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch13/13.1/13.1-32-s.js b/js/src/tests/test262/ch13/13.1/13.1-32-s.js
new file mode 100644
index 000000000..b1a4ef8b1
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.1/13.1-32-s.js
@@ -0,0 +1,26 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * Refer 13.1;
+ * It is a SyntaxError if any Identifier value occurs more than once within a FormalParameterList of a strict mode
+ * FunctionDeclaration or FunctionExpression.
+ *
+ * @path ch13/13.1/13.1-32-s.js
+ * @description Strict Mode - SyntaxError is thrown if a function is created using a FunctionExpression whose FunctionBody is strict and the function has two identical parameters, which are separated by a unique parameter name
+ * @onlyStrict
+ */
+
+
+function testcase() {
+
+ try {
+ eval("var _13_1_32_fun = function (param1, param2, param1) { 'use strict'; };");
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch13/13.1/13.1-33-s.js b/js/src/tests/test262/ch13/13.1/13.1-33-s.js
new file mode 100644
index 000000000..bcffbd023
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.1/13.1-33-s.js
@@ -0,0 +1,26 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * Refer 13.1;
+ * It is a SyntaxError if any Identifier value occurs more than once within a FormalParameterList of a strict mode
+ * FunctionDeclaration or FunctionExpression.
+ *
+ * @path ch13/13.1/13.1-33-s.js
+ * @description Strict Mode - SyntaxError is thrown if function is created using a FunctionExpression that is contained in eval strict code and the function has three identical parameters
+ * @onlyStrict
+ */
+
+
+function testcase() {
+
+ try {
+ eval("'use strict'; var _13_1_33_fun = function (param, param, param) { };")
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch13/13.1/13.1-34-s.js b/js/src/tests/test262/ch13/13.1/13.1-34-s.js
new file mode 100644
index 000000000..aca13ea5d
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.1/13.1-34-s.js
@@ -0,0 +1,26 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * Refer 13.1;
+ * It is a SyntaxError if any Identifier value occurs more than once within a FormalParameterList of a strict mode
+ * FunctionDeclaration or FunctionExpression.
+ *
+ * @path ch13/13.1/13.1-34-s.js
+ * @description Strict Mode - SyntaxError is thrown if a function declaration has three identical parameters with a strict mode body
+ * @onlyStrict
+ */
+
+
+function testcase() {
+
+ try {
+ eval("var _13_1_34_fun = function (param, param, param) { 'use strict'; };")
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch13/13.1/13.1-35-s.js b/js/src/tests/test262/ch13/13.1/13.1-35-s.js
new file mode 100644
index 000000000..ebe7e71f2
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.1/13.1-35-s.js
@@ -0,0 +1,22 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch13/13.1/13.1-35-s.js
+ * @description StrictMode - SyntaxError is thrown if 'eval' occurs as the function name of a FunctionDeclaration in strict eval code
+ * @onlyStrict
+ */
+
+
+function testcase() {
+
+ try {
+ eval("'use strict'; function eval() { };")
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch13/13.1/13.1-36-s.js b/js/src/tests/test262/ch13/13.1/13.1-36-s.js
new file mode 100644
index 000000000..63d08a282
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.1/13.1-36-s.js
@@ -0,0 +1,22 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch13/13.1/13.1-36-s.js
+ * @description StrictMode - SyntaxError is thrown if 'eval' occurs as the function name of a FunctionDeclaration whose FunctionBody is in strict mode
+ * @onlyStrict
+ */
+
+
+function testcase() {
+
+ try {
+ eval("function eval() { 'use strict'; };")
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch13/13.1/13.1-37-s.js b/js/src/tests/test262/ch13/13.1/13.1-37-s.js
new file mode 100644
index 000000000..c2f27c0f1
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.1/13.1-37-s.js
@@ -0,0 +1,22 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch13/13.1/13.1-37-s.js
+ * @description StrictMode - SyntaxError is thrown if 'eval' occurs as the Identifier of a FunctionExpression in strict eval code
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ var _13_1_37_s = {};
+ try {
+ eval("'use strict'; _13_1_37_s.x = function eval() {};");
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch13/13.1/13.1-38-s.js b/js/src/tests/test262/ch13/13.1/13.1-38-s.js
new file mode 100644
index 000000000..5d73e72c3
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.1/13.1-38-s.js
@@ -0,0 +1,22 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch13/13.1/13.1-38-s.js
+ * @description StrictMode - SyntaxError is thrown if 'eval' occurs as the Identifier of a FunctionExpression whose FunctionBody is contained in strict code
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ var _13_1_38_s = {};
+ try {
+ eval("_13_1_38_s.x = function eval() {'use strict'; };");
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch13/13.1/13.1-39-s.js b/js/src/tests/test262/ch13/13.1/13.1-39-s.js
new file mode 100644
index 000000000..54eb5ee03
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.1/13.1-39-s.js
@@ -0,0 +1,22 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch13/13.1/13.1-39-s.js
+ * @description StrictMode - SyntaxError is thrown if 'arguments' occurs as the function name of a FunctionDeclaration in strict eval code
+ * @onlyStrict
+ */
+
+
+function testcase() {
+
+ try {
+ eval("'use strict'; function arguments() { };")
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch13/13.1/13.1-4-s.js b/js/src/tests/test262/ch13/13.1/13.1-4-s.js
new file mode 100644
index 000000000..ba0c1cee4
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.1/13.1-4-s.js
@@ -0,0 +1,27 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * Refer 13.1;
+ * It is a SyntaxError if the Identifier "eval" or the Identifier "arguments" occurs within a FormalParameterList
+ * of a strict mode FunctionDeclaration or FunctionExpression.
+ *
+ * @path ch13/13.1/13.1-4-s.js
+ * @description Strict Mode - SyntaxError is thrown if the identifier 'arguments' appears within a FormalParameterList of a strict mode FunctionExpression
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+
+ try {
+ eval("var _13_1_4_fun = function (arguments) { };");
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch13/13.1/13.1-40-s.js b/js/src/tests/test262/ch13/13.1/13.1-40-s.js
new file mode 100644
index 000000000..42d7bcbba
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.1/13.1-40-s.js
@@ -0,0 +1,22 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch13/13.1/13.1-40-s.js
+ * @description StrictMode - SyntaxError is thrown if 'arguments' occurs as the Identifier of a FunctionDeclaration whose FunctionBody is contained in strict code
+ * @onlyStrict
+ */
+
+
+function testcase() {
+
+ try {
+ eval("function arguments() { 'use strict'; };")
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch13/13.1/13.1-41-s.js b/js/src/tests/test262/ch13/13.1/13.1-41-s.js
new file mode 100644
index 000000000..9a9a3ca2b
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.1/13.1-41-s.js
@@ -0,0 +1,22 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch13/13.1/13.1-41-s.js
+ * @description StrictMode - SyntaxError is thrown if 'arguments' occurs as the Identifier of a FunctionExpression in strict eval code
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ var _13_1_41_s = {};
+ try {
+ eval("'use strict'; _13_1_41_s.x = function arguments() {};");
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch13/13.1/13.1-42-s.js b/js/src/tests/test262/ch13/13.1/13.1-42-s.js
new file mode 100644
index 000000000..f19d56c98
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.1/13.1-42-s.js
@@ -0,0 +1,22 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch13/13.1/13.1-42-s.js
+ * @description StrictMode - SyntaxError is thrown if 'arguments' occurs as the Identifier of a FunctionExpression whose FunctionBody is contained in strict code
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ var _13_1_42_s = {};
+ try {
+ eval("_13_1_42_s.x = function arguments() {'use strict';};");
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch13/13.1/13.1-4gs.js b/js/src/tests/test262/ch13/13.1/13.1-4gs.js
new file mode 100644
index 000000000..0c501018a
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.1/13.1-4gs.js
@@ -0,0 +1,14 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch13/13.1/13.1-4gs.js
+ * @description Strict Mode - SyntaxError is thrown if the identifier 'arguments' appears within a FormalParameterList of a strict mode FunctionExpression
+ * @onlyStrict
+ * @negative ^((?!NotEarlyError).)*$
+ */
+"use strict";
+throw NotEarlyError;
+var _13_1_4_fun = function (arguments) { }; \ No newline at end of file
diff --git a/js/src/tests/test262/ch13/13.1/13.1-5-s.js b/js/src/tests/test262/ch13/13.1/13.1-5-s.js
new file mode 100644
index 000000000..6d13ca135
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.1/13.1-5-s.js
@@ -0,0 +1,27 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * Refer 13.1;
+ * It is a SyntaxError if any Identifier value occurs more than once within a FormalParameterList of a strict mode
+ * FunctionDeclaration or FunctionExpression.
+ *
+ * @path ch13/13.1/13.1-5-s.js
+ * @description Strict Mode - SyntaxError is thrown if a function is declared in 'strict mode' using a FunctionDeclaration and the function has two identical parameters
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+
+ try {
+ eval("function _13_1_5_fun(param, param) { }");
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch13/13.1/13.1-5gs.js b/js/src/tests/test262/ch13/13.1/13.1-5gs.js
new file mode 100644
index 000000000..709deb1e9
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.1/13.1-5gs.js
@@ -0,0 +1,14 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch13/13.1/13.1-5gs.js
+ * @description Strict Mode - SyntaxError is thrown if a FunctionDeclaration has two identical parameters
+ * @onlyStrict
+ * @negative ^((?!NotEarlyError).)*$
+ */
+"use strict";
+throw NotEarlyError;
+function _13_1_5_fun(param, param) { } \ No newline at end of file
diff --git a/js/src/tests/test262/ch13/13.1/13.1-6-s.js b/js/src/tests/test262/ch13/13.1/13.1-6-s.js
new file mode 100644
index 000000000..10e6e7d9a
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.1/13.1-6-s.js
@@ -0,0 +1,27 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * Refer 13.1;
+ * It is a SyntaxError if any Identifier value occurs more than once within a FormalParameterList of a strict mode
+ * FunctionDeclaration or FunctionExpression.
+ *
+ * @path ch13/13.1/13.1-6-s.js
+ * @description Strict Mode - SyntaxError is thrown if a function is created in 'strict mode' using a FunctionDeclaration and the function has two identical parameters, which are separated by a unique parameter name
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+
+ try {
+ eval("function _13_1_6_fun(param1, param2, param1) { }");
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch13/13.1/13.1-7-s.js b/js/src/tests/test262/ch13/13.1/13.1-7-s.js
new file mode 100644
index 000000000..087a20f7e
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.1/13.1-7-s.js
@@ -0,0 +1,27 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * Refer 13.1;
+ * It is a SyntaxError if any Identifier value occurs more than once within a FormalParameterList of a strict mode
+ * FunctionDeclaration or FunctionExpression.
+ *
+ * @path ch13/13.1/13.1-7-s.js
+ * @description Strict Mode - SyntaxError is thrown if a function is created in 'strict mode' using a FunctionDeclaration and the function has three identical parameters
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+
+ try {
+ eval("function _13_1_7_fun(param, param, param) { }");
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch13/13.1/13.1-8-s.js b/js/src/tests/test262/ch13/13.1/13.1-8-s.js
new file mode 100644
index 000000000..eb9a3976b
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.1/13.1-8-s.js
@@ -0,0 +1,27 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * Refer 13.1;
+ * It is a SyntaxError if any Identifier value occurs more than once within a FormalParameterList of a strict mode
+ * FunctionDeclaration or FunctionExpression.
+ *
+ * @path ch13/13.1/13.1-8-s.js
+ * @description Strict Mode - SyntaxError is thrown if a function is created in 'strict mode' using a FunctionExpression and the function has two identical parameters
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+
+ try {
+ eval("var _13_1_8_fun = function (param, param) { };");
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch13/13.1/13.1-8gs.js b/js/src/tests/test262/ch13/13.1/13.1-8gs.js
new file mode 100644
index 000000000..f647656d9
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.1/13.1-8gs.js
@@ -0,0 +1,14 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch13/13.1/13.1-8gs.js
+ * @description Strict Mode - SyntaxError is thrown if a FunctionExpression has two identical parameters
+ * @onlyStrict
+ * @negative ^((?!NotEarlyError).)*$
+ */
+"use strict";
+throw NotEarlyError;
+var _13_1_8_fun = function (param, param) { }; \ No newline at end of file
diff --git a/js/src/tests/test262/ch13/13.1/13.1-9-s.js b/js/src/tests/test262/ch13/13.1/13.1-9-s.js
new file mode 100644
index 000000000..11aba0ce2
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.1/13.1-9-s.js
@@ -0,0 +1,27 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * Refer 13.1;
+ * It is a SyntaxError if any Identifier value occurs more than once within a FormalParameterList of a strict mode
+ * FunctionDeclaration or FunctionExpression.
+ *
+ * @path ch13/13.1/13.1-9-s.js
+ * @description Strict Mode - SyntaxError is thrown if a function is created in 'strict mode' using a FunctionExpression and the function has two identical parameters, which are separated by a unique parameter name
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+
+ try {
+ eval("var _13_1_9_fun = function (param1, param2, param1) { };");
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch13/13.1/browser.js b/js/src/tests/test262/ch13/13.1/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.1/browser.js
diff --git a/js/src/tests/test262/ch13/13.1/shell.js b/js/src/tests/test262/ch13/13.1/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.1/shell.js
diff --git a/js/src/tests/test262/ch13/13.2/13.2-1-s.js b/js/src/tests/test262/ch13/13.2/13.2-1-s.js
new file mode 100644
index 000000000..9b3b7e1d7
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.2/13.2-1-s.js
@@ -0,0 +1,22 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch13/13.2/13.2-1-s.js
+ * @description StrictMode - Writing or reading from a property named 'caller' of function objects is allowed under both strict and normal modes.
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+
+ var foo = function () {
+ this.caller = 12;
+ }
+ var obj = new foo();
+ return obj.caller === 12;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch13/13.2/13.2-10-s.js b/js/src/tests/test262/ch13/13.2/13.2-10-s.js
new file mode 100644
index 000000000..9ab52ea93
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.2/13.2-10-s.js
@@ -0,0 +1,24 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch13/13.2/13.2-10-s.js
+ * @description StrictMode - writing a property named 'caller' of function objects is not allowed outside the function
+ * @onlyStrict
+ */
+
+
+
+function testcase() {
+ var foo = Function("'use strict';");
+ try {
+ foo.caller = 41;
+ return false;
+ }
+ catch (e) {
+ return e instanceof TypeError;
+ }
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch13/13.2/13.2-11-s.js b/js/src/tests/test262/ch13/13.2/13.2-11-s.js
new file mode 100644
index 000000000..f08680ceb
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.2/13.2-11-s.js
@@ -0,0 +1,24 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch13/13.2/13.2-11-s.js
+ * @description StrictMode - enumerating over a function object looking for 'caller' fails outside of the function
+ * @onlyStrict
+ */
+
+
+
+function testcase() {
+ var foo = Function("'use strict';");
+
+ for (var tempIndex in foo) {
+ if (tempIndex === "caller") {
+ return false;
+ }
+ }
+ return true;
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch13/13.2/13.2-12-s.js b/js/src/tests/test262/ch13/13.2/13.2-12-s.js
new file mode 100644
index 000000000..ecb9ae413
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.2/13.2-12-s.js
@@ -0,0 +1,18 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch13/13.2/13.2-12-s.js
+ * @description StrictMode - enumerating over a function object looking for 'caller' fails inside the function
+ * @onlyStrict
+ */
+
+
+
+function testcase() {
+ var foo = Function("'use strict'; for (var tempIndex in this) {if (tempIndex===\"caller\") {return false;}}; return true;");
+ return foo();
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch13/13.2/13.2-13-s.js b/js/src/tests/test262/ch13/13.2/13.2-13-s.js
new file mode 100644
index 000000000..2a087ddad
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.2/13.2-13-s.js
@@ -0,0 +1,24 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch13/13.2/13.2-13-s.js
+ * @description StrictMode - reading a property named 'arguments' of function objects is not allowed outside the function
+ * @onlyStrict
+ */
+
+
+
+function testcase() {
+ var foo = new Function("'use strict';");
+ try {
+ var temp = foo.arguments;
+ return false;
+ }
+ catch (e) {
+ return e instanceof TypeError;
+ }
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch13/13.2/13.2-14-s.js b/js/src/tests/test262/ch13/13.2/13.2-14-s.js
new file mode 100644
index 000000000..53b9bf021
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.2/13.2-14-s.js
@@ -0,0 +1,24 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch13/13.2/13.2-14-s.js
+ * @description StrictMode - writing a property named 'arguments' of function objects is not allowed outside the function
+ * @onlyStrict
+ */
+
+
+
+function testcase() {
+ var foo = new Function("'use strict';");
+ try {
+ foo.arguments = 41;
+ return false;
+ }
+ catch (e) {
+ return e instanceof TypeError;
+ }
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch13/13.2/13.2-15-1.js b/js/src/tests/test262/ch13/13.2/13.2-15-1.js
new file mode 100644
index 000000000..7575c6037
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.2/13.2-15-1.js
@@ -0,0 +1,35 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch13/13.2/13.2-15-1.js
+ * @description Function Object has length as its own property and does not invoke the setter defined on Function.prototype.length (Step 15)
+ */
+
+
+function testcase() {
+ var fun = function (x, y) { };
+
+ var verifyValue = false;
+ verifyValue = (fun.hasOwnProperty("length") && fun.length === 2);
+
+ var verifyWritable = false;
+ fun.length = 1001;
+ verifyWritable = (fun.length === 1001);
+
+ var verifyEnumerable = false;
+ for (var p in fun) {
+ if (p === "length") {
+ verifyEnumerable = true;
+ }
+ }
+
+ var verifyConfigurable = false;
+ delete fun.length;
+ verifyConfigurable = fun.hasOwnProperty("length");
+
+ return verifyValue && !verifyWritable && !verifyEnumerable && verifyConfigurable;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch13/13.2/13.2-15-s.js b/js/src/tests/test262/ch13/13.2/13.2-15-s.js
new file mode 100644
index 000000000..b14dd3cad
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.2/13.2-15-s.js
@@ -0,0 +1,24 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch13/13.2/13.2-15-s.js
+ * @description StrictMode - enumerating over a function object looking for 'arguments' fails outside of the function
+ * @onlyStrict
+ */
+
+
+
+function testcase() {
+ var foo = new Function("'use strict';");
+
+ for (var tempIndex in foo) {
+ if (tempIndex === "arguments") {
+ return false;
+ }
+ }
+ return true;
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch13/13.2/13.2-16-s.js b/js/src/tests/test262/ch13/13.2/13.2-16-s.js
new file mode 100644
index 000000000..154887e9a
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.2/13.2-16-s.js
@@ -0,0 +1,18 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch13/13.2/13.2-16-s.js
+ * @description StrictMode - enumerating over a function object looking for 'arguments' fails inside the function
+ * @onlyStrict
+ */
+
+
+
+function testcase() {
+ var foo = new Function("'use strict'; for (var tempIndex in this) {if (tempIndex===\"arguments\") {return false;}}; return true;");
+ return foo();
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch13/13.2/13.2-17-1.js b/js/src/tests/test262/ch13/13.2/13.2-17-1.js
new file mode 100644
index 000000000..654f2b5dd
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.2/13.2-17-1.js
@@ -0,0 +1,55 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch13/13.2/13.2-17-1.js
+ * @description Function Object has 'constructor' as its own property, it is not enumerable and does not invoke the setter defined on Function.prototype.constructor (Step 17)
+ */
+
+
+function testcase() {
+ var desc = Object.getOwnPropertyDescriptor(Object.prototype, "constructor");
+ try {
+ var getFunc = function () {
+ return 100;
+ };
+
+ var data = "data";
+ var setFunc = function (value) {
+ data = value;
+ };
+
+ Object.defineProperty(Object.prototype, "constructor", {
+ get: getFunc,
+ set: setFunc,
+ configurable: true
+ });
+
+ var fun = function () {};
+
+ var verifyValue = false;
+ verifyValue = typeof fun.prototype.constructor === "function";
+
+ var verifyEnumerable = false;
+ for (var p in fun.prototype) {
+ if (p === "constructor" && fun.prototype.hasOwnProperty("constructor")) {
+ verifyEnumerable = true;
+ }
+ }
+
+ var verifyWritable = false;
+ fun.prototype.constructor = 12;
+ verifyWritable = (fun.prototype.constructor === 12);
+
+ var verifyConfigurable = false;
+ delete fun.prototype.constructor;
+ verifyConfigurable = fun.hasOwnProperty("constructor");
+
+ return verifyValue && verifyWritable && !verifyEnumerable && !verifyConfigurable && data === "data";
+ } finally {
+ Object.defineProperty(Object.prototype, "constructor", desc);
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch13/13.2/13.2-17-s.js b/js/src/tests/test262/ch13/13.2/13.2-17-s.js
new file mode 100644
index 000000000..6ff1776b6
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.2/13.2-17-s.js
@@ -0,0 +1,24 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch13/13.2/13.2-17-s.js
+ * @description StrictMode - reading a property named 'arguments' of function objects is not allowed outside the function
+ * @onlyStrict
+ */
+
+
+
+function testcase() {
+ var foo = Function("'use strict';");
+ try {
+ var temp = foo.arguments;
+ return false;
+ }
+ catch (e) {
+ return e instanceof TypeError;
+ }
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch13/13.2/13.2-18-1.js b/js/src/tests/test262/ch13/13.2/13.2-18-1.js
new file mode 100644
index 000000000..d3614872c
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.2/13.2-18-1.js
@@ -0,0 +1,53 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch13/13.2/13.2-18-1.js
+ * @description Function Object has 'prototype' as its own property, it is not enumerable and does not invoke the setter defined on Function.prototype (Step 18)
+ */
+
+
+function testcase() {
+ try {
+ var getFunc = function () {
+ return 100;
+ };
+
+ var data = "data";
+ var setFunc = function (value) {
+ data = value;
+ };
+ Object.defineProperty(Function.prototype, "prototype", {
+ get: getFunc,
+ set: setFunc,
+ configurable: true
+ });
+
+ var fun = function () { };
+
+ var verifyValue = false;
+ verifyValue = (fun.prototype !== 100 && fun.prototype.toString() === "[object Object]");
+
+ var verifyEnumerable = false;
+ for (var p in fun) {
+ if (p === "prototype" && fun.hasOwnProperty("prototype")) {
+ verifyEnumerable = true;
+ }
+ }
+
+ var verifyConfigurable = false;
+ delete fun.prototype;
+ verifyConfigurable = fun.hasOwnProperty("prototype");
+
+ var verifyWritable = false;
+ fun.prototype = 12
+ verifyWritable = (fun.prototype === 12);
+
+ return verifyValue && verifyWritable && !verifyEnumerable && verifyConfigurable && data === "data";
+ } finally {
+ delete Function.prototype.prototype;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch13/13.2/13.2-18-s.js b/js/src/tests/test262/ch13/13.2/13.2-18-s.js
new file mode 100644
index 000000000..c0ac07cc9
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.2/13.2-18-s.js
@@ -0,0 +1,24 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch13/13.2/13.2-18-s.js
+ * @description StrictMode - writing a property named 'arguments' of function objects is not allowed outside the function
+ * @onlyStrict
+ */
+
+
+
+function testcase() {
+ var foo = Function("'use strict';");
+ try {
+ foo.arguments = 41;
+ return false;
+ }
+ catch (e) {
+ return e instanceof TypeError;
+ }
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch13/13.2/13.2-19-b-3gs.js b/js/src/tests/test262/ch13/13.2/13.2-19-b-3gs.js
new file mode 100644
index 000000000..cd356070d
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.2/13.2-19-b-3gs.js
@@ -0,0 +1,15 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch13/13.2/13.2-19-b-3gs.js
+ * @description StrictMode - error is thrown when assign a value to the 'caller' property of a function object
+ * @onlyStrict
+ * @negative NotEarlyError
+ */
+"use strict";
+throw NotEarlyError;
+function _13_2_19_b_3_gs() {}
+_13_2_19_b_3_gs.caller = 1;
diff --git a/js/src/tests/test262/ch13/13.2/13.2-19-s.js b/js/src/tests/test262/ch13/13.2/13.2-19-s.js
new file mode 100644
index 000000000..5e8b67e6a
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.2/13.2-19-s.js
@@ -0,0 +1,24 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch13/13.2/13.2-19-s.js
+ * @description StrictMode - enumerating over a function object looking for 'arguments' fails outside of the function
+ * @onlyStrict
+ */
+
+
+
+function testcase() {
+ var foo = Function("'use strict';");
+
+ for (var tempIndex in foo) {
+ if (tempIndex === "arguments") {
+ return false;
+ }
+ }
+ return true;
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch13/13.2/13.2-2-s.js b/js/src/tests/test262/ch13/13.2/13.2-2-s.js
new file mode 100644
index 000000000..f2bdf6898
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.2/13.2-2-s.js
@@ -0,0 +1,24 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch13/13.2/13.2-2-s.js
+ * @description StrictMode - A TypeError is thrown when a strict mode code writes to properties named 'caller' of function instances.
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+ try {
+ var foo = function () {
+ }
+ foo.caller = 20;
+ return false;
+ } catch (ex) {
+ return ex instanceof TypeError;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch13/13.2/13.2-20-s.js b/js/src/tests/test262/ch13/13.2/13.2-20-s.js
new file mode 100644
index 000000000..5eee4a321
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.2/13.2-20-s.js
@@ -0,0 +1,18 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch13/13.2/13.2-20-s.js
+ * @description StrictMode - enumerating over a function object looking for 'arguments' fails inside the function
+ * @onlyStrict
+ */
+
+
+
+function testcase() {
+ var foo = Function("'use strict'; for (var tempIndex in this) {if (tempIndex===\"arguments\") {return false;}}; return true;");
+ return foo();
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch13/13.2/13.2-21-s.js b/js/src/tests/test262/ch13/13.2/13.2-21-s.js
new file mode 100644
index 000000000..42ad83815
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.2/13.2-21-s.js
@@ -0,0 +1,24 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch13/13.2/13.2-21-s.js
+ * @description StrictMode - reading a property named 'caller' of function objects is not allowed outside the function
+ * @onlyStrict
+ */
+
+
+
+function testcase() {
+ function foo () {"use strict";}
+ try {
+ var temp = foo.caller;
+ return false;
+ }
+ catch (e) {
+ return e instanceof TypeError;
+ }
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch13/13.2/13.2-22-s.js b/js/src/tests/test262/ch13/13.2/13.2-22-s.js
new file mode 100644
index 000000000..ab901903c
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.2/13.2-22-s.js
@@ -0,0 +1,24 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch13/13.2/13.2-22-s.js
+ * @description StrictMode - writing a property named 'caller' of function objects is not allowed outside the function
+ * @onlyStrict
+ */
+
+
+
+function testcase() {
+ function foo () {"use strict";}
+ try {
+ foo.caller = 41;
+ return false;
+ }
+ catch (e) {
+ return e instanceof TypeError;
+ }
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch13/13.2/13.2-23-s.js b/js/src/tests/test262/ch13/13.2/13.2-23-s.js
new file mode 100644
index 000000000..0e89b66ae
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.2/13.2-23-s.js
@@ -0,0 +1,23 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch13/13.2/13.2-23-s.js
+ * @description StrictMode - enumerating over a function object looking for 'caller' fails outside of the function
+ * @onlyStrict
+ */
+
+
+
+function testcase() {
+ function foo () {"use strict";}
+ for (var tempIndex in foo) {
+ if (tempIndex === "caller") {
+ return false;
+ }
+ }
+ return true;
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch13/13.2/13.2-24-s.js b/js/src/tests/test262/ch13/13.2/13.2-24-s.js
new file mode 100644
index 000000000..f9008fc56
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.2/13.2-24-s.js
@@ -0,0 +1,26 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch13/13.2/13.2-24-s.js
+ * @description StrictMode - enumerating over a function object looking for 'caller' fails inside the function
+ * @onlyStrict
+ */
+
+
+
+function testcase() {
+ function foo () {
+ "use strict";
+ for (var tempIndex in this) {
+ if (tempIndex==="caller") {
+ return false;
+ }
+ }
+ return true;
+ }
+ return foo();
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch13/13.2/13.2-25-s.js b/js/src/tests/test262/ch13/13.2/13.2-25-s.js
new file mode 100644
index 000000000..b4c650897
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.2/13.2-25-s.js
@@ -0,0 +1,24 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch13/13.2/13.2-25-s.js
+ * @description StrictMode - reading a property named 'arguments' of function objects is not allowed outside the function
+ * @onlyStrict
+ */
+
+
+
+function testcase() {
+ function foo () {"use strict";}
+ try {
+ var temp = foo.arguments;
+ return false;
+ }
+ catch (e) {
+ return e instanceof TypeError;
+ }
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch13/13.2/13.2-26-s.js b/js/src/tests/test262/ch13/13.2/13.2-26-s.js
new file mode 100644
index 000000000..68682ce31
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.2/13.2-26-s.js
@@ -0,0 +1,24 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch13/13.2/13.2-26-s.js
+ * @description StrictMode - writing a property named 'arguments' of function objects is not allowed outside the function
+ * @onlyStrict
+ */
+
+
+
+function testcase() {
+ function foo () {"use strict";}
+ try {
+ foo.arguments = 41;
+ return false;
+ }
+ catch (e) {
+ return e instanceof TypeError;
+ }
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch13/13.2/13.2-27-s.js b/js/src/tests/test262/ch13/13.2/13.2-27-s.js
new file mode 100644
index 000000000..d6177986a
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.2/13.2-27-s.js
@@ -0,0 +1,24 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch13/13.2/13.2-27-s.js
+ * @description StrictMode - enumerating over a function object looking for 'arguments' fails outside of the function
+ * @onlyStrict
+ */
+
+
+
+function testcase() {
+ function foo () {"use strict";}
+
+ for (var tempIndex in foo) {
+ if (tempIndex === "arguments") {
+ return false;
+ }
+ }
+ return true;
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch13/13.2/13.2-28-s.js b/js/src/tests/test262/ch13/13.2/13.2-28-s.js
new file mode 100644
index 000000000..dd9dad3ee
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.2/13.2-28-s.js
@@ -0,0 +1,26 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch13/13.2/13.2-28-s.js
+ * @description StrictMode - enumerating over a function object looking for 'arguments' fails inside the function
+ * @onlyStrict
+ */
+
+
+
+function testcase() {
+ function foo() {
+ "use strict";
+ for (var tempIndex in this) {
+ if (tempIndex==="arguments") {
+ return false;
+ }
+ }
+ return true;
+ }
+ return foo();
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch13/13.2/13.2-29-s.js b/js/src/tests/test262/ch13/13.2/13.2-29-s.js
new file mode 100644
index 000000000..c84a8b2e6
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.2/13.2-29-s.js
@@ -0,0 +1,19 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch13/13.2/13.2-29-s.js
+ * @description StrictMode - property named 'caller' of function objects is not configurable
+ * @onlyStrict
+ */
+
+
+
+function testcase() {
+ function foo() {"use strict";}
+ return Object.getOwnPropertyDescriptor(foo,
+ "caller") === undefined;
+}
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch13/13.2/13.2-3-s.js b/js/src/tests/test262/ch13/13.2/13.2-3-s.js
new file mode 100644
index 000000000..642f417c7
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.2/13.2-3-s.js
@@ -0,0 +1,22 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch13/13.2/13.2-3-s.js
+ * @description StrictMode - Writing or reading from a property named 'arguments' of function objects is allowed under both strict and normal modes.
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+
+ var foo = function () {
+ this.arguments = 12;
+ }
+ var obj = new foo();
+ return obj.arguments === 12;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch13/13.2/13.2-30-s.js b/js/src/tests/test262/ch13/13.2/13.2-30-s.js
new file mode 100644
index 000000000..8fed90947
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.2/13.2-30-s.js
@@ -0,0 +1,18 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch13/13.2/13.2-30-s.js
+ * @description StrictMode - property named 'caller' of function objects is not configurable
+ * @onlyStrict
+ */
+
+
+
+function testcase() {
+ return Object.getOwnPropertyDescriptor(Function("'use strict';"),
+ "caller") === undefined;
+}
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch13/13.2/13.2-31-s.js b/js/src/tests/test262/ch13/13.2/13.2-31-s.js
new file mode 100644
index 000000000..41a438483
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.2/13.2-31-s.js
@@ -0,0 +1,18 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch13/13.2/13.2-31-s.js
+ * @description StrictMode - property named 'caller' of function objects is not configurable
+ * @onlyStrict
+ */
+
+
+
+function testcase() {
+ return Object.getOwnPropertyDescriptor(new Function("'use strict';"),
+ "caller") === undefined;
+}
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch13/13.2/13.2-32-s.js b/js/src/tests/test262/ch13/13.2/13.2-32-s.js
new file mode 100644
index 000000000..9c9bdb7f9
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.2/13.2-32-s.js
@@ -0,0 +1,19 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch13/13.2/13.2-32-s.js
+ * @description StrictMode - property named 'caller' of function objects is not configurable
+ * @onlyStrict
+ */
+
+
+
+function testcase() {
+ var funcExpr = function () { "use strict";};
+ return Object.getOwnPropertyDescriptor(funcExpr,
+ "caller") === undefined;
+}
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch13/13.2/13.2-33-s.js b/js/src/tests/test262/ch13/13.2/13.2-33-s.js
new file mode 100644
index 000000000..1db245cb5
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.2/13.2-33-s.js
@@ -0,0 +1,19 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch13/13.2/13.2-33-s.js
+ * @description StrictMode - property named 'arguments' of function objects is not configurable
+ * @onlyStrict
+ */
+
+
+
+function testcase() {
+ function foo() {"use strict";}
+ return Object.getOwnPropertyDescriptor(foo,
+ "arguments") === undefined;
+}
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch13/13.2/13.2-34-s.js b/js/src/tests/test262/ch13/13.2/13.2-34-s.js
new file mode 100644
index 000000000..6d3a18078
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.2/13.2-34-s.js
@@ -0,0 +1,18 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch13/13.2/13.2-34-s.js
+ * @description StrictMode - property named 'arguments' of function objects is not configurable
+ * @onlyStrict
+ */
+
+
+
+function testcase() {
+ return Object.getOwnPropertyDescriptor(Function("'use strict';"),
+ "arguments") === undefined;
+}
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch13/13.2/13.2-35-s.js b/js/src/tests/test262/ch13/13.2/13.2-35-s.js
new file mode 100644
index 000000000..bdb65cb0b
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.2/13.2-35-s.js
@@ -0,0 +1,18 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch13/13.2/13.2-35-s.js
+ * @description StrictMode - property named 'arguments' of function objects is not configurable
+ * @onlyStrict
+ */
+
+
+
+function testcase() {
+ return Object.getOwnPropertyDescriptor(new Function("'use strict';"),
+ "arguments") === undefined;
+}
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch13/13.2/13.2-36-s.js b/js/src/tests/test262/ch13/13.2/13.2-36-s.js
new file mode 100644
index 000000000..be55e7689
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.2/13.2-36-s.js
@@ -0,0 +1,19 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch13/13.2/13.2-36-s.js
+ * @description StrictMode - property named 'arguments' of function objects is not configurable
+ * @onlyStrict
+ */
+
+
+
+function testcase() {
+ var funcExpr = function () { "use strict";};
+ return Object.getOwnPropertyDescriptor(funcExpr,
+ "arguments") === undefined;
+}
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch13/13.2/13.2-4-s.js b/js/src/tests/test262/ch13/13.2/13.2-4-s.js
new file mode 100644
index 000000000..82981f467
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.2/13.2-4-s.js
@@ -0,0 +1,24 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch13/13.2/13.2-4-s.js
+ * @description StrictMode - A TypeError is thrown when a code in strict mode tries to write to 'arguments' of function instances.
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ "use strict";
+ try {
+ var foo = function () {
+ }
+ foo.arguments = 20;
+ return false;
+ } catch (ex) {
+ return ex instanceof TypeError;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch13/13.2/13.2-5-s.js b/js/src/tests/test262/ch13/13.2/13.2-5-s.js
new file mode 100644
index 000000000..2512e5ef0
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.2/13.2-5-s.js
@@ -0,0 +1,23 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch13/13.2/13.2-5-s.js
+ * @description StrictMode - reading a property named 'caller' of function objects is not allowed outside the function
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ var foo = new Function("'use strict';");
+ try {
+ var temp = foo.caller;
+ return false;
+ }
+ catch (e) {
+ return e instanceof TypeError;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch13/13.2/13.2-6-s.js b/js/src/tests/test262/ch13/13.2/13.2-6-s.js
new file mode 100644
index 000000000..5b6de1de9
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.2/13.2-6-s.js
@@ -0,0 +1,24 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch13/13.2/13.2-6-s.js
+ * @description StrictMode - writing a property named 'caller' of function objects is not allowed outside the function
+ * @onlyStrict
+ */
+
+
+
+function testcase() {
+ var foo = new Function("'use strict';");
+ try {
+ foo.caller = 41;
+ return false;
+ }
+ catch (e) {
+ return e instanceof TypeError;
+ }
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch13/13.2/13.2-7-s.js b/js/src/tests/test262/ch13/13.2/13.2-7-s.js
new file mode 100644
index 000000000..2b5fbb185
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.2/13.2-7-s.js
@@ -0,0 +1,23 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch13/13.2/13.2-7-s.js
+ * @description StrictMode - enumerating over a function object looking for 'caller' fails outside of the function
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ var foo = new Function("'use strict';");
+
+ for (var tempIndex in foo) {
+ if (tempIndex === "caller") {
+ return false;
+ }
+ }
+ return true;
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch13/13.2/13.2-8-s.js b/js/src/tests/test262/ch13/13.2/13.2-8-s.js
new file mode 100644
index 000000000..42bcc07d9
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.2/13.2-8-s.js
@@ -0,0 +1,17 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch13/13.2/13.2-8-s.js
+ * @description StrictMode - enumerating over a function object looking for 'caller' fails inside the function
+ * @onlyStrict
+ */
+
+
+function testcase() {
+ var foo = new Function("'use strict'; for (var tempIndex in this) {if (tempIndex===\"caller\") {return false;}}; return true;");
+ return foo();
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch13/13.2/13.2-9-s.js b/js/src/tests/test262/ch13/13.2/13.2-9-s.js
new file mode 100644
index 000000000..fac6285e6
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.2/13.2-9-s.js
@@ -0,0 +1,24 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch13/13.2/13.2-9-s.js
+ * @description StrictMode - reading a property named 'caller' of function objects is not allowed outside the function
+ * @onlyStrict
+ */
+
+
+
+function testcase() {
+ var foo = Function("'use strict';");
+ try {
+ var temp = foo.caller;
+ return false;
+ }
+ catch (e) {
+ return e instanceof TypeError;
+ }
+}
+runTestCase(testcase); \ No newline at end of file
diff --git a/js/src/tests/test262/ch13/13.2/S13.2.1_A1_T1.js b/js/src/tests/test262/ch13/13.2/S13.2.1_A1_T1.js
new file mode 100644
index 000000000..1295b6a48
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.2/S13.2.1_A1_T1.js
@@ -0,0 +1,74 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * The depth of nested function calls reaches 32
+ *
+ * @path ch13/13.2/S13.2.1_A1_T1.js
+ * @description Creating function calls 32 elements depth
+ */
+
+(function(){
+ (function(){
+ (function(){
+ (function(){
+ (function(){
+ (function(){
+ (function(){
+ (function(){
+ (function(){
+ (function(){
+ (function(){
+ (function(){
+ (function(){
+ (function(){
+ (function(){
+ (function(){
+ (function(){
+ (function(){
+ (function(){
+ (function(){
+ (function(){
+ (function(){
+ (function(){
+ (function(){
+ (function(){
+ (function(){
+ (function(){
+ (function(){
+ (function(){
+ (function(){
+ (function(){
+ (function(){})()
+ })()
+ })()
+ })()
+ })()
+ })()
+ })()
+ })()
+ })()
+ })()
+ })()
+ })()
+ })()
+ })()
+ })()
+ })()
+ })()
+ })()
+ })()
+ })()
+ })()
+ })()
+ })()
+ })()
+ })()
+ })()
+ })()
+ })()
+ })()
+ })()
+ })()
+})()
+
diff --git a/js/src/tests/test262/ch13/13.2/S13.2.1_A4_T1.js b/js/src/tests/test262/ch13/13.2/S13.2.1_A4_T1.js
new file mode 100644
index 000000000..a2bce3580
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.2/S13.2.1_A4_T1.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.
+
+/**
+ * Objects as arguments are passed by reference
+ *
+ * @path ch13/13.2/S13.2.1_A4_T1.js
+ * @description Adding new number property to a function argument within the function body,
+ * where explicit argument is an object defined with "var __obj={}"
+ */
+
+function __func(__arg){
+ __arg.foo=7;
+}
+
+var __obj={};
+
+__func(__obj);
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__obj.foo !== 7) {
+ $ERROR('#1: __obj.foo === 7. Actual: __obj.foo ==='+__obj.foo);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch13/13.2/S13.2.1_A4_T2.js b/js/src/tests/test262/ch13/13.2/S13.2.1_A4_T2.js
new file mode 100644
index 000000000..682f57d08
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.2/S13.2.1_A4_T2.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.
+
+/**
+ * Objects as arguments are passed by reference
+ *
+ * @path ch13/13.2/S13.2.1_A4_T2.js
+ * @description Adding new string property to a function argument within the function body,
+ * where explicit argument is an object defined with "__obj={}"
+ */
+
+function __func(__arg){
+ __arg.foo="whiskey gogo";
+}
+
+var __obj={};
+
+ __func(__obj);
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__obj.foo !== "whiskey gogo") {
+ $ERROR('#1: __obj.foo === "whiskey gogo". Actual: __obj.foo ==='+__obj.foo);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch13/13.2/S13.2.1_A4_T3.js b/js/src/tests/test262/ch13/13.2/S13.2.1_A4_T3.js
new file mode 100644
index 000000000..00ee68b10
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.2/S13.2.1_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.
+
+/**
+ * Objects as arguments are passed by reference
+ *
+ * @path ch13/13.2/S13.2.1_A4_T3.js
+ * @description Adding new number property to a function argument within the function body,
+ * where array element "arguments[0]" is an object defined with "__obj={}"
+ */
+
+function __func(){
+ arguments[0]["PI"]=3.14;
+}
+
+var __obj={};
+
+__func(__obj);
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__obj.PI !== 3.14) {
+ $ERROR('#1: __obj.PI === 3.14. Actual: __obj.PI ==='+__obj.PI);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch13/13.2/S13.2.1_A4_T4.js b/js/src/tests/test262/ch13/13.2/S13.2.1_A4_T4.js
new file mode 100644
index 000000000..a9a026121
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.2/S13.2.1_A4_T4.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.
+
+/**
+ * Objects as arguments are passed by reference
+ *
+ * @path ch13/13.2/S13.2.1_A4_T4.js
+ * @description Adding new number property to a function argument within the function body,
+ * where array element "arguments[0]" is an object defined with "var __obj={}"
+ */
+
+function __func(){
+ arguments[0]["E"]=2.74;
+}
+
+var __obj={};
+
+__func(__obj);
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__obj.E !== 2.74) {
+ $ERROR('#1: __obj.E === 2.74. Actual: __obj.E ==='+__obj.E);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch13/13.2/S13.2.1_A5_T1.js b/js/src/tests/test262/ch13/13.2/S13.2.1_A5_T1.js
new file mode 100644
index 000000000..81909da90
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.2/S13.2.1_A5_T1.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.
+
+/**
+ * Closures are admitted
+ *
+ * @path ch13/13.2/S13.2.1_A5_T1.js
+ * @description Sorting with closure
+ */
+
+var __arr = [4,3,2,1,4,3,2,1,4,3,2,1];
+//Sort uses closure
+//
+__arr.sort(
+ function(x,y) {
+ if (x>y){return -1;}
+ if (x<y){return 1;}
+ if (x==y){return 0;}
+ }
+);
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__arr.toString() !== [4,4,4,3,3,3,2,2,2,1,1,1].toString()) {
+ $ERROR('#1: __arr.toString() === [4,4,4,3,3,3,2,2,2,1,1,1].toString(). Actual: __arr.toString() ==='+__arr.toString());
+}
+
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch13/13.2/S13.2.1_A5_T2.js b/js/src/tests/test262/ch13/13.2/S13.2.1_A5_T2.js
new file mode 100644
index 000000000..e48402cd6
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.2/S13.2.1_A5_T2.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.
+
+/**
+ * Closures are admitted
+ *
+ * @path ch13/13.2/S13.2.1_A5_T2.js
+ * @description Returning a function that approximates the derivative of f
+ * using an interval of dx, which should be appropriately small
+ */
+
+// Return a function that approximates the derivative of f
+// using an interval of dx, which should be appropriately small.
+function derivative(f, dx) {
+ return function(x) {
+ return (f(x + dx) - f(x)) / dx;
+ };
+}
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (Math.abs(derivative(Math.sin, 0.0001)(0) - derivative(Math.sin, 0.0001)(2*Math.PI)) >= 1/65536.0) {
+ $ERROR('#1: Math.abs(derivative(Math.sin, 0.0001)(0) - derivative(Math.sin, 0.0001)(2*Math.PI)) <= 1/65536.0');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch13/13.2/S13.2.1_A6_T1.js b/js/src/tests/test262/ch13/13.2/S13.2.1_A6_T1.js
new file mode 100644
index 000000000..a1d360b34
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.2/S13.2.1_A6_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.
+
+/**
+ * Primitive types are passed by value
+ *
+ * @path ch13/13.2/S13.2.1_A6_T1.js
+ * @description Declaring a function with "function __func(arg1, arg2)"
+ */
+
+function __func(arg1, arg2){
+ arg1++;
+ arg2+="BA";
+};
+
+var x=1;
+y=2;
+var a="AB"
+b="SAM";
+
+__func(x,a);
+__func(y,b);
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (x!==1 || y!==2 || a!=="AB" || b!=="SAM") {
+ $ERROR('#1: x === 1 and y === 2 and a === "AB" and b === "SAM". Actual: x ==='+x+' and y ==='+y+' and a ==='+a+' and b ==='+b);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch13/13.2/S13.2.1_A6_T2.js b/js/src/tests/test262/ch13/13.2/S13.2.1_A6_T2.js
new file mode 100644
index 000000000..f92bafaf2
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.2/S13.2.1_A6_T2.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.
+
+/**
+ * Primitive types are passed by value
+ *
+ * @path ch13/13.2/S13.2.1_A6_T2.js
+ * @description Declaring a function with "__func = function(arg1, arg2)"
+ */
+
+__func = function(arg1, arg2){
+ arg1++;
+ arg2+="BA";
+};
+
+var x=1;
+y=2;
+var a="AB"
+b="SAM";
+
+__func(x,a);
+__func(y,b);
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (x!==1 || y!==2 || a!=="AB" || b!=="SAM") {
+ $ERROR('#1: x === 1 and y === 2 and a === "AB" and b === "SAM". Actual: x ==='+x+' and y ==='+y+' and a ==='+a+' and b ==='+b);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch13/13.2/S13.2.1_A7_T1.js b/js/src/tests/test262/ch13/13.2/S13.2.1_A7_T1.js
new file mode 100644
index 000000000..4e46fcafe
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.2/S13.2.1_A7_T1.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.
+
+/**
+ * When the [[Call]] property for a Function object F is called, the following steps are taken:
+ * 2. Evaluate F's FunctionBody;
+ * if Result.type is returned then Result.value is returned too
+ *
+ * @path ch13/13.2/S13.2.1_A7_T1.js
+ * @description Returning null. Declaring a function with "function __func()"
+ */
+
+function __func(){
+ var x = null;
+ return x;
+}
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+try{
+ var x=__func();
+} catch(e){
+ $ERROR('#1: var x=__func() does not lead to throwing exception. Actual: exception is '+e);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch13/13.2/S13.2.1_A7_T2.js b/js/src/tests/test262/ch13/13.2/S13.2.1_A7_T2.js
new file mode 100644
index 000000000..ae4fbb406
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.2/S13.2.1_A7_T2.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.
+
+/**
+ * When the [[Call]] property for a Function object F is called, the following steps are taken:
+ * 2. Evaluate F's FunctionBody;
+ * if Result.type is returned then Result.value is returned too
+ *
+ * @path ch13/13.2/S13.2.1_A7_T2.js
+ * @description Returning null. Declaring a function with "var __func = function ()"
+ */
+
+var __func = function (){
+ var x = null;
+ return x;
+}
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+try{
+ var x=__func();
+} catch(e){
+ $ERROR('#1: var x=__func() does not lead to throwing exception. Actual: exception is '+e);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch13/13.2/S13.2.1_A7_T3.js b/js/src/tests/test262/ch13/13.2/S13.2.1_A7_T3.js
new file mode 100644
index 000000000..efbb8a04d
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.2/S13.2.1_A7_T3.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.
+
+/**
+ * When the [[Call]] property for a Function object F is called, the following steps are taken:
+ * 2. Evaluate F's FunctionBody;
+ * if Result.type is returned then Result.value is returned too
+ *
+ * @path ch13/13.2/S13.2.1_A7_T3.js
+ * @description Returning number. Declaring a function with "function __func()"
+ */
+
+function __func(){
+ x = 1;
+ return x;
+}
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#
+try {
+ x=x;
+ $ERROR('#0: "x=x" lead to throwing exception');
+} catch (e) {
+ if (e instanceof Test262Error) throw e;
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+try{
+ var __x=__func();
+} catch(e){
+ $ERROR('#1: var __x=__func() does not lead to throwing exception. Actual: exception is '+e);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__x !== 1) {
+ $ERROR('#2: __x === 1. Actual: __x ==='+__x);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if (x !== 1) {
+ $ERROR('#3: x === 1. Actual: x ==='+x);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+
diff --git a/js/src/tests/test262/ch13/13.2/S13.2.1_A7_T4.js b/js/src/tests/test262/ch13/13.2/S13.2.1_A7_T4.js
new file mode 100644
index 000000000..7461324ed
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.2/S13.2.1_A7_T4.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.
+
+/**
+ * When the [[Call]] property for a Function object F is called, the following steps are taken:
+ * 2. Evaluate F's FunctionBody;
+ * if Result.type is returned then Result.value is returned too
+ *
+ * @path ch13/13.2/S13.2.1_A7_T4.js
+ * @description Returning boolean. Declaring a function with "function __func()"
+ */
+
+function __func(){
+ var x = true;
+ return x;
+}
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#
+try {
+ x=x;
+ $ERROR('#0: "x=x" lead to throwing exception');
+} catch (e) {
+ if (e instanceof Test262Error) throw e;
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+try{
+ var __x=__func()
+} catch(e){
+ $ERROR('#1: var __x=__func() does not lead to throwing exception. Actual: exception is '+e);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (!(__x)) {
+ $ERROR('#2: __x === true. Actual: __x ==='+__x);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+try {
+ x=x;
+ $ERROR('#3: "x=x" lead to throwing exception');
+} catch (e) {
+ if (e instanceof Test262Error) throw e;
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+
diff --git a/js/src/tests/test262/ch13/13.2/S13.2.1_A8_T1.js b/js/src/tests/test262/ch13/13.2/S13.2.1_A8_T1.js
new file mode 100644
index 000000000..2be9cb728
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.2/S13.2.1_A8_T1.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.
+
+/**
+ * When the [[Call]] property for a Function object F is called, the following steps are taken:
+ * 2. Evaluate F's FunctionBody;
+ * if Result.type is thrown then Result.value is thrown too
+ *
+ * @path ch13/13.2/S13.2.1_A8_T1.js
+ * @description Throwing an exception within a function body. Declaring function with "function __func()"
+ */
+
+function __func(){
+ var x = 1;
+ throw ("Catch Me If You Can")
+ return x;
+}
+
+try{
+ var x=__func()
+ $ERROR('#0: var x=__func() lead to throwing exception');
+} catch(e){
+ if (e !== "Catch Me If You Can") {
+ $ERROR('#1: Exception === "Catch Me If You Can". Actual: exception ==='+e);
+ }
+}
+
diff --git a/js/src/tests/test262/ch13/13.2/S13.2.1_A8_T2.js b/js/src/tests/test262/ch13/13.2/S13.2.1_A8_T2.js
new file mode 100644
index 000000000..c07582b28
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.2/S13.2.1_A8_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.
+
+/**
+ * When the [[Call]] property for a Function object F is called, the following steps are taken:
+ * 2. Evaluate F's FunctionBody;
+ * if Result.type is thrown then Result.value is thrown too
+ *
+ * @path ch13/13.2/S13.2.1_A8_T2.js
+ * @description Throwing an exception within a function body. Declaring function with "var __func = function (message)"
+ */
+
+var CATCH_ME_IF_YOU_CAN = true;
+
+var __func = function (message){
+ var x = 1;
+ throw (message)
+ return x;
+}
+
+try{
+ var x=__func(CATCH_ME_IF_YOU_CAN)
+ $ERROR('#0: var x=__func(CATCH_ME_IF_YOU_CAN) lead to throwing exception');
+} catch(e){
+ if (!e) {
+ $ERROR('#1: Exception === true. Actual: exception ==='+e);
+ }
+}
+
diff --git a/js/src/tests/test262/ch13/13.2/S13.2.1_A9.1_T1.js b/js/src/tests/test262/ch13/13.2/S13.2.1_A9.1_T1.js
new file mode 100644
index 000000000..9b1dd7382
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.2/S13.2.1_A9.1_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.
+
+/**
+ * When the [[Call]] property for a Function object is called,
+ * the body is evaluated and if evaluation result has type "normal", then "undefined" is returned
+ *
+ * @path ch13/13.2/S13.2.1_A9.1_T1.js
+ * @description Declaring a function with "function __func()" and no "return" in the function body
+ */
+
+var x;
+
+function __func(){
+ x = true;
+}
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__func() !== undefined) {
+ $ERROR('#1: __func() === undefined. Actual: __func() ==='+__func());
+};
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (!x) {
+ $ERROR('#2: x === true. Actual: x === '+x);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch13/13.2/S13.2.1_A9.1_T2.js b/js/src/tests/test262/ch13/13.2/S13.2.1_A9.1_T2.js
new file mode 100644
index 000000000..90057b04b
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.2/S13.2.1_A9.1_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.
+
+/**
+ * When the [[Call]] property for a Function object is called,
+ * the body is evaluated and if evaluation result has type "normal", then "undefined" is returned
+ *
+ * @path ch13/13.2/S13.2.1_A9.1_T2.js
+ * @description Declaring a function with "var __func = function()" and no "return" in the function body
+ */
+
+var x;
+
+var __func = function(){
+ x = true;
+}
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__func() !== undefined) {
+ $ERROR('#1: __func() === undefined. Actual: __func() ==='+__func());
+};
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (!x) {
+ $ERROR('#2: x === true. Actual: x === '+x);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch13/13.2/S13.2.1_A9_T1.js b/js/src/tests/test262/ch13/13.2/S13.2.1_A9_T1.js
new file mode 100644
index 000000000..6332ef34e
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.2/S13.2.1_A9_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.
+
+/**
+ * When the [[Call]] property for a Function object is called,
+ * the body is evaluated and if evaluation result has type "return" its value is not defined, then "undefined" is returned
+ *
+ * @path ch13/13.2/S13.2.1_A9_T1.js
+ * @description Using "return" with no expression. Declaring a function with "function __func()"
+ */
+
+var x;
+
+function __func(){
+ x = 1;
+ return;
+}
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__func() !== undefined) {
+ $ERROR('#1: __func() === undefined. Actual: __func() ==='+__func());
+};
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (x!==1) {
+ $ERROR('#2: x === 1. Actual: x === '+x);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch13/13.2/S13.2.1_A9_T2.js b/js/src/tests/test262/ch13/13.2/S13.2.1_A9_T2.js
new file mode 100644
index 000000000..75be8a19a
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.2/S13.2.1_A9_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.
+
+/**
+ * When the [[Call]] property for a Function object is called,
+ * the body is evaluated and if evaluation result has type "return" its value is not defined, then "undefined" is returned
+ *
+ * @path ch13/13.2/S13.2.1_A9_T2.js
+ * @description Using "return" with no expression. Declaring a function with "var __func = function()"
+ */
+
+var x;
+
+var __func = function(){
+ x = 1;
+ return;
+}
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__func() !== undefined) {
+ $ERROR('#1: __func() === undefined. Actual: __func() ==='+__func());
+};
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (x!==1) {
+ $ERROR('#2: x === 1. Actual: x === '+x);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch13/13.2/S13.2.2_A10.js b/js/src/tests/test262/ch13/13.2/S13.2.2_A10.js
new file mode 100644
index 000000000..25ba9d58d
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.2/S13.2.2_A10.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.
+
+/**
+ * Calling a function as a constructor is possible as long as this.any_Function is declared
+ *
+ * @path ch13/13.2/S13.2.2_A10.js
+ * @description Calling a function as a constructor after it has been declared
+ */
+
+function FACTORY(){
+ this.id = 0;
+
+ this.func = function (){
+ return 5;
+ }
+
+ this.id = this.func();
+
+}
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+try {
+ var obj = new FACTORY();
+} catch (e) {
+ $ERROR('#1: var obj = new FACTORY() does not lead to throwing exception. Actual: Exception is '+e);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (obj.id !== 5) {
+ $ERROR('#2: obj.id === 5. Actual: obj.id ==='+obj.id);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch13/13.2/S13.2.2_A11.js b/js/src/tests/test262/ch13/13.2/S13.2.2_A11.js
new file mode 100644
index 000000000..13f7f4e9b
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.2/S13.2.2_A11.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.
+
+/**
+ * Calling a function as a constructor is possible as long as this.any_Function is declared and called
+ *
+ * @path ch13/13.2/S13.2.2_A11.js
+ * @description Calling a function as a constructor after it has been declared with "function func()"
+ */
+
+function FACTORY(){
+ this.id = 0;
+
+ this.id = this.func();
+
+ function func(){
+ return "id_string";
+ }
+
+}
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+try {
+ var obj = new FACTORY();
+ $ERROR('#1: var obj = new FACTORY() lead to throwing exception');
+} catch (e) {
+ if (e instanceof Test262Error) throw e;
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+
diff --git a/js/src/tests/test262/ch13/13.2/S13.2.2_A12.js b/js/src/tests/test262/ch13/13.2/S13.2.2_A12.js
new file mode 100644
index 000000000..52d4a95b6
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.2/S13.2.2_A12.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.
+
+/**
+ * Calling a function as a constructor is possible as long as this.any_Function is declared and called
+ *
+ * @path ch13/13.2/S13.2.2_A12.js
+ * @description Calling a function as a constructor after it has been declared with "function func()"
+ */
+
+function FACTORY(){
+ this.id = 0;
+
+ this.id = func();
+
+ function func(){
+ return "id_string";
+ }
+
+}
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+try {
+ var obj = new FACTORY();
+} catch (e) {
+ $ERROR('#1: var obj = new FACTORY() does not lead to throwing exception. Actual: Exception is '+e);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (obj.id !== "id_string") {
+ $ERROR('#2: obj.id === "id_string". Actual: obj.id ==='+obj.id);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch13/13.2/S13.2.2_A13.js b/js/src/tests/test262/ch13/13.2/S13.2.2_A13.js
new file mode 100644
index 000000000..79801ac9e
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.2/S13.2.2_A13.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.
+
+/**
+ * Calling a function as a constructor is inadmissible as long as this.any_Function is declared by eval and called
+ *
+ * @path ch13/13.2/S13.2.2_A13.js
+ * @description Calling a function as a constructor after it has been declared by eval
+ */
+
+function FACTORY(){
+ this.id = 0;
+
+ this.id = func();
+
+ eval("function func(){return \"id_string\";}");
+
+}
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+try {
+ var obj = new FACTORY();
+ $ERROR('#1: var obj = new FACTORY() lead to throwing exception');
+} catch (e) {
+ if (e instanceof Test262Error) throw e;
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch13/13.2/S13.2.2_A14.js b/js/src/tests/test262/ch13/13.2/S13.2.2_A14.js
new file mode 100644
index 000000000..2db1005bc
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.2/S13.2.2_A14.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.
+
+/**
+ * Calling a function as a constructor is inadmissible as long as this.any_Function is declared by eval and called
+ *
+ * @path ch13/13.2/S13.2.2_A14.js
+ * @description Calling a function as a constructor after it has been declared by eval
+ * @noStrict
+ */
+
+function FACTORY(){
+ this.id = 0;
+
+ eval("function func(){return \"id_string\";}");
+
+ this.id = func();
+
+}
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+try {
+ var obj = new FACTORY();
+} catch (e) {
+ $ERROR('#1: var obj = new FACTORY() does not lead to throwing exception');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch13/13.2/S13.2.2_A15_T1.js b/js/src/tests/test262/ch13/13.2/S13.2.2_A15_T1.js
new file mode 100644
index 000000000..6548618eb
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.2/S13.2.2_A15_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.
+
+/**
+ * When the [[Construct]] property for a Function object F is called,
+ * and the object created in the function is returned, the object (declared with "this" within a function) will be strong and healthy
+ *
+ * @path ch13/13.2/S13.2.2_A15_T1.js
+ * @description Function declared at the end of the program and "obj" property is declared with "var obj = {}"
+ */
+
+var __obj = new __FACTORY();
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (typeof obj !== "undefined") {
+ $ERROR('#1: typeof obj === "undefined". Actual: typeof obj ==='+typeof obj);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__obj.prop !== "A") {
+ $ERROR('#2: __obj.prop === "A". Actual: __obj.prop ==='+__obj.prop);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if (__obj.slot.prop !==1) {
+ $ERROR('#3: __obj.slot.prop ===1. Actual: __obj.slot.prop ==='+__obj.slot.prop);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+function __FACTORY(){
+ this.prop = 1;
+ var obj = {};
+ obj.prop = "A";
+ obj.slot = this;
+ return obj;
+}
+
diff --git a/js/src/tests/test262/ch13/13.2/S13.2.2_A15_T2.js b/js/src/tests/test262/ch13/13.2/S13.2.2_A15_T2.js
new file mode 100644
index 000000000..007474b4b
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.2/S13.2.2_A15_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.
+
+/**
+ * When the [[Construct]] property for a Function object F is called,
+ * and the object created in the function is returned, the object (declared with "this" within a function) will be strong and healthy
+ *
+ * @path ch13/13.2/S13.2.2_A15_T2.js
+ * @description Function declared at the end of the program and "obj" property is declared with "obj = {}"
+ */
+
+var __obj = new __FACTORY();
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (obj.prop !== "A") {
+ $ERROR('#1: obj.prop === "A". Actual: obj.prop ==='+obj.prop);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__obj.prop !== "A") {
+ $ERROR('#2: __obj.prop === "A". Actual: __obj.prop ==='+__obj.prop);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if (__obj.slot.prop !==1) {
+ $ERROR('#3: __obj.slot.prop === 1. Actual: __obj.slot.prop ==='+__obj.slot.prop);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+function __FACTORY(){
+ this.prop = 1;
+ obj = {};
+ obj.prop = "A";
+ obj.slot = this;
+ return obj;
+}
+
diff --git a/js/src/tests/test262/ch13/13.2/S13.2.2_A15_T3.js b/js/src/tests/test262/ch13/13.2/S13.2.2_A15_T3.js
new file mode 100644
index 000000000..c448df552
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.2/S13.2.2_A15_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.
+
+/**
+ * When the [[Construct]] property for a Function object F is called,
+ * and the object created in the function is returned, the object (declared with "this" within a function) will be strong and healthy
+ *
+ * @path ch13/13.2/S13.2.2_A15_T3.js
+ * @description Function declared at the end of the program and "obj" property is declared with "var obj = {}"
+ */
+
+__FACTORY = function (){
+ this.prop = 1;
+ var obj = {};
+ obj.prop = "A";
+ obj.slot = this;
+ return obj;
+}
+
+__obj = new __FACTORY();
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (typeof obj !== "undefined") {
+ $ERROR('#1: typeof obj === "undefined". Actual: typeof obj ==='+typeof obj);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__obj.prop !== "A") {
+ $ERROR('#2: __obj.prop === "A". Actual: __obj.prop ==='+__obj.prop);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if (__obj.slot.prop !==1) {
+ $ERROR('#3: __obj.slot.prop ===1. Actual: __obj.slot.prop ==='+__obj.slot.prop);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch13/13.2/S13.2.2_A15_T4.js b/js/src/tests/test262/ch13/13.2/S13.2.2_A15_T4.js
new file mode 100644
index 000000000..5667b9b52
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.2/S13.2.2_A15_T4.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.
+
+/**
+ * When the [[Construct]] property for a Function object F is called,
+ * and the object created in the function is returned, the object (declared with "this" within a function) will be strong and healthy
+ *
+ * @path ch13/13.2/S13.2.2_A15_T4.js
+ * @description Function declared at the end of the program and "obj" property is declared with "obj = {}"
+ */
+
+__FACTORY = function(){
+ this.prop = 1;
+ obj = {};
+ obj.prop = "A";
+ obj.slot = this;
+ return obj;
+}
+
+__obj = new __FACTORY();
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (obj.prop !== "A") {
+ $ERROR('#1: obj.prop === "A". Actual: obj.prop ==='+obj.prop);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__obj.prop !== "A") {
+ $ERROR('#2: __obj.prop === "A". Actual: __obj.prop ==='+obj.prop);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if (__obj.slot.prop !==1) {
+ $ERROR('#3: __obj.slot.prop ===1. Actual: __obj.slot.prop ==='+obj.slot.prop);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+
diff --git a/js/src/tests/test262/ch13/13.2/S13.2.2_A16_T1.js b/js/src/tests/test262/ch13/13.2/S13.2.2_A16_T1.js
new file mode 100644
index 000000000..ea40cfb09
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.2/S13.2.2_A16_T1.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.
+
+/**
+ * FunctionExpression within a new statement is admitted
+ *
+ * @path ch13/13.2/S13.2.2_A16_T1.js
+ * @description Using "is __obj = new function __func(){this.prop=1;}" as FunctionExpression
+ */
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (typeof __func !== "undefined") {
+ $ERROR('#1: typeof __func === "undefined". Actual: typeof __func ==='+typeof __func);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+var __obj = new function __func(){this.prop=1;};
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__obj.prop !== 1) {
+ $ERROR('#2: __obj.prop === 1. Actual: __obj.prop ==='+__obj.prop);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#5
+if (typeof __func !== "undefined") {
+ $ERROR('#5: typeof __func === "undefined". Actual: typeof __func ==='+typeof __func);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch13/13.2/S13.2.2_A16_T2.js b/js/src/tests/test262/ch13/13.2/S13.2.2_A16_T2.js
new file mode 100644
index 000000000..2af36ba44
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.2/S13.2.2_A16_T2.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.
+
+/**
+ * FunctionExpression within a new statement is admitted
+ *
+ * @path ch13/13.2/S13.2.2_A16_T2.js
+ * @description Using "var __obj = new function __func(arg){this.prop=arg;}(5)" as FunctionExpression
+ */
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (typeof __func !== "undefined") {
+ $ERROR('#1: typeof __func === "undefined". Actual: typeof __func ==='+typeof __func);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+var __obj = new function __func(arg){this.prop=arg;}(5);
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__obj.prop !== 5) {
+ $ERROR('#2: __obj.prop === 5. Actual: __obj.prop ==='+__obj.prop);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if (typeof __func !== "undefined") {
+ $ERROR('#3: typeof __func === "undefined". Actual: typeof __func ==='+typeof __func);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch13/13.2/S13.2.2_A16_T3.js b/js/src/tests/test262/ch13/13.2/S13.2.2_A16_T3.js
new file mode 100644
index 000000000..8cff917f6
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.2/S13.2.2_A16_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.
+
+/**
+ * FunctionExpression within a new statement is admitted
+ *
+ * @path ch13/13.2/S13.2.2_A16_T3.js
+ * @description Using "is __obj = new function __func(arg){this.prop=arg; return {feat: ++arg}}(5)" as FunctionExpression
+ */
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (typeof __func !== "undefined") {
+ $ERROR('#1: typeof __func === "undefined"');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+var __obj = new function __func(arg){this.prop=arg; return {feat: ++arg}}(5);
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__obj.prop !== undefined) {
+ $ERROR('#2: __obj.prop === undefined. Actual: __obj.prop ==='+__obj.prop);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if (__obj.feat !== 6) {
+ $ERROR('#3: __obj.feat === 6. Actual: __obj.feat ==='+__obj.feat);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#4
+if (typeof __func !== "undefined") {
+ $ERROR('#4: typeof __func === "undefined". Actual: typeof __func ==='+typeof __func);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch13/13.2/S13.2.2_A17_T2.js b/js/src/tests/test262/ch13/13.2/S13.2.2_A17_T2.js
new file mode 100644
index 000000000..105b762d7
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.2/S13.2.2_A17_T2.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.
+
+/**
+ * FunctionExpression containing "with" statement is admitted
+ *
+ * @path ch13/13.2/S13.2.2_A17_T2.js
+ * @description Throwing an exception within "with" statement
+ */
+
+this.p1="alert";
+
+__obj={p1:1,getRight:function(){return "right";}};
+
+getRight=function(){return "napravo";};
+
+try {
+ (function(){
+ with(__obj){
+ p1="w1";
+ getRight=function(){return false;}
+ throw p1;
+ }
+ })();
+} catch (e) {
+ resukt = p1;
+}
+
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (p1!=="alert") {
+ $ERROR('#1: p1 === "alert". Actual: p1==='+p1);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (getRight()!=="napravo") {
+ $ERROR('#2: getRight() === "napravo". Actual: getRight() === '+getRight());
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if (__obj.p1!=="w1") {
+ $ERROR('#3: __obj.p1 === "w1". Actual: __obj.p1 ==='+__obj.p1);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#4
+if (__obj.getRight()!==false) {
+ $ERROR('#4: __obj.getRight() === false. Actual: __obj.getRight() === '+__obj.getRight());
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#5
+if (resukt !== "alert") {
+ $ERROR('#5: resukt === "alert". Actual: resukt ==='+resukt);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+var resukt;
+
+
diff --git a/js/src/tests/test262/ch13/13.2/S13.2.2_A17_T3.js b/js/src/tests/test262/ch13/13.2/S13.2.2_A17_T3.js
new file mode 100644
index 000000000..8d8eba5bd
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.2/S13.2.2_A17_T3.js
@@ -0,0 +1,68 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * FunctionExpression containing "with" statement is admitted
+ *
+ * @path ch13/13.2/S13.2.2_A17_T3.js
+ * @description In the check 4 we populate field getRight in __obj object since var getRight declaration adds variable to function scope
+ * but getRight in statement resolves within with(__obj) scope and searchs getRight in __obj first
+ */
+
+p1="alert";
+
+this.__obj={p1:1,getRight:function(){return "right";}};
+
+var getRight=function(){return "napravo";};
+
+resukt=(function(){
+ with(__obj){
+ p1="w1";
+ var getRight=function(){return false;};
+ return p1;
+ }
+})();
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (p1!=="alert") {
+ $ERROR('#1: p1 === "alert". Actual: p1==='+p1);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (getRight()!=="napravo") {
+ $ERROR('#2: getRight() === "napravo". Actual: getRight()==='+getRight());
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if (__obj.p1!=="w1") {
+ $ERROR('#3: __obj.p1 === "w1". Actual: __obj.p1 ==='+__obj.p1);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#4
+if (__obj.getRight()!==false) {
+ $ERROR('#4: __obj.getRight() === false. Actual: __obj.getRight()==='+__obj.getRight());
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#5
+if (resukt !== "w1") {
+ $ERROR('#5: resukt === "w1". Actual: resukt ==='+resukt);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+var resukt;
+
+
diff --git a/js/src/tests/test262/ch13/13.2/S13.2.2_A18_T1.js b/js/src/tests/test262/ch13/13.2/S13.2.2_A18_T1.js
new file mode 100644
index 000000000..327f816dd
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.2/S13.2.2_A18_T1.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.
+
+/**
+ * Using arguments object within a "with" Expression that is nested in a function is admitted
+ *
+ * @path ch13/13.2/S13.2.2_A18_T1.js
+ * @description Object is declared with "var __obj={callee:"a"}"
+ */
+
+var callee=0, b;
+
+var __obj={callee:"a"};
+
+result=(function(){
+ with (arguments){
+ callee=1;
+ b=true;
+ }
+ return arguments;
+})(__obj);
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (callee !== 0) {
+ $ERROR('#1: callee === 0. Actual: callee ==='+callee);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__obj.callee !== "a") {
+ $ERROR('#2: __obj.callee === "a". Actual: __obj.callee==='+__obj.callee);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if (result.callee !== 1) {
+ $ERROR('#3: result.callee === 1. Actual: result.callee ==='+result.callee);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#4
+if (!(this.b)) {
+ $ERROR('#4: this.b === true. Actual: this.b ==='+this.b);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch13/13.2/S13.2.2_A18_T2.js b/js/src/tests/test262/ch13/13.2/S13.2.2_A18_T2.js
new file mode 100644
index 000000000..d586ca5f9
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.2/S13.2.2_A18_T2.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.
+
+/**
+ * Using arguments object within a "with" Expression that is nested in a function is admitted
+ *
+ * @path ch13/13.2/S13.2.2_A18_T2.js
+ * @description Object is declared with "__obj={callee:"a"}"
+ */
+
+this.callee = 0;
+var b;
+
+__obj={callee:"a"};
+
+function f(){
+ with (arguments){
+ callee=1;
+ b=true;
+ return arguments;
+ }
+};
+
+result=f(__obj);
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (callee !== 0) {
+ $ERROR('#1: callee === 0. Actual: callee ==='+callee);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__obj.callee !== "a") {
+ $ERROR('#2: __obj.callee === "a". Actual: __obj.callee ==='+__obj.callee);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if (result.callee !== 1) {
+ $ERROR('#3: result.callee === 1. Actual: result.callee ==='+result.callee);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#4
+if (!(this.b)) {
+ $ERROR('#4: this.b === true. Actual: this.b ==='+this.b);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch13/13.2/S13.2.2_A19_T1.js b/js/src/tests/test262/ch13/13.2/S13.2.2_A19_T1.js
new file mode 100644
index 000000000..5fdcaee5a
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.2/S13.2.2_A19_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.
+
+/**
+ * Function's scope chain is started when it is declared
+ *
+ * @path ch13/13.2/S13.2.2_A19_T1.js
+ * @description Function is declared in the global scope
+ */
+
+var a = 1;
+
+var __func= function(){return a;};
+
+var __obj = {a:2};
+
+with (__obj)
+{
+ result = __func();
+}
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (result !== 1) {
+ $ERROR('#1: result === 1. Actual: result ==='+result);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch13/13.2/S13.2.2_A19_T2.js b/js/src/tests/test262/ch13/13.2/S13.2.2_A19_T2.js
new file mode 100644
index 000000000..b36f457b8
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.2/S13.2.2_A19_T2.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.
+
+/**
+ * Function's scope chain is started when it is declared
+ *
+ * @path ch13/13.2/S13.2.2_A19_T2.js
+ * @description Function is declared in the object scope. Using "with" statement
+ */
+
+var a = 1;
+
+var __obj = {a:2};
+
+with (__obj)
+{
+ result = (function(){return a;})();
+}
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (result !== 2) {
+ $ERROR('#1: result === 2. Actual: result ==='+result);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch13/13.2/S13.2.2_A19_T3.js b/js/src/tests/test262/ch13/13.2/S13.2.2_A19_T3.js
new file mode 100644
index 000000000..3f6e11266
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.2/S13.2.2_A19_T3.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.
+
+/**
+ * Function's scope chain is started when it is declared
+ *
+ * @path ch13/13.2/S13.2.2_A19_T3.js
+ * @description Function is declared in the object scope and then an exception is thrown
+ */
+
+var a = 1;
+
+var __obj = {a:2};
+
+try {
+ with (__obj)
+ {
+ var __func = function (){return a;};
+ throw 3;
+ }
+} catch (e) {
+ ;
+}
+
+result = __func();
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (result !== 2) {
+ $ERROR('#1: result === 2. Actual: result ==='+result);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+
+
+
diff --git a/js/src/tests/test262/ch13/13.2/S13.2.2_A19_T4.js b/js/src/tests/test262/ch13/13.2/S13.2.2_A19_T4.js
new file mode 100644
index 000000000..65f6e765a
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.2/S13.2.2_A19_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.
+
+/**
+ * Function's scope chain is started when it is declared
+ *
+ * @path ch13/13.2/S13.2.2_A19_T4.js
+ * @description Function is declared in the hierarchical object scope and then an exception is thrown
+ */
+
+var a = 1;
+
+var __obj = {a:2,__obj:{a:3}};
+
+try {
+ with (__obj)
+ {
+ with(__obj){
+ var __func = function(){return a;};
+ throw 5;
+ }
+ }
+} catch (e) {
+ ;
+}
+
+result = __func();
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (result !== 3) {
+ $ERROR('#1: result === 3. Actual: result ==='+result);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+
+
+
diff --git a/js/src/tests/test262/ch13/13.2/S13.2.2_A19_T5.js b/js/src/tests/test262/ch13/13.2/S13.2.2_A19_T5.js
new file mode 100644
index 000000000..f0614e175
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.2/S13.2.2_A19_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.
+
+/**
+ * Function's scope chain is started when it is declared
+ *
+ * @path ch13/13.2/S13.2.2_A19_T5.js
+ * @description Function is declared in the object scope, then an exception is thrown and the object is deleted
+ */
+
+var a = 1;
+
+var __obj = {a:2};
+
+with (__obj)
+{
+ try {
+
+ var __func = function()
+ {
+ return a;
+ }
+ throw 3;
+ } catch (e) {
+ ;
+ }
+}
+
+delete __obj;
+
+result = __func();
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (result !== 2) {
+ $ERROR('#1: result === 2. Actual: result ==='+result);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch13/13.2/S13.2.2_A19_T6.js b/js/src/tests/test262/ch13/13.2/S13.2.2_A19_T6.js
new file mode 100644
index 000000000..b9fafb1f5
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.2/S13.2.2_A19_T6.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.
+
+/**
+ * Function's scope chain is started when it is declared
+ *
+ * @path ch13/13.2/S13.2.2_A19_T6.js
+ * @description Function is declared in the "object->do-while" scope, then the object is deleted and another object with the same name is declared
+ */
+
+var a = 1;
+
+var __obj = {a:2};
+
+with (__obj)
+{
+ do {
+ var __func = function()
+ {
+ return a;
+ }
+ } while(0);
+}
+
+delete __obj;
+
+var __obj = {a:3};
+
+with (__obj)
+{
+ result = __func();
+}
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (result !== 2) {
+ $ERROR('#1: result === 2. Actual: result ==='+result);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+
+
+
+
+
diff --git a/js/src/tests/test262/ch13/13.2/S13.2.2_A19_T7.js b/js/src/tests/test262/ch13/13.2/S13.2.2_A19_T7.js
new file mode 100644
index 000000000..c83232d66
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.2/S13.2.2_A19_T7.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.
+
+/**
+ * Function's scope chain is started when it is declared
+ *
+ * @path ch13/13.2/S13.2.2_A19_T7.js
+ * @description Function is declared in the object scope as a variable
+ */
+
+var a = 1;
+
+var __obj = {a:2};
+
+with (__obj)
+{
+ var __func = function()
+ {
+ return a;
+ }
+}
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__obj.hasOwnProperty('__func')) {
+ $ERROR('#1: __obj.hasOwnProperty(\'__func\') === false');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+///////////////////////////////////// /////////////////////////////////////////
+//CHECK#2
+if (!(this.hasOwnProperty('__func'))) {
+ $ERROR('#2: this.hasOwnProperty(\'__func\') === true');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if (__func in __obj) {
+ $ERROR('#3: (__func in __obj) === false');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#4
+if (this.__func === undefined) {
+ $ERROR('#4: this.__func !== undefined');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch13/13.2/S13.2.2_A19_T8.js b/js/src/tests/test262/ch13/13.2/S13.2.2_A19_T8.js
new file mode 100644
index 000000000..7db4affd8
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.2/S13.2.2_A19_T8.js
@@ -0,0 +1,74 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * Function's scope chain is started when it is declared
+ *
+ * @path ch13/13.2/S13.2.2_A19_T8.js
+ * @description Function is declared multiply times
+ */
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#0
+if (typeof __func !== "undefined") {
+ $ERROR('#0: typeof __func === "undefined". Actual: typeof __func ==='+typeof __func);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+var a = 1, b = "a";
+
+var __obj = {a:2};
+
+with (__obj)
+{
+ while(1){
+ var __func = function()
+ {
+ return a;
+ };
+ break;
+ }
+}
+
+delete __obj;
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__func() !== 2) {
+ $ERROR('#1: __func() === 2. Actual: __func() ==='+__func());
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+var __obj = {a:3,b:"b"};
+
+with (__obj)
+{
+ var __func = function()
+ {
+ return b;
+ }
+}
+
+delete __obj;
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__func()!=="b") {
+ $ERROR('#2: __func()==="b". Actual: __func()==='+__func());
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+with ({a:99,b:"c"})
+{
+ //////////////////////////////////////////////////////////////////////////////
+ //CHECK#3
+ if (__func() !== "b") {
+ $ERROR('#3: __func()==="b". Actual: __func()==='+__func());
+ }
+ //
+ //////////////////////////////////////////////////////////////////////////////
+}
+
diff --git a/js/src/tests/test262/ch13/13.2/S13.2.2_A1_T1.js b/js/src/tests/test262/ch13/13.2/S13.2.2_A1_T1.js
new file mode 100644
index 000000000..cb9a2dbd6
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.2/S13.2.2_A1_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.
+
+/**
+ * Since a function is an object, it might be set to [[Prototype]] property of a new created object through [[Construct]] property
+ *
+ * @path ch13/13.2/S13.2.2_A1_T1.js
+ * @description Declaring a function with "function __func()"
+ */
+
+var __MONSTER="monster";
+var __PREDATOR="predator";
+
+function __PROTO(){};
+
+try{
+ __PROTO.type=__MONSTER;
+}
+catch(e){
+ $ERROR('#0: __PROTO.type=__MONSTER does not lead to throwing exception')
+}
+
+function __FACTORY(){this.name=__PREDATOR};
+
+__FACTORY.prototype=__PROTO;
+
+var __monster = new __FACTORY();
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (!(__PROTO.isPrototypeOf(__monster))) {
+ $ERROR('#1: __PROTO.isPrototypeOf(__monster) must be true');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__monster.type !==__MONSTER) {
+ $ERROR('#2: __monster.type ===__MONSTER. Actual: __monster.type ==='+__monster.type);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch13/13.2/S13.2.2_A1_T2.js b/js/src/tests/test262/ch13/13.2/S13.2.2_A1_T2.js
new file mode 100644
index 000000000..dd907d790
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.2/S13.2.2_A1_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.
+
+/**
+ * Since a function is an object, it might be set to [[Prototype]] property of a new created object through [[Construct]] property
+ *
+ * @path ch13/13.2/S13.2.2_A1_T2.js
+ * @description Declaring a function with "var __PROTO = function()"
+ */
+
+var __MONSTER="monster";
+var __PREDATOR="predator";
+
+var __PROTO = function(){};
+
+try{
+ __PROTO.type=__MONSTER;
+}
+catch(e){
+ $FAIL('#0: __PROTO.type=__MONSTER does not lead to throwing exception')
+}
+
+var __FACTORY = function(){this.name=__PREDATOR};
+
+__FACTORY.prototype=__PROTO;
+
+var __monster = new __FACTORY();
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (!(__PROTO.isPrototypeOf(__monster))) {
+ $ERROR('#1: __PROTO.isPrototypeOf(__monster) must be true');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__monster.type !==__MONSTER) {
+ $ERROR('#2: __monster.type ===__MONSTER. Actual: __monster.type ==='+__monster.type);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch13/13.2/S13.2.2_A2.js b/js/src/tests/test262/ch13/13.2/S13.2.2_A2.js
new file mode 100644
index 000000000..3389a36d1
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.2/S13.2.2_A2.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.
+
+/**
+ * Since a function is an object, it might be set to [[Prototype]] property of a new created object through [[Construct]] property,
+ * but [[call]] property must fail with TypeError error
+ *
+ * @path ch13/13.2/S13.2.2_A2.js
+ * @description Trying to [[call]] this function
+ */
+
+var __PLANT="flower";
+var __ROSE="rose";
+
+function __PROTO(){};
+
+try{
+ __PROTO.type=__PLANT;
+}
+catch(e){
+ $ERROR('#0: __PROTO.type=__PLANT does not lead to throwing exception')
+}
+
+function __FACTORY(){this.name=__ROSE};
+
+__FACTORY.prototype=__PROTO;
+
+var __rose = new __FACTORY();
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+try{
+ __rose();
+ $ERROR('#1: __rose() lead to throwing exception');
+} catch(e){
+ if (!(e instanceof TypeError)) {
+ $ERROR('#2: Exception Type is TypeError. Actual: exception ==='+e);
+ }
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch13/13.2/S13.2.2_A3_T1.js b/js/src/tests/test262/ch13/13.2/S13.2.2_A3_T1.js
new file mode 100644
index 000000000..a04721c81
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.2/S13.2.2_A3_T1.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.
+
+/**
+ * When the [[Construct]] property for a Function object F is called:
+ * A new native ECMAScript object is created.
+ * It gets the value of the [[Prototype]] property of the F(Denote it PROTO_VAL).
+ * If PROTO_VAL is not an object, sets the [[Prototype]] property of native ECMAScript object just created
+ * to the original Object prototype object as described in 15.2.3.1
+ *
+ * @path ch13/13.2/S13.2.2_A3_T1.js
+ * @description Declaring a function with "function __FACTORY()"
+ */
+
+function __FACTORY(){};
+__FACTORY.prototype=1;
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (typeof __FACTORY.prototype !== 'number') {
+ $ERROR('#1: typeof __FACTORY.prototype === \'number\'. Actual: typeof __FACTORY.prototype ==='+(typeof __FACTORY.prototype));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+var __device = new __FACTORY();
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (!(Object.prototype.isPrototypeOf(__device))) {
+ $ERROR('#2: Object.prototype.isPrototypeOf(__device) === true');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch13/13.2/S13.2.2_A3_T2.js b/js/src/tests/test262/ch13/13.2/S13.2.2_A3_T2.js
new file mode 100644
index 000000000..613adbb9c
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.2/S13.2.2_A3_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.
+
+/**
+ * When the [[Construct]] property for a Function object F is called:
+ * A new native ECMAScript object is created.
+ * It gets the value of the [[Prototype]] property of the F(Denote it PROTO_VAL).
+ * If PROTO_VAL is not an object, sets the [[Prototype]] property of native ECMAScript object just created
+ * to the original Object prototype object as described in 15.2.3.1
+ *
+ * @path ch13/13.2/S13.2.2_A3_T2.js
+ * @description Declaring a function with "var __FACTORY = function()"
+ */
+
+var __FACTORY = function(){};
+__FACTORY.prototype=1;
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (typeof __FACTORY.prototype !== 'number') {
+ $ERROR('#1: typeof __FACTORY.prototype === \'number\'. Actual: typeof __FACTORY.prototype ==='+(typeof __FACTORY.prototype));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+var __device = new __FACTORY();
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (!(Object.prototype.isPrototypeOf(__device))) {
+ $ERROR('#2: Object.prototype.isPrototypeOf(__device) === true');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch13/13.2/S13.2.2_A4_T1.js b/js/src/tests/test262/ch13/13.2/S13.2.2_A4_T1.js
new file mode 100644
index 000000000..5804b6c29
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.2/S13.2.2_A4_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.
+
+/**
+ * When the [[Construct]] property for a Function object F is called:
+ * A new native ECMAScript object is created.
+ * Gets the value of the [[Prototype]] property of the F(Denote it PROTO_VAL).
+ * If PROTO_VAL is an object, sets the [[Prototype]] property of native ECMAScript object just created
+ * to the PROTO_VAL
+ *
+ * @path ch13/13.2/S13.2.2_A4_T1.js
+ * @description Declaring a function with "function __FACTORY()"
+ */
+
+var __CUBE="cube";
+
+function __FACTORY(){
+};
+__FACTORY.prototype={ shape:__CUBE, printShape:function(){return this.shape;} };
+
+var __device = new __FACTORY();
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__device.printShape === undefined) {
+ $ERROR('#1: __device.printShape !== undefined. Actual: __device.printShape ==='+__device.printShape);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__device.printShape() !== __CUBE) {
+ $ERROR('#2: __device.printShape() === __CUBE. Actual: __device.printShape() ==='+__device.printShape());
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch13/13.2/S13.2.2_A4_T2.js b/js/src/tests/test262/ch13/13.2/S13.2.2_A4_T2.js
new file mode 100644
index 000000000..3560e058b
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.2/S13.2.2_A4_T2.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.
+
+/**
+ * When the [[Construct]] property for a Function object F is called:
+ * A new native ECMAScript object is created.
+ * Gets the value of the [[Prototype]] property of the F(Denote it PROTO_VAL).
+ * If PROTO_VAL is an object, sets the [[Prototype]] property of native ECMAScript object just created
+ * to the PROTO_VAL
+ *
+ * @path ch13/13.2/S13.2.2_A4_T2.js
+ * @description Declaring a function with "__FACTORY = function()"
+ */
+
+__CUBE="cube";
+
+__FACTORY = function(){};
+
+__FACTORY.prototype={ shape:__CUBE, printShape:function(){return this.shape;} };
+
+__device = new __FACTORY();
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__device.printShape === undefined) {
+ $ERROR('#1: __device.printShape !== undefined. Actual: __device.printShape ==='+__device.printShape);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__device.printShape() !== __CUBE) {
+ $ERROR('#2: __device.printShape() === __CUBE. Actual: __device.printShape() ==='+__device.printShape());
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch13/13.2/S13.2.2_A5_T1.js b/js/src/tests/test262/ch13/13.2/S13.2.2_A5_T1.js
new file mode 100644
index 000000000..03c552318
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.2/S13.2.2_A5_T1.js
@@ -0,0 +1,80 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * When the [[Construct]] property for a Function object F is called:
+ * A new native ECMAScript object is created.
+ * Invoke the [[Call]] property of F, providing native ECMAScript object just created as the this value and
+ * providing the argument list passed into [[Construct]] as the argument values
+ *
+ * @path ch13/13.2/S13.2.2_A5_T1.js
+ * @description Declaring a function with "function __FACTORY(arg1, arg2)"
+ */
+
+__VOLUME=8;
+__RED="red";
+__ID=12342;
+__TOP=1.1;
+__BOTTOM=0.0;
+__LEFT=0.0;
+
+
+function __FACTORY(arg1, arg2){
+ this.volume=__VOLUME;
+ color=__RED;
+ this.id=arg1;
+ top=arg2;
+ this.bottom=arguments[3];
+ left=arguments[4];
+};
+
+__device = new __FACTORY(__ID, __TOP, __BOTTOM, __LEFT);
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__device.color !== undefined) {
+ $ERROR('#1: __device.color === undefined. Actual: __device.color ==='+__device.color);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__device.volume !== __VOLUME) {
+ $ERROR('#2: __device.volume === __VOLUME. Actual: __device.volume ==='+__device.volume);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if (__device.top !== undefined) {
+ $ERROR('#3: __device.top === undefined. Actual: __device.top ==='+__device.top);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#4
+if (__device.id !== __ID) {
+ $ERROR('#4: __device.id === __ID. Actual: __device.id ==='+__device.id);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#5
+if (__device.left !== undefined) {
+ $ERROR('#5: __device.left === undefined. Actual: __device.left ==='+__device.left);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#6
+if (__device.bottom !== __BOTTOM) {
+ $ERROR('#6: __device.bottom === __BOTTOM. Actual: __device.bottom ==='+__device.bottom);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch13/13.2/S13.2.2_A5_T2.js b/js/src/tests/test262/ch13/13.2/S13.2.2_A5_T2.js
new file mode 100644
index 000000000..d3cd773ab
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.2/S13.2.2_A5_T2.js
@@ -0,0 +1,80 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * When the [[Construct]] property for a Function object F is called:
+ * A new native ECMAScript object is created.
+ * Invoke the [[Call]] property of F, providing native ECMAScript object just created as the this value and
+ * providing the argument list passed into [[Construct]] as the argument values
+ *
+ * @path ch13/13.2/S13.2.2_A5_T2.js
+ * @description Declaring a function with "__FACTORY = function(arg1, arg2)"
+ */
+
+__VOLUME=8;
+__RED="red";
+__ID=12342;
+__TOP=1.1;
+__BOTTOM=0.0;
+__LEFT=0.0;
+
+
+__FACTORY = function(arg1, arg2){
+ this.volume=__VOLUME;
+ color=__RED;
+ this.id=arg1;
+ top=arg2;
+ this.bottom=arguments[3];
+ left=arguments[4];
+};
+
+__device = new __FACTORY(__ID, __TOP, __BOTTOM, __LEFT);
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__device.color !== undefined) {
+ $ERROR('#1: __device.color === undefined. Actual: __device.color ==='+__device.color);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__device.volume !== __VOLUME) {
+ $ERROR('#2: __device.volume === __VOLUME. Actual: __device.volume ==='+__device.volume);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if (__device.top !== undefined) {
+ $ERROR('#3: __device.top === undefined. Actual: __device.top ==='+__device.top);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#4
+if (__device.id !== __ID) {
+ $ERROR('#4: __device.id === __ID. Actual: __device.id ==='+__device.id);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#5
+if (__device.left !== undefined) {
+ $ERROR('#5: __device.left === undefined. Actual: __device.left ==='+__device.left);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#6
+if (__device.bottom !== __BOTTOM) {
+ $ERROR('#6: __device.bottom === __BOTTOM. Actual: __device.bottom ==='+__device.bottom);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch13/13.2/S13.2.2_A6_T1.js b/js/src/tests/test262/ch13/13.2/S13.2.2_A6_T1.js
new file mode 100644
index 000000000..82ef96dce
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.2/S13.2.2_A6_T1.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.
+
+/**
+ * When the [[Construct]] property for a Function object F is called:
+ * A new native ECMAScript object is created.
+ * Invoke the [[Call]] property of F, providing just created native ECMAScript object as the this value and providing the argument
+ * list passed into [[Construct]] as the argument values.
+ * If Type( [[Call]] returned) is not Object then return passed as this into [[Call]] object
+ *
+ * @path ch13/13.2/S13.2.2_A6_T1.js
+ * @description Declaring a function with "__func = function(arg)"
+ */
+
+__FOO="fooValue";
+__BAR="barValue";
+
+__func = function(arg){
+ this.foo=arg;
+ return 0;
+ this.bar=arguments[1];
+};
+
+__obj = new __func(__FOO, __BAR);
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__obj.foo!==__FOO) {
+ $ERROR('#1: __obj.foo === __FOO. Actual: __obj.foo==='+__obj.foo);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__obj.bar!==undefined) {
+ $ERROR('#2: __obj.bar === undefined. Actual: __obj.bar==='+__obj.bar);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch13/13.2/S13.2.2_A6_T2.js b/js/src/tests/test262/ch13/13.2/S13.2.2_A6_T2.js
new file mode 100644
index 000000000..f428bcb15
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.2/S13.2.2_A6_T2.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.
+
+/**
+ * When the [[Construct]] property for a Function object F is called:
+ * A new native ECMAScript object is created.
+ * Invoke the [[Call]] property of F, providing just created native ECMAScript object as the this value and providing the argument
+ * list passed into [[Construct]] as the argument values.
+ * If Type( [[Call]] returned) is not Object then return passed as this into [[Call]] object
+ *
+ * @path ch13/13.2/S13.2.2_A6_T2.js
+ * @description Declaring a function with "function __func (arg)"
+ */
+
+var __FOO="fooValue";
+var __BAR="barValue";
+
+function __func (arg){
+ this.foo=arg;
+ return true;
+ this.bar=arguments[1];
+};
+
+var __obj = new __func(__FOO, __BAR);
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__obj.foo!==__FOO) {
+ $ERROR('#1: __obj.foo === __FOO. Actual: __obj.foo==='+__obj.foo);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__obj.bar!==undefined) {
+ $ERROR('#2: __obj.bar === undefined. Actual: __obj.bar==='+__obj.bar);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch13/13.2/S13.2.2_A7_T1.js b/js/src/tests/test262/ch13/13.2/S13.2.2_A7_T1.js
new file mode 100644
index 000000000..02734e83e
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.2/S13.2.2_A7_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.
+
+/**
+ * When the [[Construct]] property for a Function object F is called:
+ * A new native ECMAScript object is created.
+ * Invoke the [[Call]] property of F, providing just created native ECMAScript object as the this value and providing the argument
+ * list passed into [[Construct]] as the argument values.
+ * If Type( [[Call]] returned) is an Object then return this just as obtained object
+ *
+ * @path ch13/13.2/S13.2.2_A7_T1.js
+ * @description Declaring a function with "as __func = function(arg)"
+ */
+
+var __FRST="one";
+var __SCND="two";
+
+function __func (arg1, arg2){
+ this.first=arg1;
+ var __obj={second:arg2};
+ return __obj;
+
+};
+
+var __obj__ = new __func(__FRST, __SCND);
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__obj__.first !== undefined) {
+ $ERROR('#1: __obj__.first === undefined. Actual: __obj__.first==='+__obj__.first);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__obj__.second !== __SCND) {
+ $ERROR('#2: __obj__.second === __SCND. Actual: __obj__.second ==='+__obj__.second);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch13/13.2/S13.2.2_A7_T2.js b/js/src/tests/test262/ch13/13.2/S13.2.2_A7_T2.js
new file mode 100644
index 000000000..9fbebf72c
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.2/S13.2.2_A7_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.
+
+/**
+ * When the [[Construct]] property for a Function object F is called:
+ * A new native ECMAScript object is created.
+ * Invoke the [[Call]] property of F, providing just created native ECMAScript object as the this value and providing the argument
+ * list passed into [[Construct]] as the argument values.
+ * If Type( [[Call]] returned) is an Object then return this just as obtained object
+ *
+ * @path ch13/13.2/S13.2.2_A7_T2.js
+ * @description Declaring a "function as function __func (arg)"
+ */
+
+__FRST="one";
+__SCND="two";
+
+__func = function(arg1, arg2){
+ this.first=arg1;
+ var __obj={second:arg2};
+ return __obj;
+
+};
+
+__obj__ = new __func(__FRST, __SCND);
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__obj__.first !== undefined) {
+ $ERROR('#1: __obj__.first === undefined. Actual: __obj__.first==='+__obj__.first);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__obj__.second !== __SCND) {
+ $ERROR('#2: __obj__.second === __SCND. Actual: __obj__.second ==='+__obj__.second);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch13/13.2/S13.2.2_A8_T1.js b/js/src/tests/test262/ch13/13.2/S13.2.2_A8_T1.js
new file mode 100644
index 000000000..640c120f8
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.2/S13.2.2_A8_T1.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.
+
+/**
+ * When the [[Construct]] property for a Function object F is called:
+ * A new native ECMAScript object is created.
+ * Invoke the [[Call]] property of F, providing just created native ECMAScript object as the this value and providing the argument
+ * list passed into [[Construct]] as the argument values.
+ * If Type( [[Call]] returned) is an Function then return this just as obtained function
+ *
+ * @path ch13/13.2/S13.2.2_A8_T1.js
+ * @description Creating a function whose prototype contains "return" followed by declaration of another function
+ */
+
+var __FRST="one";
+var __SCND="two";
+
+var __func = function(arg1, arg2){
+ this.first=arg1;
+
+ __gunc.prop=arg2;
+ return __gunc;
+ // function declaration
+ function __gunc(arg){return ++arg};
+
+};
+
+var __instance = new __func(__FRST, __SCND);
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__instance.first !== undefined) {
+ $ERROR('#1: __instance.first === undefined. Actual: __instance.first ==='+__instance.first);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__instance.prop!==__SCND) {
+ $ERROR('#2: __instance.prop === __SCND. Actual: __instance.prop ==='+__instance.prop);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if (__instance(1)!== 2) {
+ $ERROR('#2: __instance(1)=== 2. Actual: __instance(1) ==='+__instance(1));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+
diff --git a/js/src/tests/test262/ch13/13.2/S13.2.2_A8_T2.js b/js/src/tests/test262/ch13/13.2/S13.2.2_A8_T2.js
new file mode 100644
index 000000000..e7f454b8d
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.2/S13.2.2_A8_T2.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.
+
+/**
+ * When the [[Construct]] property for a Function object F is called:
+ * A new native ECMAScript object is created.
+ * Invoke the [[Call]] property of F, providing just created native ECMAScript object as the this value and providing the argument
+ * list passed into [[Construct]] as the argument values.
+ * If Type( [[Call]] returned) is an Function then return this just as obtained function
+ *
+ * @path ch13/13.2/S13.2.2_A8_T2.js
+ * @description Creating a function whose prototype contains declaration of another function declared as a variable
+ */
+
+var __FRST="one";
+var __SCND="two";
+
+var __func = function(arg1, arg2){
+ this.first=arg1;
+ var __gunc = function(arg){return arg+="BA"};
+ __gunc.prop=arg2;
+ return __gunc;
+
+};
+
+var __instance = new __func(__FRST, __SCND);
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__instance.first !== undefined) {
+ $ERROR('#1: __instance.first === undefined. Actual: __instance.first ==='+__instance.first);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__instance.prop!==__SCND) {
+ $ERROR('#2: __instance.prop === __SCND. Actual: __instance.prop ==='+__instance.prop);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if (__instance("SAM")!== "SAMBA") {
+ $ERROR('#2: __instance("SAM") === "SAMBA". Actual: __instance("SAM") ==='+__instance("SAM"));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+
diff --git a/js/src/tests/test262/ch13/13.2/S13.2.2_A8_T3.js b/js/src/tests/test262/ch13/13.2/S13.2.2_A8_T3.js
new file mode 100644
index 000000000..e5e05f4bd
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.2/S13.2.2_A8_T3.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.
+
+/**
+ * When the [[Construct]] property for a Function object F is called:
+ * A new native ECMAScript object is created.
+ * Invoke the [[Call]] property of F, providing just created native ECMAScript object as the this value and providing the argument
+ * list passed into [[Construct]] as the argument values.
+ * If Type( [[Call]] returned) is an Function then return this just as obtained function
+ *
+ * @path ch13/13.2/S13.2.2_A8_T3.js
+ * @description Creating a function whose prototype contains declaration of another function defined by using Function.call method
+ */
+
+var __FRST="one";
+var __SCND="two";
+
+var __func = function(arg1, arg2){
+ this.first=arg1;
+ var __gunc = Function.call(this,"arg","return ++arg;");
+ __gunc.prop=arg2;
+ return __gunc;
+
+};
+
+var __instance = new __func(__FRST, __SCND);
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__instance.first !== undefined) {
+ $ERROR('#1: __instance.first === undefined. Actual: __instance.first ==='+__instance.first);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__instance.prop!==__SCND) {
+ $ERROR('#2: __instance.prop === __SCND. Actual: __instance.prop ==='+__instance.prop);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if (__instance(1)!== 2) {
+ $ERROR('#2: __instance(1)=== 2. Actual: __instance(1) ==='+__instance(1));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+
diff --git a/js/src/tests/test262/ch13/13.2/S13.2.2_A9.js b/js/src/tests/test262/ch13/13.2/S13.2.2_A9.js
new file mode 100644
index 000000000..4e178109c
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.2/S13.2.2_A9.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.
+
+/**
+ * Calling a function as a constructor is inadmissible as long as this.any_Function is called before it is declared
+ *
+ * @path ch13/13.2/S13.2.2_A9.js
+ * @description Calling a function as a constructor
+ */
+
+function FACTORY(){
+ this.id = 0;
+
+ this.id = this.func();
+
+ this.func = function (){
+ return 5;
+ }
+
+}
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+try {
+ var obj = new FACTORY();
+ $ERROR('#1: var obj = new FACTORY() lead to throwing exception');
+} catch (e) {
+ if (e instanceof Test262Error) throw e;
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch13/13.2/S13.2.3_A1.js b/js/src/tests/test262/ch13/13.2/S13.2.3_A1.js
new file mode 100644
index 000000000..3cee5115b
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.2/S13.2.3_A1.js
@@ -0,0 +1,61 @@
+// Copyright 2011 Google Inc. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @path ch13/13.2/S13.2.3_A1.js
+ * @description check that strict mode functions/arguments have
+ * [[ThrowTypeError]]-like behavior
+ * function object.
+ * @onlyStrict
+ */
+
+"use strict";
+var poison = Object.getOwnPropertyDescriptor(Function.prototype, 'caller').get;
+
+if (typeof poison !== 'function') {
+ $ERROR("#1: A strict function's .caller should be poisoned with a function");
+}
+var threw = null;
+try {
+ poison.call(function() {});
+} catch (err) {
+ threw = err;
+}
+if (!threw || !(threw instanceof TypeError)) {
+ $ERROR("#2: Poisoned property should throw TypeError");
+}
+
+function checkNotPresent(obj, name) {
+ var desc = Object.getOwnPropertyDescriptor(obj, name);
+ if (desc !== undefined) {
+ $ERROR("#3: " + name + " should not appear as a descriptor");
+ }
+}
+
+var argumentsPoison =
+ Object.getOwnPropertyDescriptor(function() { return arguments; }(),
+ "callee").get;
+
+function checkPoison(obj, name) {
+ var desc = Object.getOwnPropertyDescriptor(obj, name);
+ if (desc.enumerable) {
+ $ERROR("#3: Poisoned " + name + " should not be enumerable");
+ }
+ if (desc.configurable) {
+ $ERROR("#4: Poisoned " + name + " should not be configurable");
+ }
+ if (argumentsPoison !== desc.get) {
+ $ERROR("#5: " + name + "'s getter not poisoned with same poison");
+ }
+ if (argumentsPoison !== desc.set) {
+ $ERROR("#6: " + name + "'s setter not poisoned with same poison");
+ }
+}
+
+checkNotPresent(function() {}, 'caller');
+checkNotPresent(function() {}, 'arguments');
+checkPoison((function() { return arguments; })(), 'caller');
+checkPoison((function() { return arguments; })(), 'callee');
+checkNotPresent((function() {}).bind(null), 'caller');
+checkNotPresent((function() {}).bind(null), 'arguments');
+
diff --git a/js/src/tests/test262/ch13/13.2/S13.2_A1_T1.js b/js/src/tests/test262/ch13/13.2/S13.2_A1_T1.js
new file mode 100644
index 000000000..5f7d1b15a
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.2/S13.2_A1_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.
+
+/**
+ * A "prototype" property is automatically created for every function
+ *
+ * @path ch13/13.2/S13.2_A1_T1.js
+ * @description Using "function __func(){}" as a FunctionDeclaration
+ */
+
+function __func(){};
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__func.prototype === undefined) {
+ $ERROR('#1: __func.prototype !== undefined');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch13/13.2/S13.2_A1_T2.js b/js/src/tests/test262/ch13/13.2/S13.2_A1_T2.js
new file mode 100644
index 000000000..b9d933a6d
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.2/S13.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.
+
+/**
+ * A "prototype" property is automatically created for every function
+ *
+ * @path ch13/13.2/S13.2_A1_T2.js
+ * @description Using "var __func = function(){}" as a FunctionDeclaration
+ */
+
+var __func = function(){};
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__func.prototype === undefined) {
+ $ERROR('#1: __func.prototype !== undefined');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch13/13.2/S13.2_A2_T1.js b/js/src/tests/test262/ch13/13.2/S13.2_A2_T1.js
new file mode 100644
index 000000000..b49ba1973
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.2/S13.2_A2_T1.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.
+
+/**
+ * Nested function are admitted
+ *
+ * @path ch13/13.2/S13.2_A2_T1.js
+ * @description Nesting level is two
+ */
+
+var __JEDI="jedi";
+
+function __FUNC(){
+ function __GUNC(){
+ return arguments[0];
+ };
+
+ return __GUNC;
+};
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__FUNC()(__JEDI) !== __JEDI) {
+ $ERROR('#1: __FUNC()(__JEDI) === __JEDI. Actual: __FUNC()(__JEDI) ==='+__FUNC()(__JEDI));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch13/13.2/S13.2_A2_T2.js b/js/src/tests/test262/ch13/13.2/S13.2_A2_T2.js
new file mode 100644
index 000000000..024a624fa
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.2/S13.2_A2_T2.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.
+
+/**
+ * Nested function are admitted
+ *
+ * @path ch13/13.2/S13.2_A2_T2.js
+ * @description Nesting level is three
+ */
+
+var __ROBOT="C3PO";
+
+function __FUNC(){
+ function __GUNC(){
+ return arguments[0];
+ };
+ function __HUNC(){
+ return __GUNC;
+ };
+ return __HUNC;
+};
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__FUNC()()(__ROBOT) !== __ROBOT) {
+ $ERROR('#1: __FUNC()()(__ROBOT) === __ROBOT. Actual: __FUNC()()(__ROBOT) ==='+__FUNC()()(__ROBOT));
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch13/13.2/S13.2_A3.js b/js/src/tests/test262/ch13/13.2/S13.2_A3.js
new file mode 100644
index 000000000..3cd3c7032
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.2/S13.2_A3.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.
+
+/**
+ * When Function object(F) is constructed the length property of F is set to the number of formal properties specified in FormalParameterList
+ *
+ * @path ch13/13.2/S13.2_A3.js
+ * @description Creating functions with various FormalParameterList and checking their lengths
+ */
+
+function __func(){};
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__func.length !== 0) {
+ $ERROR('#1: __func.length === 0. Actual: __func.length ==='+__func.length);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+function __gunc(a,b,c){};
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__gunc.length !== 3) {
+ $ERROR('#2: __gunc.length === 3. Actual: __gunc.length ==='+__gunc.length);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+
diff --git a/js/src/tests/test262/ch13/13.2/S13.2_A4_T1.js b/js/src/tests/test262/ch13/13.2/S13.2_A4_T1.js
new file mode 100644
index 000000000..ef47b61a0
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.2/S13.2_A4_T1.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.
+
+/**
+ * When Function object(F) is constructed the following steps from 9 to 11 take place
+ * 9.Create a new object as would be constructed by the expression new Object().
+ * 10. Set the constructor property of Result(9) to F. This property is given attributes { DontEnum }.
+ * 11. Set the "prototype" property of F to Result(9).
+ *
+ * @path ch13/13.2/S13.2_A4_T1.js
+ * @description Checking prototype, prototype.constructor properties and {DontEnum} property of a constructor.
+ * Using "function __func(){}" as a FunctionDeclaration
+ */
+
+function __func(){};
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (typeof __func.prototype !== 'object') {
+ $ERROR('#1: typeof __func.prototype === \'object\'. Actual: typeof __gunc.prototype ==='+typeof __gunc.prototype);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__func.prototype.constructor !== __func) {
+ $ERROR('#2: __func.prototype.constructor === __func. Actual: __gunc.prototype.constructor ==='+__gunc.prototype.constructor);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+var __constructor_was__enumed;
+
+for (__prop in __func.prototype){
+ if (__prop === 'constructor')
+ __constructor_was__enumed = true;
+}
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if (__constructor_was__enumed) {
+ $ERROR('#3: __constructor_was__enumed === false. Actual: __constructor_was__enumed ==='+__constructor_was__enumed);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+
+
+
+
+
diff --git a/js/src/tests/test262/ch13/13.2/S13.2_A4_T2.js b/js/src/tests/test262/ch13/13.2/S13.2_A4_T2.js
new file mode 100644
index 000000000..2da55b763
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.2/S13.2_A4_T2.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.
+
+/**
+ * When Function object(F) is constructed the following steps from 9 to 11 take place
+ * 9.Create a new object as would be constructed by the expression new Object().
+ * 10. Set the constructor property of Result(9) to F. This property is given attributes { DontEnum }.
+ * 11. Set the "prototype" property of F to Result(9).
+ *
+ * @path ch13/13.2/S13.2_A4_T2.js
+ * @description Checking prototype, prototype.constructor properties and {DontEnum} property of a constructor.
+ * Using "var __gunc = function(){}" as a FunctionDeclaration
+ */
+
+var __gunc = function(){};
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (typeof __gunc.prototype !== 'object') {
+ $ERROR('#1: typeof __gunc.prototype === \'object\'. Actual: typeof __gunc.prototype ==='+typeof __gunc.prototype);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__gunc.prototype.constructor !== __gunc) {
+ $ERROR('#2: __gunc.prototype.constructor === __gunc. Actual: __gunc.prototype.constructor ==='+__gunc.prototype.constructor);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+var __constructor_was__enumed;
+
+for (__prop in __gunc.prototype){
+ if (__prop === 'constructor')
+ __constructor_was__enumed = true;
+}
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if (__constructor_was__enumed) {
+ $ERROR('#3: __constructor_was__enumed === false. Actual: __constructor_was__enumed ==='+__constructor_was__enumed);
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+
+
+
+
+
diff --git a/js/src/tests/test262/ch13/13.2/S13.2_A5.js b/js/src/tests/test262/ch13/13.2/S13.2_A5.js
new file mode 100644
index 000000000..6d88fad8e
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.2/S13.2_A5.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.
+
+/**
+ * When Function object(F) is constructed
+ * the [[Prototype]] property of F is set to the original Function prototype object as specified in 15.3.3.1
+ *
+ * @path ch13/13.2/S13.2_A5.js
+ * @description Function.prototype.isPrototypeOf() is used
+ */
+
+function __func(){};
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (!(Function.prototype.isPrototypeOf(__func))) {
+ $ERROR('#1: Function.prototype.isPrototypeOf(__func)');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+
+var __gunc = function(){};
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (!(Function.prototype.isPrototypeOf(__gunc))) {
+ $ERROR('#1: Function.prototype.isPrototypeOf(__gunc)');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+
+
diff --git a/js/src/tests/test262/ch13/13.2/S13.2_A6_T1.js b/js/src/tests/test262/ch13/13.2/S13.2_A6_T1.js
new file mode 100644
index 000000000..2fca01cc2
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.2/S13.2_A6_T1.js
@@ -0,0 +1,13 @@
+// Copyright 2011 Google Inc. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @path ch13/13.2/S13.2_A6_T1.js
+ * @description check if "caller" poisoning poisons
+ * getOwnPropertyDescriptor too
+ * @onlyStrict
+ */
+
+"use strict";
+Object.getOwnPropertyDescriptor(function(){}, 'caller');
+
diff --git a/js/src/tests/test262/ch13/13.2/S13.2_A6_T2.js b/js/src/tests/test262/ch13/13.2/S13.2_A6_T2.js
new file mode 100644
index 000000000..e8a334462
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.2/S13.2_A6_T2.js
@@ -0,0 +1,13 @@
+// Copyright 2011 Google Inc. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @path ch13/13.2/S13.2_A6_T2.js
+ * @description check if "arguments" poisoning poisons
+ * getOwnPropertyDescriptor too
+ * @onlyStrict
+ */
+
+"use strict";
+Object.getOwnPropertyDescriptor(function(){}, 'arguments');
+
diff --git a/js/src/tests/test262/ch13/13.2/S13.2_A7_T1.js b/js/src/tests/test262/ch13/13.2/S13.2_A7_T1.js
new file mode 100644
index 000000000..d557bbd67
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.2/S13.2_A7_T1.js
@@ -0,0 +1,14 @@
+// Copyright 2011 Google Inc. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @path ch13/13.2/S13.2_A7_T1.js
+ * @description check if "caller" poisoning poisons
+ * hasOwnProperty too
+ * @onlyStrict
+ */
+
+"use strict";
+(function(){}).hasOwnProperty('caller');
+
+
diff --git a/js/src/tests/test262/ch13/13.2/S13.2_A7_T2.js b/js/src/tests/test262/ch13/13.2/S13.2_A7_T2.js
new file mode 100644
index 000000000..82c03938f
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.2/S13.2_A7_T2.js
@@ -0,0 +1,14 @@
+// Copyright 2011 Google Inc. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @path ch13/13.2/S13.2_A7_T2.js
+ * @description check if "arguments" poisoning poisons
+ * hasOwnProperty too
+ * @onlyStrict
+ */
+
+"use strict";
+(function(){}).hasOwnProperty('arguments');
+
+
diff --git a/js/src/tests/test262/ch13/13.2/S13.2_A8_T1.js b/js/src/tests/test262/ch13/13.2/S13.2_A8_T1.js
new file mode 100644
index 000000000..a68553e82
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.2/S13.2_A8_T1.js
@@ -0,0 +1,14 @@
+// Copyright 2011 Google Inc. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @path ch13/13.2/S13.2_A8_T1.js
+ * @description check if "caller" poisoning poisons
+ * "in" too
+ * @onlyStrict
+ */
+
+"use strict";
+'caller' in function() {};
+
+
diff --git a/js/src/tests/test262/ch13/13.2/S13.2_A8_T2.js b/js/src/tests/test262/ch13/13.2/S13.2_A8_T2.js
new file mode 100644
index 000000000..0d9eec7c5
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.2/S13.2_A8_T2.js
@@ -0,0 +1,14 @@
+// Copyright 2011 Google Inc. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @path ch13/13.2/S13.2_A8_T2.js
+ * @description check if "arguments" poisoning poisons
+ * "in" too
+ * @onlyStrict
+ */
+
+"use strict";
+'arguments' in function() {};
+
+
diff --git a/js/src/tests/test262/ch13/13.2/browser.js b/js/src/tests/test262/ch13/13.2/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.2/browser.js
diff --git a/js/src/tests/test262/ch13/13.2/shell.js b/js/src/tests/test262/ch13/13.2/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch13/13.2/shell.js
diff --git a/js/src/tests/test262/ch13/browser.js b/js/src/tests/test262/ch13/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch13/browser.js
diff --git a/js/src/tests/test262/ch13/shell.js b/js/src/tests/test262/ch13/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch13/shell.js
diff --git a/js/src/tests/test262/ch14/14.0/S14_A1.js b/js/src/tests/test262/ch14/14.0/S14_A1.js
new file mode 100644
index 000000000..302db12dd
--- /dev/null
+++ b/js/src/tests/test262/ch14/14.0/S14_A1.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.
+
+/**
+ * FunctionExpression must be localed in a reacheable fragment of the program
+ *
+ * @path ch14/14.0/S14_A1.js
+ * @description Declaring a function within an "if" Expression
+ */
+
+var THERE = "I'm there";
+var HERE = "I'm here";
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if ( __func !== undefined) {
+ $ERROR('#1: __func === undefined. Actual: __func ==='+ __func );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+if (true){
+ var __func = function(){return HERE;};
+} else {
+ var __func = function (){return THERE;};
+};
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__func() !== HERE) {
+ $ERROR('#2: __func() === HERE. Actual: __func() ==='+ __func() );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch14/14.0/S14_A2.js b/js/src/tests/test262/ch14/14.0/S14_A2.js
new file mode 100644
index 000000000..758e6daf5
--- /dev/null
+++ b/js/src/tests/test262/ch14/14.0/S14_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.
+
+/**
+ * FunctionDeclaration cannot be localed inside an Expression
+ *
+ * @path ch14/14.0/S14_A2.js
+ * @description Declaring a function within an "if" Expression
+ */
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (typeof f !== 'undefined') {
+ $ERROR('#1: typeof f === \'undefined\'. Actual: typeof f ==='+ typeof f );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (function f(arg){
+ if (arg===0)
+ return 1;
+ else
+ return f(arg-1)*arg;
+}(3)!==6) {
+ $ERROR('#2: FunctionDeclaration cannot be localed inside an Expression');
+};
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/js/src/tests/test262/ch14/14.0/S14_A3.js b/js/src/tests/test262/ch14/14.0/S14_A3.js
new file mode 100644
index 000000000..d7dff69a6
--- /dev/null
+++ b/js/src/tests/test262/ch14/14.0/S14_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.
+
+/**
+ * Global FunctionDeclaration cannot be defined within the body of another FunctionDeclaration
+ *
+ * @path ch14/14.0/S14_A3.js
+ * @description Declaring a function within the body of another function
+ */
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (typeof __func !== "function") {
+ $ERROR('#1: typeof __func === "function". Actual: typeof __func ==='+ typeof __func );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (typeof __gunc !== "undefined") {
+ $ERROR('#2: typeof __gunc === "undefined". Actual: typeof __gunc ==='+ typeof __gunc );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+function __func(){
+ function __gunc(){return true};
+}
+
diff --git a/js/src/tests/test262/ch14/14.0/S14_A5_T1.js b/js/src/tests/test262/ch14/14.0/S14_A5_T1.js
new file mode 100644
index 000000000..499147150
--- /dev/null
+++ b/js/src/tests/test262/ch14/14.0/S14_A5_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.
+
+/**
+ * The Identifer within a FunctionDeclaration can be written in both letters and unicode
+ *
+ * @path ch14/14.0/S14_A5_T1.js
+ * @description Declaring a function with "function __\u0066\u0075\u006e\u0063(){return "both"}"
+ */
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__func() !== "both") {
+ $ERROR('#1: __func() === "both". Actual: __func() ==='+ __func() );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+function __func(){return "ascii"};
+function \u005f\u005f\u0066\u0075\u006e\u0063(){return "unicode"};//__func in unicode
+function __\u0066\u0075\u006e\u0063(){return "both"};//__func in unicode
+
diff --git a/js/src/tests/test262/ch14/14.0/S14_A5_T2.js b/js/src/tests/test262/ch14/14.0/S14_A5_T2.js
new file mode 100644
index 000000000..ee3c9d2a3
--- /dev/null
+++ b/js/src/tests/test262/ch14/14.0/S14_A5_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.
+
+/**
+ * The Identifer within a FunctionDeclaration can be written in both letters and unicode
+ *
+ * @path ch14/14.0/S14_A5_T2.js
+ * @description Declaring a function with "function \u005f\u005f\u0066\u0075\u006e\u0063(){return "unicode"}"
+ */
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (__func() !== "unicode") {
+ $ERROR('#1: __func() === "unicode". Actual: __func() ==='+ __func() );
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+function __func(){return "ascii"};
+function \u005f\u005f\u0066\u0075\u006e\u0063(){return "unicode"};//__func in unicode
+
diff --git a/js/src/tests/test262/ch14/14.0/browser.js b/js/src/tests/test262/ch14/14.0/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch14/14.0/browser.js
diff --git a/js/src/tests/test262/ch14/14.0/shell.js b/js/src/tests/test262/ch14/14.0/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch14/14.0/shell.js
diff --git a/js/src/tests/test262/ch14/14.1/14.1-1-s.js b/js/src/tests/test262/ch14/14.1/14.1-1-s.js
new file mode 100644
index 000000000..6b2b377b8
--- /dev/null
+++ b/js/src/tests/test262/ch14/14.1/14.1-1-s.js
@@ -0,0 +1,23 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch14/14.1/14.1-1-s.js
+ * @description 'use strict' directive - correct usage
+ * @noStrict
+ */
+
+
+function testcase() {
+
+ function foo()
+ {
+ 'use strict';
+ return(this === undefined);
+ }
+
+ return foo.call(undefined);
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch14/14.1/14.1-10-s.js b/js/src/tests/test262/ch14/14.1/14.1-10-s.js
new file mode 100644
index 000000000..5badea52b
--- /dev/null
+++ b/js/src/tests/test262/ch14/14.1/14.1-10-s.js
@@ -0,0 +1,24 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch14/14.1/14.1-10-s.js
+ * @description other directives - may follow 'use strict' directive
+ * @noStrict
+ */
+
+
+function testcase() {
+
+ function foo()
+ {
+ "use strict";
+ "bogus directive";
+ return (this === undefined);
+ }
+
+ return foo.call(undefined);
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch14/14.1/14.1-11-s.js b/js/src/tests/test262/ch14/14.1/14.1-11-s.js
new file mode 100644
index 000000000..bb5cbf79c
--- /dev/null
+++ b/js/src/tests/test262/ch14/14.1/14.1-11-s.js
@@ -0,0 +1,26 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch14/14.1/14.1-11-s.js
+ * @description comments may preceed 'use strict' directive
+ * @noStrict
+ */
+
+
+function testcase() {
+
+ function foo()
+ {
+ // comment
+ /* comment */ "use strict";
+
+ return(this === undefined);
+
+ }
+
+ return foo.call(undefined);
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch14/14.1/14.1-12-s.js b/js/src/tests/test262/ch14/14.1/14.1-12-s.js
new file mode 100644
index 000000000..4aa3fb115
--- /dev/null
+++ b/js/src/tests/test262/ch14/14.1/14.1-12-s.js
@@ -0,0 +1,24 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch14/14.1/14.1-12-s.js
+ * @description comments may follow 'use strict' directive
+ * @noStrict
+ */
+
+
+function testcase() {
+
+ function foo()
+ {
+ "use strict"; /* comment */ // comment
+
+ return (this === undefined);
+ }
+
+ return foo.call(undefined);
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch14/14.1/14.1-13-s.js b/js/src/tests/test262/ch14/14.1/14.1-13-s.js
new file mode 100644
index 000000000..ba3889681
--- /dev/null
+++ b/js/src/tests/test262/ch14/14.1/14.1-13-s.js
@@ -0,0 +1,23 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch14/14.1/14.1-13-s.js
+ * @description semicolon insertion works for'use strict' directive
+ * @noStrict
+ */
+
+
+function testcase() {
+
+ function foo()
+ {
+ "use strict"
+ return (this === undefined);
+ }
+
+ return foo.call(undefined);
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch14/14.1/14.1-14-s.js b/js/src/tests/test262/ch14/14.1/14.1-14-s.js
new file mode 100644
index 000000000..fd37bd4f8
--- /dev/null
+++ b/js/src/tests/test262/ch14/14.1/14.1-14-s.js
@@ -0,0 +1,24 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch14/14.1/14.1-14-s.js
+ * @description semicolon insertion may come before 'use strict' directive
+ * @noStrict
+ */
+
+
+function testcase() {
+
+ function foo()
+ {
+ "another directive"
+ "use strict" ;
+ return (this === undefined);
+ }
+
+ return foo.call(undefined);
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch14/14.1/14.1-15-s.js b/js/src/tests/test262/ch14/14.1/14.1-15-s.js
new file mode 100644
index 000000000..38325c4d4
--- /dev/null
+++ b/js/src/tests/test262/ch14/14.1/14.1-15-s.js
@@ -0,0 +1,29 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch14/14.1/14.1-15-s.js
+ * @description blank lines may come before 'use strict' directive
+ * @noStrict
+ */
+
+
+function testcase() {
+
+ function foo()
+ {
+
+
+
+
+
+
+ "use strict" ;
+ return (this === undefined);
+ }
+
+ return foo.call(undefined);
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch14/14.1/14.1-16-s.js b/js/src/tests/test262/ch14/14.1/14.1-16-s.js
new file mode 100644
index 000000000..e63ef40d0
--- /dev/null
+++ b/js/src/tests/test262/ch14/14.1/14.1-16-s.js
@@ -0,0 +1,23 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch14/14.1/14.1-16-s.js
+ * @description 'use strict' directive - not recognized if it follow an empty statement
+ * @noStrict
+ */
+
+
+function testcase() {
+
+ function foo()
+ {
+ ; 'use strict';
+ return (this !== undefined);
+ }
+
+ return foo.call(undefined);
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch14/14.1/14.1-17-s.js b/js/src/tests/test262/ch14/14.1/14.1-17-s.js
new file mode 100644
index 000000000..cfc21ff21
--- /dev/null
+++ b/js/src/tests/test262/ch14/14.1/14.1-17-s.js
@@ -0,0 +1,23 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch14/14.1/14.1-17-s.js
+ * @description 'use strict' directive - not recognized if it follow some other statment empty statement
+ * @noStrict
+ */
+
+function testcase() {
+
+ function foo()
+ {
+ var x;
+ 'use strict';
+ return (this !== undefined);
+ }
+
+ return foo.call(undefined);
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch14/14.1/14.1-2-s.js b/js/src/tests/test262/ch14/14.1/14.1-2-s.js
new file mode 100644
index 000000000..9701c4020
--- /dev/null
+++ b/js/src/tests/test262/ch14/14.1/14.1-2-s.js
@@ -0,0 +1,23 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch14/14.1/14.1-2-s.js
+ * @description "use strict" directive - correct usage double quotes
+ * @noStrict
+ */
+
+
+function testcase() {
+
+ function foo()
+ {
+ "use strict";
+ return (this === undefined);
+ }
+
+ return foo.call(undefined);
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch14/14.1/14.1-3-s.js b/js/src/tests/test262/ch14/14.1/14.1-3-s.js
new file mode 100644
index 000000000..90eb7767a
--- /dev/null
+++ b/js/src/tests/test262/ch14/14.1/14.1-3-s.js
@@ -0,0 +1,23 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch14/14.1/14.1-3-s.js
+ * @description 'use strict' directive - not recognized if it contains extra whitespace
+ * @noStrict
+ */
+
+
+function testcase() {
+
+ function foo()
+ {
+ ' use strict ';
+ return (this !== undefined);
+ }
+
+ return foo.call(undefined);
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch14/14.1/14.1-4-s.js b/js/src/tests/test262/ch14/14.1/14.1-4-s.js
new file mode 100644
index 000000000..f53cd37fa
--- /dev/null
+++ b/js/src/tests/test262/ch14/14.1/14.1-4-s.js
@@ -0,0 +1,24 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch14/14.1/14.1-4-s.js
+ * @description 'use strict' directive - not recognized if contains Line Continuation
+ * @noStrict
+ */
+
+
+function testcase() {
+
+ function foo()
+ {
+ 'use str\
+ict';
+ return (this !== undefined);
+ }
+
+ return foo.call(undefined);
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch14/14.1/14.1-4gs.js b/js/src/tests/test262/ch14/14.1/14.1-4gs.js
new file mode 100644
index 000000000..67456de53
--- /dev/null
+++ b/js/src/tests/test262/ch14/14.1/14.1-4gs.js
@@ -0,0 +1,14 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch14/14.1/14.1-4gs.js
+ * @description StrictMode - a Use Strict Directive followed by a strict mode violation
+ * @onlyStrict
+ * @negative ^((?!NotEarlyError).)*$
+ */
+"use strict";
+throw NotEarlyError;
+eval = 42; \ No newline at end of file
diff --git a/js/src/tests/test262/ch14/14.1/14.1-5-s.js b/js/src/tests/test262/ch14/14.1/14.1-5-s.js
new file mode 100644
index 000000000..f0b40a12c
--- /dev/null
+++ b/js/src/tests/test262/ch14/14.1/14.1-5-s.js
@@ -0,0 +1,23 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch14/14.1/14.1-5-s.js
+ * @description 'use strict' directive - not recognized if contains a EscapeSequence
+ * @noStrict
+ */
+
+
+function testcase() {
+
+ function foo()
+ {
+ 'use\u0020strict';
+ return(this !== undefined);
+ }
+
+ return foo.call(undefined);
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch14/14.1/14.1-5gs.js b/js/src/tests/test262/ch14/14.1/14.1-5gs.js
new file mode 100644
index 000000000..9ce043a67
--- /dev/null
+++ b/js/src/tests/test262/ch14/14.1/14.1-5gs.js
@@ -0,0 +1,16 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch14/14.1/14.1-5gs.js
+ * @description StrictMode - a Use Strict Directive embedded in a directive prologue followed by a strict mode violation
+ * @onlyStrict
+ * @negative ^((?!NotEarlyError).)*$
+ */
+"a";
+"use strict";
+"c";
+throw NotEarlyError;
+eval = 42; \ No newline at end of file
diff --git a/js/src/tests/test262/ch14/14.1/14.1-6-s.js b/js/src/tests/test262/ch14/14.1/14.1-6-s.js
new file mode 100644
index 000000000..c779da837
--- /dev/null
+++ b/js/src/tests/test262/ch14/14.1/14.1-6-s.js
@@ -0,0 +1,23 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch14/14.1/14.1-6-s.js
+ * @description 'use strict' directive - not recognized if contains a <TAB> instead of a space
+ * @noStrict
+ */
+
+
+function testcase() {
+
+ function foo()
+ {
+ 'use strict';
+ return (this !== undefined);
+ }
+
+ return foo.call(undefined);
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch14/14.1/14.1-7-s.js b/js/src/tests/test262/ch14/14.1/14.1-7-s.js
new file mode 100644
index 000000000..a54b90774
--- /dev/null
+++ b/js/src/tests/test262/ch14/14.1/14.1-7-s.js
@@ -0,0 +1,23 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch14/14.1/14.1-7-s.js
+ * @description 'use strict' directive - not recognized if upper case
+ * @noStrict
+ */
+
+
+function testcase() {
+
+ function foo()
+ {
+ 'Use Strict';
+ return (this !== undefined);
+ }
+
+ return foo.call(undefined);
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch14/14.1/14.1-8-s.js b/js/src/tests/test262/ch14/14.1/14.1-8-s.js
new file mode 100644
index 000000000..446ab3a74
--- /dev/null
+++ b/js/src/tests/test262/ch14/14.1/14.1-8-s.js
@@ -0,0 +1,24 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch14/14.1/14.1-8-s.js
+ * @description 'use strict' directive - may follow other directives
+ * @noStrict
+ */
+
+
+function testcase() {
+
+ function foo()
+ {
+ "bogus directive";
+ "use strict";
+ return (this === undefined);
+ }
+
+ return foo.call(undefined);
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch14/14.1/14.1-9-s.js b/js/src/tests/test262/ch14/14.1/14.1-9-s.js
new file mode 100644
index 000000000..2efb4736a
--- /dev/null
+++ b/js/src/tests/test262/ch14/14.1/14.1-9-s.js
@@ -0,0 +1,24 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch14/14.1/14.1-9-s.js
+ * @description 'use strict' directive - may occur multiple times
+ * @noStrict
+ */
+
+
+function testcase() {
+
+ function foo()
+ {
+ 'use strict';
+ "use strict";
+ return (this === undefined);
+ }
+
+ return foo.call(undefined);
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch14/14.1/browser.js b/js/src/tests/test262/ch14/14.1/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch14/14.1/browser.js
diff --git a/js/src/tests/test262/ch14/14.1/shell.js b/js/src/tests/test262/ch14/14.1/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch14/14.1/shell.js
diff --git a/js/src/tests/test262/ch14/browser.js b/js/src/tests/test262/ch14/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch14/browser.js
diff --git a/js/src/tests/test262/ch14/shell.js b/js/src/tests/test262/ch14/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch14/shell.js
diff --git a/js/src/tests/test262/intl402/browser.js b/js/src/tests/test262/intl402/browser.js
new file mode 100644
index 000000000..14dc20639
--- /dev/null
+++ b/js/src/tests/test262/intl402/browser.js
@@ -0,0 +1,1315 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+/*
+ * Undo at least the damage done by taintArray so that the jstests
+ * harness won't die. The properties added to Object.prototype by the various
+ * tests have names that are less likely to cause trouble.
+ */
+setRestoreFunction((function () {
+ var Array_indexOf = Array.prototype.indexOf;
+ var Array_join = Array.prototype.join;
+ var Array_push = Array.prototype.push;
+ var Array_slice = Array.prototype.slice;
+ var Array_sort = Array.prototype.sort;
+ return function () {
+ delete Array.prototype["0"];
+ Array.prototype.indexOf = Array_indexOf;
+ Array.prototype.join = Array_join;
+ Array.prototype.push = Array_push;
+ Array.prototype.slice = Array_slice;
+ Array.prototype.sort = Array_sort;
+ };
+}()));
+// Copyright 2012 Mozilla Corporation. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @description Tests that obj meets the requirements for built-in objects
+ * defined by the introduction of chapter 15 of the ECMAScript Language Specification.
+ * @param {Object} obj the object to be tested.
+ * @param {boolean} isFunction whether the specification describes obj as a function.
+ * @param {boolean} isConstructor whether the specification describes obj as a constructor.
+ * @param {String[]} properties an array with the names of the built-in properties of obj,
+ * excluding length, prototype, or properties with non-default attributes.
+ * @param {number} length for functions only: the length specified for the function
+ * or derived from the argument list.
+ * @author Norbert Lindenberg
+ */
+
+function testBuiltInObject(obj, isFunction, isConstructor, properties, length) {
+
+ if (obj === undefined) {
+ $ERROR("Object being tested is undefined.");
+ }
+
+ var objString = Object.prototype.toString.call(obj);
+ if (isFunction) {
+ if (objString !== "[object Function]") {
+ $ERROR("The [[Class]] internal property of a built-in function must be " +
+ "\"Function\", but toString() returns " + objString);
+ }
+ } else {
+ if (objString !== "[object Object]") {
+ $ERROR("The [[Class]] internal property of a built-in non-function object must be " +
+ "\"Object\", but toString() returns " + objString);
+ }
+ }
+
+ if (!Object.isExtensible(obj)) {
+ $ERROR("Built-in objects must be extensible.");
+ }
+
+ if (isFunction && Object.getPrototypeOf(obj) !== Function.prototype) {
+ $ERROR("Built-in functions must have Function.prototype as their prototype.");
+ }
+
+ if (isConstructor && Object.getPrototypeOf(obj.prototype) !== Object.prototype) {
+ $ERROR("Built-in prototype objects must have Object.prototype as their prototype.");
+ }
+
+ // verification of the absence of the [[Construct]] internal property has
+ // been moved to the end of the test
+
+ // verification of the absence of the prototype property has
+ // been moved to the end of the test
+
+ if (isFunction) {
+
+ if (typeof obj.length !== "number" || obj.length !== Math.floor(obj.length)) {
+ $ERROR("Built-in functions must have a length property with an integer value.");
+ }
+
+ if (obj.length !== length) {
+ $ERROR("Function's length property doesn't have specified value; expected " +
+ length + ", got " + obj.length + ".");
+ }
+
+ var desc = Object.getOwnPropertyDescriptor(obj, "length");
+ if (desc.writable) {
+ $ERROR("The length property of a built-in function must not be writable.");
+ }
+ if (desc.enumerable) {
+ $ERROR("The length property of a built-in function must not be enumerable.");
+ }
+ if (desc.configurable) {
+ $ERROR("The length property of a built-in function must not be configurable.");
+ }
+ }
+
+ properties.forEach(function(prop) {
+ var desc = Object.getOwnPropertyDescriptor(obj, prop);
+ if (desc === undefined) {
+ $ERROR("Missing property " + prop + ".");
+ }
+ // accessor properties don't have writable attribute
+ if (desc.hasOwnProperty("writable") && !desc.writable) {
+ $ERROR("The " + prop + " property of this built-in function must be writable.");
+ }
+ if (desc.enumerable) {
+ $ERROR("The " + prop + " property of this built-in function must not be enumerable.");
+ }
+ if (!desc.configurable) {
+ $ERROR("The " + prop + " property of this built-in function must be configurable.");
+ }
+ });
+
+ // The remaining sections have been moved to the end of the test because
+ // unbound non-constructor functions written in JavaScript cannot possibly
+ // pass them, and we still want to test JavaScript implementations as much
+ // as possible.
+
+ var exception;
+ if (isFunction && !isConstructor) {
+ // this is not a complete test for the presence of [[Construct]]:
+ // if it's absent, the exception must be thrown, but it may also
+ // be thrown if it's present and just has preconditions related to
+ // arguments or the this value that this statement doesn't meet.
+ try {
+ /*jshint newcap:false*/
+ var instance = new obj();
+ } catch (e) {
+ exception = e;
+ }
+ if (exception === undefined || exception.name !== "TypeError") {
+ $ERROR("Built-in functions that aren't constructors must throw TypeError when " +
+ "used in a \"new\" statement.");
+ }
+ }
+
+ if (isFunction && !isConstructor && obj.hasOwnProperty("prototype")) {
+ $ERROR("Built-in functions that aren't constructors must not have a prototype property.");
+ }
+
+ // passed the complete test!
+ return true;
+}
+
+// Copyright 2011-2012 Norbert Lindenberg. All rights reserved.
+// Copyright 2012-2013 Mozilla Corporation. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * This file contains shared functions for the tests in the conformance test
+ * suite for the ECMAScript Internationalization API.
+ * @author Norbert Lindenberg
+ */
+
+
+/**
+ * @description Calls the provided function for every service constructor in
+ * the Intl object, until f returns a falsy value. It returns the result of the
+ * last call to f, mapped to a boolean.
+ * @param {Function} f the function to call for each service constructor in
+ * the Intl object.
+ * @param {Function} Constructor the constructor object to test with.
+ * @result {Boolean} whether the test succeeded.
+ */
+function testWithIntlConstructors(f) {
+ var constructors = ["Collator", "NumberFormat", "DateTimeFormat"];
+ return constructors.every(function (constructor) {
+ var Constructor = Intl[constructor];
+ var result;
+ try {
+ result = f(Constructor);
+ } catch (e) {
+ e.message += " (Testing with " + constructor + ".)";
+ throw e;
+ }
+ return result;
+ });
+}
+
+
+/**
+ * Returns the name of the given constructor object, which must be one of
+ * Intl.Collator, Intl.NumberFormat, or Intl.DateTimeFormat.
+ * @param {object} Constructor a constructor
+ * @return {string} the name of the constructor
+ */
+function getConstructorName(Constructor) {
+ switch (Constructor) {
+ case Intl.Collator:
+ return "Collator";
+ case Intl.NumberFormat:
+ return "NumberFormat";
+ case Intl.DateTimeFormat:
+ return "DateTimeFormat";
+ default:
+ $ERROR("test internal error: unknown Constructor");
+ }
+}
+
+
+/**
+ * Taints a named data property of the given object by installing
+ * a setter that throws an exception.
+ * @param {object} obj the object whose data property to taint
+ * @param {string} property the property to taint
+ */
+function taintDataProperty(obj, property) {
+ Object.defineProperty(obj, property, {
+ set: function(value) {
+ $ERROR("Client code can adversely affect behavior: setter for " + property + ".");
+ },
+ enumerable: false,
+ configurable: true
+ });
+}
+
+
+/**
+ * Taints a named method of the given object by replacing it with a function
+ * that throws an exception.
+ * @param {object} obj the object whose method to taint
+ * @param {string} property the name of the method to taint
+ */
+function taintMethod(obj, property) {
+ Object.defineProperty(obj, property, {
+ value: function() {
+ $ERROR("Client code can adversely affect behavior: method " + property + ".");
+ },
+ writable: true,
+ enumerable: false,
+ configurable: true
+ });
+}
+
+
+/**
+ * Taints the given properties (and similarly named properties) by installing
+ * setters on Object.prototype that throw exceptions.
+ * @param {Array} properties an array of property names to taint
+ */
+function taintProperties(properties) {
+ properties.forEach(function (property) {
+ var adaptedProperties = [property, "__" + property, "_" + property, property + "_", property + "__"];
+ adaptedProperties.forEach(function (property) {
+ taintDataProperty(Object.prototype, property);
+ });
+ });
+}
+
+
+/**
+ * Taints the Array object by creating a setter for the property "0" and
+ * replacing some key methods with functions that throw exceptions.
+ */
+function taintArray() {
+ taintDataProperty(Array.prototype, "0");
+ taintMethod(Array.prototype, "indexOf");
+ taintMethod(Array.prototype, "join");
+ taintMethod(Array.prototype, "push");
+ taintMethod(Array.prototype, "slice");
+ taintMethod(Array.prototype, "sort");
+}
+
+
+// auxiliary data for getLocaleSupportInfo
+var languages = ["zh", "es", "en", "hi", "ur", "ar", "ja", "pa"];
+var scripts = ["Latn", "Hans", "Deva", "Arab", "Jpan", "Hant"];
+var countries = ["CN", "IN", "US", "PK", "JP", "TW", "HK", "SG"];
+var localeSupportInfo = {};
+
+
+/**
+ * Gets locale support info for the given constructor object, which must be one
+ * of Intl.Collator, Intl.NumberFormat, Intl.DateTimeFormat.
+ * @param {object} Constructor the constructor for which to get locale support info
+ * @return {object} locale support info with the following properties:
+ * supported: array of fully supported language tags
+ * byFallback: array of language tags that are supported through fallbacks
+ * unsupported: array of unsupported language tags
+ */
+function getLocaleSupportInfo(Constructor) {
+ var constructorName = getConstructorName(Constructor);
+ if (localeSupportInfo[constructorName] !== undefined) {
+ return localeSupportInfo[constructorName];
+ }
+
+ var allTags = [];
+ var i, j, k;
+ var language, script, country;
+ for (i = 0; i < languages.length; i++) {
+ language = languages[i];
+ allTags.push(language);
+ for (j = 0; j < scripts.length; j++) {
+ script = scripts[j];
+ allTags.push(language + "-" + script);
+ for (k = 0; k < countries.length; k++) {
+ country = countries[k];
+ allTags.push(language + "-" + script + "-" + country);
+ }
+ }
+ for (k = 0; k < countries.length; k++) {
+ country = countries[k];
+ allTags.push(language + "-" + country);
+ }
+ }
+
+ var supported = [];
+ var byFallback = [];
+ var unsupported = [];
+ for (i = 0; i < allTags.length; i++) {
+ var request = allTags[i];
+ var result = new Constructor([request], {localeMatcher: "lookup"}).resolvedOptions().locale;
+ if (request === result) {
+ supported.push(request);
+ } else if (request.indexOf(result) === 0) {
+ byFallback.push(request);
+ } else {
+ unsupported.push(request);
+ }
+ }
+
+ localeSupportInfo[constructorName] = {
+ supported: supported,
+ byFallback: byFallback,
+ unsupported: unsupported
+ };
+
+ return localeSupportInfo[constructorName];
+}
+
+
+/**
+ * @description Tests whether locale is a String value representing a
+ * structurally valid and canonicalized BCP 47 language tag, as defined in
+ * sections 6.2.2 and 6.2.3 of the ECMAScript Internationalization API
+ * Specification.
+ * @param {String} locale the string to be tested.
+ * @result {Boolean} whether the test succeeded.
+ */
+function isCanonicalizedStructurallyValidLanguageTag(locale) {
+
+ /**
+ * Regular expression defining BCP 47 language tags.
+ *
+ * Spec: RFC 5646 section 2.1.
+ */
+ var alpha = "[a-zA-Z]",
+ digit = "[0-9]",
+ alphanum = "(" + alpha + "|" + digit + ")",
+ regular = "(art-lojban|cel-gaulish|no-bok|no-nyn|zh-guoyu|zh-hakka|zh-min|zh-min-nan|zh-xiang)",
+ irregular = "(en-GB-oed|i-ami|i-bnn|i-default|i-enochian|i-hak|i-klingon|i-lux|i-mingo|i-navajo|i-pwn|i-tao|i-tay|i-tsu|sgn-BE-FR|sgn-BE-NL|sgn-CH-DE)",
+ grandfathered = "(" + irregular + "|" + regular + ")",
+ privateuse = "(x(-[a-z0-9]{1,8})+)",
+ singleton = "(" + digit + "|[A-WY-Za-wy-z])",
+ extension = "(" + singleton + "(-" + alphanum + "{2,8})+)",
+ variant = "(" + alphanum + "{5,8}|(" + digit + alphanum + "{3}))",
+ region = "(" + alpha + "{2}|" + digit + "{3})",
+ script = "(" + alpha + "{4})",
+ extlang = "(" + alpha + "{3}(-" + alpha + "{3}){0,2})",
+ language = "(" + alpha + "{2,3}(-" + extlang + ")?|" + alpha + "{4}|" + alpha + "{5,8})",
+ langtag = language + "(-" + script + ")?(-" + region + ")?(-" + variant + ")*(-" + extension + ")*(-" + privateuse + ")?",
+ languageTag = "^(" + langtag + "|" + privateuse + "|" + grandfathered + ")$",
+ languageTagRE = new RegExp(languageTag, "i");
+ var duplicateSingleton = "-" + singleton + "-(.*-)?\\1(?!" + alphanum + ")",
+ duplicateSingletonRE = new RegExp(duplicateSingleton, "i"),
+ duplicateVariant = "(" + alphanum + "{2,8}-)+" + variant + "-(" + alphanum + "{2,8}-)*\\3(?!" + alphanum + ")",
+ duplicateVariantRE = new RegExp(duplicateVariant, "i");
+
+
+ /**
+ * Verifies that the given string is a well-formed BCP 47 language tag
+ * with no duplicate variant or singleton subtags.
+ *
+ * Spec: ECMAScript Internationalization API Specification, draft, 6.2.2.
+ */
+ function isStructurallyValidLanguageTag(locale) {
+ if (!languageTagRE.test(locale)) {
+ return false;
+ }
+ locale = locale.split(/-x-/)[0];
+ return !duplicateSingletonRE.test(locale) && !duplicateVariantRE.test(locale);
+ }
+
+
+ /**
+ * Mappings from complete tags to preferred values.
+ *
+ * Spec: IANA Language Subtag Registry.
+ */
+ var __tagMappings = {
+ // property names must be in lower case; values in canonical form
+
+ // grandfathered tags from IANA language subtag registry, file date 2011-08-25
+ "art-lojban": "jbo",
+ "cel-gaulish": "cel-gaulish",
+ "en-gb-oed": "en-GB-oed",
+ "i-ami": "ami",
+ "i-bnn": "bnn",
+ "i-default": "i-default",
+ "i-enochian": "i-enochian",
+ "i-hak": "hak",
+ "i-klingon": "tlh",
+ "i-lux": "lb",
+ "i-mingo": "i-mingo",
+ "i-navajo": "nv",
+ "i-pwn": "pwn",
+ "i-tao": "tao",
+ "i-tay": "tay",
+ "i-tsu": "tsu",
+ "no-bok": "nb",
+ "no-nyn": "nn",
+ "sgn-be-fr": "sfb",
+ "sgn-be-nl": "vgt",
+ "sgn-ch-de": "sgg",
+ "zh-guoyu": "cmn",
+ "zh-hakka": "hak",
+ "zh-min": "zh-min",
+ "zh-min-nan": "nan",
+ "zh-xiang": "hsn",
+ // deprecated redundant tags from IANA language subtag registry, file date 2011-08-25
+ "sgn-br": "bzs",
+ "sgn-co": "csn",
+ "sgn-de": "gsg",
+ "sgn-dk": "dsl",
+ "sgn-es": "ssp",
+ "sgn-fr": "fsl",
+ "sgn-gb": "bfi",
+ "sgn-gr": "gss",
+ "sgn-ie": "isg",
+ "sgn-it": "ise",
+ "sgn-jp": "jsl",
+ "sgn-mx": "mfs",
+ "sgn-ni": "ncs",
+ "sgn-nl": "dse",
+ "sgn-no": "nsl",
+ "sgn-pt": "psr",
+ "sgn-se": "swl",
+ "sgn-us": "ase",
+ "sgn-za": "sfs",
+ "zh-cmn": "cmn",
+ "zh-cmn-hans": "cmn-Hans",
+ "zh-cmn-hant": "cmn-Hant",
+ "zh-gan": "gan",
+ "zh-wuu": "wuu",
+ "zh-yue": "yue",
+ // deprecated variant with prefix from IANA language subtag registry, file date 2011-08-25
+ "ja-latn-hepburn-heploc": "ja-Latn-alalc97"
+ };
+
+
+ /**
+ * Mappings from non-extlang subtags to preferred values.
+ *
+ * Spec: IANA Language Subtag Registry.
+ */
+ var __subtagMappings = {
+ // property names and values must be in canonical case
+ // language subtags with Preferred-Value mappings from IANA language subtag registry, file date 2011-08-25
+ "in": "id",
+ "iw": "he",
+ "ji": "yi",
+ "jw": "jv",
+ "mo": "ro",
+ "ayx": "nun",
+ "cjr": "mom",
+ "cmk": "xch",
+ "drh": "khk",
+ "drw": "prs",
+ "gav": "dev",
+ "mst": "mry",
+ "myt": "mry",
+ "tie": "ras",
+ "tkk": "twm",
+ "tnf": "prs",
+ // region subtags with Preferred-Value mappings from IANA language subtag registry, file date 2011-08-25
+ "BU": "MM",
+ "DD": "DE",
+ "FX": "FR",
+ "TP": "TL",
+ "YD": "YE",
+ "ZR": "CD"
+ };
+
+
+ /**
+ * Mappings from extlang subtags to preferred values.
+ *
+ * Spec: IANA Language Subtag Registry.
+ */
+ var __extlangMappings = {
+ // extlang subtags with Preferred-Value mappings from IANA language subtag registry, file date 2011-08-25
+ // values are arrays with [0] the replacement value, [1] (if present) the prefix to be removed
+ "aao": ["aao", "ar"],
+ "abh": ["abh", "ar"],
+ "abv": ["abv", "ar"],
+ "acm": ["acm", "ar"],
+ "acq": ["acq", "ar"],
+ "acw": ["acw", "ar"],
+ "acx": ["acx", "ar"],
+ "acy": ["acy", "ar"],
+ "adf": ["adf", "ar"],
+ "ads": ["ads", "sgn"],
+ "aeb": ["aeb", "ar"],
+ "aec": ["aec", "ar"],
+ "aed": ["aed", "sgn"],
+ "aen": ["aen", "sgn"],
+ "afb": ["afb", "ar"],
+ "afg": ["afg", "sgn"],
+ "ajp": ["ajp", "ar"],
+ "apc": ["apc", "ar"],
+ "apd": ["apd", "ar"],
+ "arb": ["arb", "ar"],
+ "arq": ["arq", "ar"],
+ "ars": ["ars", "ar"],
+ "ary": ["ary", "ar"],
+ "arz": ["arz", "ar"],
+ "ase": ["ase", "sgn"],
+ "asf": ["asf", "sgn"],
+ "asp": ["asp", "sgn"],
+ "asq": ["asq", "sgn"],
+ "asw": ["asw", "sgn"],
+ "auz": ["auz", "ar"],
+ "avl": ["avl", "ar"],
+ "ayh": ["ayh", "ar"],
+ "ayl": ["ayl", "ar"],
+ "ayn": ["ayn", "ar"],
+ "ayp": ["ayp", "ar"],
+ "bbz": ["bbz", "ar"],
+ "bfi": ["bfi", "sgn"],
+ "bfk": ["bfk", "sgn"],
+ "bjn": ["bjn", "ms"],
+ "bog": ["bog", "sgn"],
+ "bqn": ["bqn", "sgn"],
+ "bqy": ["bqy", "sgn"],
+ "btj": ["btj", "ms"],
+ "bve": ["bve", "ms"],
+ "bvl": ["bvl", "sgn"],
+ "bvu": ["bvu", "ms"],
+ "bzs": ["bzs", "sgn"],
+ "cdo": ["cdo", "zh"],
+ "cds": ["cds", "sgn"],
+ "cjy": ["cjy", "zh"],
+ "cmn": ["cmn", "zh"],
+ "coa": ["coa", "ms"],
+ "cpx": ["cpx", "zh"],
+ "csc": ["csc", "sgn"],
+ "csd": ["csd", "sgn"],
+ "cse": ["cse", "sgn"],
+ "csf": ["csf", "sgn"],
+ "csg": ["csg", "sgn"],
+ "csl": ["csl", "sgn"],
+ "csn": ["csn", "sgn"],
+ "csq": ["csq", "sgn"],
+ "csr": ["csr", "sgn"],
+ "czh": ["czh", "zh"],
+ "czo": ["czo", "zh"],
+ "doq": ["doq", "sgn"],
+ "dse": ["dse", "sgn"],
+ "dsl": ["dsl", "sgn"],
+ "dup": ["dup", "ms"],
+ "ecs": ["ecs", "sgn"],
+ "esl": ["esl", "sgn"],
+ "esn": ["esn", "sgn"],
+ "eso": ["eso", "sgn"],
+ "eth": ["eth", "sgn"],
+ "fcs": ["fcs", "sgn"],
+ "fse": ["fse", "sgn"],
+ "fsl": ["fsl", "sgn"],
+ "fss": ["fss", "sgn"],
+ "gan": ["gan", "zh"],
+ "gom": ["gom", "kok"],
+ "gse": ["gse", "sgn"],
+ "gsg": ["gsg", "sgn"],
+ "gsm": ["gsm", "sgn"],
+ "gss": ["gss", "sgn"],
+ "gus": ["gus", "sgn"],
+ "hab": ["hab", "sgn"],
+ "haf": ["haf", "sgn"],
+ "hak": ["hak", "zh"],
+ "hds": ["hds", "sgn"],
+ "hji": ["hji", "ms"],
+ "hks": ["hks", "sgn"],
+ "hos": ["hos", "sgn"],
+ "hps": ["hps", "sgn"],
+ "hsh": ["hsh", "sgn"],
+ "hsl": ["hsl", "sgn"],
+ "hsn": ["hsn", "zh"],
+ "icl": ["icl", "sgn"],
+ "ils": ["ils", "sgn"],
+ "inl": ["inl", "sgn"],
+ "ins": ["ins", "sgn"],
+ "ise": ["ise", "sgn"],
+ "isg": ["isg", "sgn"],
+ "isr": ["isr", "sgn"],
+ "jak": ["jak", "ms"],
+ "jax": ["jax", "ms"],
+ "jcs": ["jcs", "sgn"],
+ "jhs": ["jhs", "sgn"],
+ "jls": ["jls", "sgn"],
+ "jos": ["jos", "sgn"],
+ "jsl": ["jsl", "sgn"],
+ "jus": ["jus", "sgn"],
+ "kgi": ["kgi", "sgn"],
+ "knn": ["knn", "kok"],
+ "kvb": ["kvb", "ms"],
+ "kvk": ["kvk", "sgn"],
+ "kvr": ["kvr", "ms"],
+ "kxd": ["kxd", "ms"],
+ "lbs": ["lbs", "sgn"],
+ "lce": ["lce", "ms"],
+ "lcf": ["lcf", "ms"],
+ "liw": ["liw", "ms"],
+ "lls": ["lls", "sgn"],
+ "lsg": ["lsg", "sgn"],
+ "lsl": ["lsl", "sgn"],
+ "lso": ["lso", "sgn"],
+ "lsp": ["lsp", "sgn"],
+ "lst": ["lst", "sgn"],
+ "lsy": ["lsy", "sgn"],
+ "ltg": ["ltg", "lv"],
+ "lvs": ["lvs", "lv"],
+ "lzh": ["lzh", "zh"],
+ "max": ["max", "ms"],
+ "mdl": ["mdl", "sgn"],
+ "meo": ["meo", "ms"],
+ "mfa": ["mfa", "ms"],
+ "mfb": ["mfb", "ms"],
+ "mfs": ["mfs", "sgn"],
+ "min": ["min", "ms"],
+ "mnp": ["mnp", "zh"],
+ "mqg": ["mqg", "ms"],
+ "mre": ["mre", "sgn"],
+ "msd": ["msd", "sgn"],
+ "msi": ["msi", "ms"],
+ "msr": ["msr", "sgn"],
+ "mui": ["mui", "ms"],
+ "mzc": ["mzc", "sgn"],
+ "mzg": ["mzg", "sgn"],
+ "mzy": ["mzy", "sgn"],
+ "nan": ["nan", "zh"],
+ "nbs": ["nbs", "sgn"],
+ "ncs": ["ncs", "sgn"],
+ "nsi": ["nsi", "sgn"],
+ "nsl": ["nsl", "sgn"],
+ "nsp": ["nsp", "sgn"],
+ "nsr": ["nsr", "sgn"],
+ "nzs": ["nzs", "sgn"],
+ "okl": ["okl", "sgn"],
+ "orn": ["orn", "ms"],
+ "ors": ["ors", "ms"],
+ "pel": ["pel", "ms"],
+ "pga": ["pga", "ar"],
+ "pks": ["pks", "sgn"],
+ "prl": ["prl", "sgn"],
+ "prz": ["prz", "sgn"],
+ "psc": ["psc", "sgn"],
+ "psd": ["psd", "sgn"],
+ "pse": ["pse", "ms"],
+ "psg": ["psg", "sgn"],
+ "psl": ["psl", "sgn"],
+ "pso": ["pso", "sgn"],
+ "psp": ["psp", "sgn"],
+ "psr": ["psr", "sgn"],
+ "pys": ["pys", "sgn"],
+ "rms": ["rms", "sgn"],
+ "rsi": ["rsi", "sgn"],
+ "rsl": ["rsl", "sgn"],
+ "sdl": ["sdl", "sgn"],
+ "sfb": ["sfb", "sgn"],
+ "sfs": ["sfs", "sgn"],
+ "sgg": ["sgg", "sgn"],
+ "sgx": ["sgx", "sgn"],
+ "shu": ["shu", "ar"],
+ "slf": ["slf", "sgn"],
+ "sls": ["sls", "sgn"],
+ "sqs": ["sqs", "sgn"],
+ "ssh": ["ssh", "ar"],
+ "ssp": ["ssp", "sgn"],
+ "ssr": ["ssr", "sgn"],
+ "svk": ["svk", "sgn"],
+ "swc": ["swc", "sw"],
+ "swh": ["swh", "sw"],
+ "swl": ["swl", "sgn"],
+ "syy": ["syy", "sgn"],
+ "tmw": ["tmw", "ms"],
+ "tse": ["tse", "sgn"],
+ "tsm": ["tsm", "sgn"],
+ "tsq": ["tsq", "sgn"],
+ "tss": ["tss", "sgn"],
+ "tsy": ["tsy", "sgn"],
+ "tza": ["tza", "sgn"],
+ "ugn": ["ugn", "sgn"],
+ "ugy": ["ugy", "sgn"],
+ "ukl": ["ukl", "sgn"],
+ "uks": ["uks", "sgn"],
+ "urk": ["urk", "ms"],
+ "uzn": ["uzn", "uz"],
+ "uzs": ["uzs", "uz"],
+ "vgt": ["vgt", "sgn"],
+ "vkk": ["vkk", "ms"],
+ "vkt": ["vkt", "ms"],
+ "vsi": ["vsi", "sgn"],
+ "vsl": ["vsl", "sgn"],
+ "vsv": ["vsv", "sgn"],
+ "wuu": ["wuu", "zh"],
+ "xki": ["xki", "sgn"],
+ "xml": ["xml", "sgn"],
+ "xmm": ["xmm", "ms"],
+ "xms": ["xms", "sgn"],
+ "yds": ["yds", "sgn"],
+ "ysl": ["ysl", "sgn"],
+ "yue": ["yue", "zh"],
+ "zib": ["zib", "sgn"],
+ "zlm": ["zlm", "ms"],
+ "zmi": ["zmi", "ms"],
+ "zsl": ["zsl", "sgn"],
+ "zsm": ["zsm", "ms"]
+ };
+
+
+ /**
+ * Canonicalizes the given well-formed BCP 47 language tag, including regularized case of subtags.
+ *
+ * Spec: ECMAScript Internationalization API Specification, draft, 6.2.3.
+ * Spec: RFC 5646, section 4.5.
+ */
+ function canonicalizeLanguageTag(locale) {
+
+ // start with lower case for easier processing, and because most subtags will need to be lower case anyway
+ locale = locale.toLowerCase();
+
+ // handle mappings for complete tags
+ if (__tagMappings.hasOwnProperty(locale)) {
+ return __tagMappings[locale];
+ }
+
+ var subtags = locale.split("-");
+ var i = 0;
+
+ // handle standard part: all subtags before first singleton or "x"
+ while (i < subtags.length) {
+ var subtag = subtags[i];
+ if (subtag.length === 1 && (i > 0 || subtag === "x")) {
+ break;
+ } else if (i !== 0 && subtag.length === 2) {
+ subtag = subtag.toUpperCase();
+ } else if (subtag.length === 4) {
+ subtag = subtag[0].toUpperCase() + subtag.substring(1).toLowerCase();
+ }
+ if (__subtagMappings.hasOwnProperty(subtag)) {
+ subtag = __subtagMappings[subtag];
+ } else if (__extlangMappings.hasOwnProperty(subtag)) {
+ subtag = __extlangMappings[subtag][0];
+ if (i === 1 && __extlangMappings[subtag][1] === subtags[0]) {
+ subtags.shift();
+ i--;
+ }
+ }
+ subtags[i] = subtag;
+ i++;
+ }
+ var normal = subtags.slice(0, i).join("-");
+
+ // handle extensions
+ var extensions = [];
+ while (i < subtags.length && subtags[i] !== "x") {
+ var extensionStart = i;
+ i++;
+ while (i < subtags.length && subtags[i].length > 1) {
+ i++;
+ }
+ var extension = subtags.slice(extensionStart, i).join("-");
+ extensions.push(extension);
+ }
+ extensions.sort();
+
+ // handle private use
+ var privateUse;
+ if (i < subtags.length) {
+ privateUse = subtags.slice(i).join("-");
+ }
+
+ // put everything back together
+ var canonical = normal;
+ if (extensions.length > 0) {
+ canonical += "-" + extensions.join("-");
+ }
+ if (privateUse !== undefined) {
+ if (canonical.length > 0) {
+ canonical += "-" + privateUse;
+ } else {
+ canonical = privateUse;
+ }
+ }
+
+ return canonical;
+ }
+
+ return typeof locale === "string" && isStructurallyValidLanguageTag(locale) &&
+ canonicalizeLanguageTag(locale) === locale;
+}
+
+
+/**
+ * Tests whether the named options property is correctly handled by the given constructor.
+ * @param {object} Constructor the constructor to test.
+ * @param {string} property the name of the options property to test.
+ * @param {string} type the type that values of the property are expected to have
+ * @param {Array} [values] an array of allowed values for the property. Not needed for boolean.
+ * @param {any} fallback the fallback value that the property assumes if not provided.
+ * @param {object} testOptions additional options:
+ * @param {boolean} isOptional whether support for this property is optional for implementations.
+ * @param {boolean} noReturn whether the resulting value of the property is not returned.
+ * @param {boolean} isILD whether the resulting value of the property is implementation and locale dependent.
+ * @param {object} extra additional option to pass along, properties are value -> {option: value}.
+ * @return {boolean} whether the test succeeded.
+ */
+function testOption(Constructor, property, type, values, fallback, testOptions) {
+ var isOptional = testOptions !== undefined && testOptions.isOptional === true;
+ var noReturn = testOptions !== undefined && testOptions.noReturn === true;
+ var isILD = testOptions !== undefined && testOptions.isILD === true;
+
+ function addExtraOptions(options, value, testOptions) {
+ if (testOptions !== undefined && testOptions.extra !== undefined) {
+ var extra;
+ if (value !== undefined && testOptions.extra[value] !== undefined) {
+ extra = testOptions.extra[value];
+ } else if (testOptions.extra.any !== undefined) {
+ extra = testOptions.extra.any;
+ }
+ if (extra !== undefined) {
+ Object.getOwnPropertyNames(extra).forEach(function (prop) {
+ options[prop] = extra[prop];
+ });
+ }
+ }
+ }
+
+ var testValues, options, obj, expected, actual, error;
+
+ // test that the specified values are accepted. Also add values that convert to specified values.
+ if (type === "boolean") {
+ if (values === undefined) {
+ values = [true, false];
+ }
+ testValues = values.slice(0);
+ testValues.push(888);
+ testValues.push(0);
+ } else if (type === "string") {
+ testValues = values.slice(0);
+ testValues.push({toString: function () { return values[0]; }});
+ }
+ testValues.forEach(function (value) {
+ options = {};
+ options[property] = value;
+ addExtraOptions(options, value, testOptions);
+ obj = new Constructor(undefined, options);
+ if (noReturn) {
+ if (obj.resolvedOptions().hasOwnProperty(property)) {
+ $ERROR("Option property " + property + " is returned, but shouldn't be.");
+ }
+ } else {
+ actual = obj.resolvedOptions()[property];
+ if (isILD) {
+ if (actual !== undefined && values.indexOf(actual) === -1) {
+ $ERROR("Invalid value " + actual + " returned for property " + property + ".");
+ }
+ } else {
+ if (type === "boolean") {
+ expected = Boolean(value);
+ } else if (type === "string") {
+ expected = String(value);
+ }
+ if (actual !== expected && !(isOptional && actual === undefined)) {
+ $ERROR("Option value " + value + " for property " + property +
+ " was not accepted; got " + actual + " instead.");
+ }
+ }
+ }
+ });
+
+ // test that invalid values are rejected
+ if (type === "string") {
+ var invalidValues = ["invalidValue", -1, null];
+ // assume that we won't have values in caseless scripts
+ if (values[0].toUpperCase() !== values[0]) {
+ invalidValues.push(values[0].toUpperCase());
+ } else {
+ invalidValues.push(values[0].toLowerCase());
+ }
+ invalidValues.forEach(function (value) {
+ options = {};
+ options[property] = value;
+ addExtraOptions(options, value, testOptions);
+ error = undefined;
+ try {
+ obj = new Constructor(undefined, options);
+ } catch (e) {
+ error = e;
+ }
+ if (error === undefined) {
+ $ERROR("Invalid option value " + value + " for property " + property + " was not rejected.");
+ } else if (error.name !== "RangeError") {
+ $ERROR("Invalid option value " + value + " for property " + property + " was rejected with wrong error " + error.name + ".");
+ }
+ });
+ }
+
+ // test that fallback value or another valid value is used if no options value is provided
+ if (!noReturn) {
+ options = {};
+ addExtraOptions(options, undefined, testOptions);
+ obj = new Constructor(undefined, options);
+ actual = obj.resolvedOptions()[property];
+ if (!(isOptional && actual === undefined)) {
+ if (fallback !== undefined) {
+ if (actual !== fallback) {
+ $ERROR("Option fallback value " + fallback + " for property " + property +
+ " was not used; got " + actual + " instead.");
+ }
+ } else {
+ if (values.indexOf(actual) === -1 && !(isILD && actual === undefined)) {
+ $ERROR("Invalid value " + actual + " returned for property " + property + ".");
+ }
+ }
+ }
+ }
+
+ return true;
+}
+
+
+/**
+ * Tests whether the named property of the given object has a valid value
+ * and the default attributes of the properties of an object literal.
+ * @param {Object} obj the object to be tested.
+ * @param {string} property the name of the property
+ * @param {Function|Array} valid either a function that tests value for validity and returns a boolean,
+ * an array of valid values.
+ * @exception if the property has an invalid value.
+ */
+function testProperty(obj, property, valid) {
+ var desc = Object.getOwnPropertyDescriptor(obj, property);
+ if (!desc.writable) {
+ $ERROR("Property " + property + " must be writable.");
+ }
+ if (!desc.enumerable) {
+ $ERROR("Property " + property + " must be enumerable.");
+ }
+ if (!desc.configurable) {
+ $ERROR("Property " + property + " must be configurable.");
+ }
+ var value = desc.value;
+ var isValid = (typeof valid === "function") ? valid(value) : (valid.indexOf(value) !== -1);
+ if (!isValid) {
+ $ERROR("Property value " + value + " is not allowed for property " + property + ".");
+ }
+}
+
+
+/**
+ * Tests whether the named property of the given object, if present at all, has a valid value
+ * and the default attributes of the properties of an object literal.
+ * @param {Object} obj the object to be tested.
+ * @param {string} property the name of the property
+ * @param {Function|Array} valid either a function that tests value for validity and returns a boolean,
+ * an array of valid values.
+ * @exception if the property is present and has an invalid value.
+ */
+function mayHaveProperty(obj, property, valid) {
+ if (obj.hasOwnProperty(property)) {
+ testProperty(obj, property, valid);
+ }
+}
+
+
+/**
+ * Tests whether the given object has the named property with a valid value
+ * and the default attributes of the properties of an object literal.
+ * @param {Object} obj the object to be tested.
+ * @param {string} property the name of the property
+ * @param {Function|Array} valid either a function that tests value for validity and returns a boolean,
+ * an array of valid values.
+ * @exception if the property is missing or has an invalid value.
+ */
+function mustHaveProperty(obj, property, valid) {
+ if (!obj.hasOwnProperty(property)) {
+ $ERROR("Object is missing property " + property + ".");
+ }
+ testProperty(obj, property, valid);
+}
+
+
+/**
+ * Tests whether the given object does not have the named property.
+ * @param {Object} obj the object to be tested.
+ * @param {string} property the name of the property
+ * @exception if the property is present.
+ */
+function mustNotHaveProperty(obj, property) {
+ if (obj.hasOwnProperty(property)) {
+ $ERROR("Object has property it mustn't have: " + property + ".");
+ }
+}
+
+
+/**
+ * Properties of the RegExp constructor that may be affected by use of regular
+ * expressions, and the default values of these properties. Properties are from
+ * https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Deprecated_and_obsolete_features#RegExp_Properties
+ */
+var regExpProperties = ["$1", "$2", "$3", "$4", "$5", "$6", "$7", "$8", "$9",
+ "$_", "$*", "$&", "$+", "$`", "$'",
+ "input", "lastMatch", "lastParen", "leftContext", "rightContext"
+];
+
+var regExpPropertiesDefaultValues = (function () {
+ var values = Object.create(null);
+ regExpProperties.forEach(function (property) {
+ values[property] = RegExp[property];
+ });
+ return values;
+}());
+
+
+/**
+ * Tests that executing the provided function (which may use regular expressions
+ * in its implementation) does not create or modify unwanted properties on the
+ * RegExp constructor.
+ */
+function testForUnwantedRegExpChanges(testFunc) {
+ regExpProperties.forEach(function (property) {
+ RegExp[property] = regExpPropertiesDefaultValues[property];
+ });
+ testFunc();
+ regExpProperties.forEach(function (property) {
+ if (RegExp[property] !== regExpPropertiesDefaultValues[property]) {
+ $ERROR("RegExp has unexpected property " + property + " with value " +
+ RegExp[property] + ".");
+ }
+ });
+}
+
+
+/**
+ * Tests whether name is a valid BCP 47 numbering system name
+ * and not excluded from use in the ECMAScript Internationalization API.
+ * @param {string} name the name to be tested.
+ * @return {boolean} whether name is a valid BCP 47 numbering system name and
+ * allowed for use in the ECMAScript Internationalization API.
+ */
+
+function isValidNumberingSystem(name) {
+
+ // source: CLDR file common/bcp47/number.xml; version CLDR 21.
+ var numberingSystems = [
+ "arab",
+ "arabext",
+ "armn",
+ "armnlow",
+ "bali",
+ "beng",
+ "brah",
+ "cakm",
+ "cham",
+ "deva",
+ "ethi",
+ "finance",
+ "fullwide",
+ "geor",
+ "grek",
+ "greklow",
+ "gujr",
+ "guru",
+ "hanidec",
+ "hans",
+ "hansfin",
+ "hant",
+ "hantfin",
+ "hebr",
+ "java",
+ "jpan",
+ "jpanfin",
+ "kali",
+ "khmr",
+ "knda",
+ "osma",
+ "lana",
+ "lanatham",
+ "laoo",
+ "latn",
+ "lepc",
+ "limb",
+ "mlym",
+ "mong",
+ "mtei",
+ "mymr",
+ "mymrshan",
+ "native",
+ "nkoo",
+ "olck",
+ "orya",
+ "roman",
+ "romanlow",
+ "saur",
+ "shrd",
+ "sora",
+ "sund",
+ "talu",
+ "takr",
+ "taml",
+ "tamldec",
+ "telu",
+ "thai",
+ "tibt",
+ "traditio",
+ "vaii"
+ ];
+
+ var excluded = [
+ "finance",
+ "native",
+ "traditio"
+ ];
+
+
+ return numberingSystems.indexOf(name) !== -1 && excluded.indexOf(name) === -1;
+}
+
+
+/**
+ * Provides the digits of numbering systems with simple digit mappings,
+ * as specified in 11.3.2.
+ */
+
+var numberingSystemDigits = {
+ arab: "٠١٢٣٤٥٦٧٨٩",
+ arabext: "۰۱۲۳۴۵۶۷۸۹",
+ beng: "০১২৩৪৫৬৭৮৯",
+ deva: "०१२३४५६७८९",
+ fullwide: "0123456789",
+ gujr: "૦૧૨૩૪૫૬૭૮૯",
+ guru: "੦੧੨੩੪੫੬੭੮੯",
+ hanidec: "〇一二三四五六七八九",
+ khmr: "០១២៣៤៥៦៧៨៩",
+ knda: "೦೧೨೩೪೫೬೭೮೯",
+ laoo: "໐໑໒໓໔໕໖໗໘໙",
+ latn: "0123456789",
+ mlym: "൦൧൨൩൪൫൬൭൮൯",
+ mong: "᠐᠑᠒᠓᠔᠕᠖᠗᠘᠙",
+ mymr: "၀၁၂၃၄၅၆၇၈၉",
+ orya: "୦୧୨୩୪୫୬୭୮୯",
+ tamldec: "௦௧௨௩௪௫௬௭௮௯",
+ telu: "౦౧౨౩౪౫౬౭౮౯",
+ thai: "๐๑๒๓๔๕๖๗๘๙",
+ tibt: "༠༡༢༣༤༥༦༧༨༩"
+};
+
+
+/**
+ * Tests that number formatting is handled correctly. The function checks that the
+ * digit sequences in formatted output are as specified, converted to the
+ * selected numbering system, and embedded in consistent localized patterns.
+ * @param {Array} locales the locales to be tested.
+ * @param {Array} numberingSystems the numbering systems to be tested.
+ * @param {Object} options the options to pass to Intl.NumberFormat. Options
+ * must include {useGrouping: false}, and must cause 1.1 to be formatted
+ * pre- and post-decimal digits.
+ * @param {Object} testData maps input data (in ES5 9.3.1 format) to expected output strings
+ * in unlocalized format with Western digits.
+ */
+
+function testNumberFormat(locales, numberingSystems, options, testData) {
+ locales.forEach(function (locale) {
+ numberingSystems.forEach(function (numbering) {
+ var digits = numberingSystemDigits[numbering];
+ var format = new Intl.NumberFormat([locale + "-u-nu-" + numbering], options);
+
+ function getPatternParts(positive) {
+ var n = positive ? 1.1 : -1.1;
+ var formatted = format.format(n);
+ var oneoneRE = "([^" + digits + "]*)[" + digits + "]+([^" + digits + "]+)[" + digits + "]+([^" + digits + "]*)";
+ var match = formatted.match(new RegExp(oneoneRE));
+ if (match === null) {
+ $ERROR("Unexpected formatted " + n + " for " +
+ format.resolvedOptions().locale + " and options " +
+ JSON.stringify(options) + ": " + formatted);
+ }
+ return match;
+ }
+
+ function toNumbering(raw) {
+ return raw.replace(/[0-9]/g, function (digit) {
+ return digits[digit.charCodeAt(0) - "0".charCodeAt(0)];
+ });
+ }
+
+ function buildExpected(raw, patternParts) {
+ var period = raw.indexOf(".");
+ if (period === -1) {
+ return patternParts[1] + toNumbering(raw) + patternParts[3];
+ } else {
+ return patternParts[1] +
+ toNumbering(raw.substring(0, period)) +
+ patternParts[2] +
+ toNumbering(raw.substring(period + 1)) +
+ patternParts[3];
+ }
+ }
+
+ if (format.resolvedOptions().numberingSystem === numbering) {
+ // figure out prefixes, infixes, suffixes for positive and negative values
+ var posPatternParts = getPatternParts(true);
+ var negPatternParts = getPatternParts(false);
+
+ Object.getOwnPropertyNames(testData).forEach(function (input) {
+ var rawExpected = testData[input];
+ var patternParts;
+ if (rawExpected[0] === "-") {
+ patternParts = negPatternParts;
+ rawExpected = rawExpected.substring(1);
+ } else {
+ patternParts = posPatternParts;
+ }
+ var expected = buildExpected(rawExpected, patternParts);
+ var actual = format.format(input);
+ if (actual !== expected) {
+ $ERROR("Formatted value for " + input + ", " +
+ format.resolvedOptions().locale + " and options " +
+ JSON.stringify(options) + " is " + actual + "; expected " + expected + ".");
+ }
+ });
+ }
+ });
+ });
+}
+
+
+/**
+ * Return the components of date-time formats.
+ * @return {Array} an array with all date-time components.
+ */
+
+function getDateTimeComponents() {
+ return ["weekday", "era", "year", "month", "day", "hour", "minute", "second", "timeZoneName"];
+}
+
+
+/**
+ * Return the valid values for the given date-time component, as specified
+ * by the table in section 12.1.1.
+ * @param {string} component a date-time component.
+ * @return {Array} an array with the valid values for the component.
+ */
+
+function getDateTimeComponentValues(component) {
+
+ var components = {
+ weekday: ["narrow", "short", "long"],
+ era: ["narrow", "short", "long"],
+ year: ["2-digit", "numeric"],
+ month: ["2-digit", "numeric", "narrow", "short", "long"],
+ day: ["2-digit", "numeric"],
+ hour: ["2-digit", "numeric"],
+ minute: ["2-digit", "numeric"],
+ second: ["2-digit", "numeric"],
+ timeZoneName: ["short", "long"]
+ };
+
+ var result = components[component];
+ if (result === undefined) {
+ $ERROR("Internal error: No values defined for date-time component " + component + ".");
+ }
+ return result;
+}
+
+
+/**
+ * Tests that the given value is valid for the given date-time component.
+ * @param {string} component a date-time component.
+ * @param {string} value the value to be tested.
+ * @return {boolean} true if the test succeeds.
+ * @exception if the test fails.
+ */
+
+function testValidDateTimeComponentValue(component, value) {
+ if (getDateTimeComponentValues(component).indexOf(value) === -1) {
+ $ERROR("Invalid value " + value + " for date-time component " + component + ".");
+ }
+ return true;
+}
+
+
+/**
+ * Verifies that the actual array matches the expected one in length, elements,
+ * and element order.
+ * @param {Array} expected the expected array.
+ * @param {Array} actual the actual array.
+ * @return {boolean} true if the test succeeds.
+ * @exception if the test fails.
+ */
+function testArraysAreSame(expected, actual) {
+ for (i = 0; i < Math.max(actual.length, expected.length); i++) {
+ if (actual[i] !== expected[i]) {
+ $ERROR("Result array element at index " + i + " should be \"" +
+ expected[i] + "\" but is \"" + actual[i] + "\".");
+ }
+ }
+ return true;
+}
+
diff --git a/js/src/tests/test262/intl402/ch06/6.2/6.2.2_a.js b/js/src/tests/test262/intl402/ch06/6.2/6.2.2_a.js
new file mode 100644
index 000000000..a56894570
--- /dev/null
+++ b/js/src/tests/test262/intl402/ch06/6.2/6.2.2_a.js
@@ -0,0 +1,40 @@
+// Copyright 2012 Mozilla Corporation. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @description Tests that structurally valid language tags are accepted.
+ * @author Norbert Lindenberg
+ */
+
+$INCLUDE("testIntl.js");
+
+var validLanguageTags = [
+ "de", // ISO 639 language code
+ "de-DE", // + ISO 3166-1 country code
+ "DE-de", // tags are case-insensitive
+ "cmn", // ISO 639 language code
+ "cmn-Hans", // + script code
+ "CMN-hANS", // tags are case-insensitive
+ "cmn-hans-cn", // + ISO 3166-1 country code
+ "es-419", // + UN M.49 region code
+ "es-419-u-nu-latn-cu-bob", // + Unicode locale extension sequence
+ "i-klingon", // grandfathered tag
+ "cmn-hans-cn-t-ca-u-ca-x-t-u", // singleton subtags can also be used as private use subtags
+ "enochian-enochian", // language and variant subtags may be the same
+ "de-gregory-u-ca-gregory", // variant and extension subtags may be the same
+ "aa-a-foo-x-a-foo-bar", // variant subtags can also be used as private use subtags
+ "x-en-US-12345", // anything goes in private use tags
+ "x-12345-12345-en-US",
+ "x-en-US-12345-12345",
+ "x-en-u-foo",
+ "x-en-u-foo-u-bar"
+];
+
+testWithIntlConstructors(function (Constructor) {
+ validLanguageTags.forEach(function (tag) {
+ // this must not throw an exception for a valid language tag
+ var obj = new Constructor([tag]);
+ });
+ return true;
+});
+
diff --git a/js/src/tests/test262/intl402/ch06/6.2/6.2.2_b.js b/js/src/tests/test262/intl402/ch06/6.2/6.2.2_b.js
new file mode 100644
index 000000000..42d69e7c2
--- /dev/null
+++ b/js/src/tests/test262/intl402/ch06/6.2/6.2.2_b.js
@@ -0,0 +1,41 @@
+// Copyright 2012 Mozilla Corporation. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @description Tests that language tags with "_" are not accepted.
+ * @author Norbert Lindenberg
+ */
+
+$INCLUDE("testIntl.js");
+
+var invalidLanguageTags = [
+ "de_DE",
+ "DE_de",
+ "cmn_Hans",
+ "cmn-hans_cn",
+ "es_419",
+ "es-419-u-nu-latn-cu_bob",
+ "i_klingon",
+ "cmn-hans-cn-t-ca-u-ca-x_t-u",
+ "enochian_enochian",
+ "de-gregory_u-ca-gregory"
+];
+
+testWithIntlConstructors(function (Constructor) {
+ invalidLanguageTags.forEach(function (tag) {
+ var error;
+ try {
+ // this must throw an exception for an invalid language tag
+ var obj = new Constructor([tag]);
+ } catch (e) {
+ error = e;
+ }
+ if (error === undefined) {
+ $ERROR("Invalid language tag " + tag + " was not rejected.");
+ } else if (error.name !== "RangeError") {
+ $ERROR("Invalid language tag " + tag + " was rejected with wrong error " + error.name + ".");
+ }
+ });
+ return true;
+});
+
diff --git a/js/src/tests/test262/intl402/ch06/6.2/6.2.2_c.js b/js/src/tests/test262/intl402/ch06/6.2/6.2.2_c.js
new file mode 100644
index 000000000..6d669ebef
--- /dev/null
+++ b/js/src/tests/test262/intl402/ch06/6.2/6.2.2_c.js
@@ -0,0 +1,47 @@
+// Copyright 2012 Mozilla Corporation. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @description Tests that language tags with invalid subtag sequences are not accepted.
+ * @author Norbert Lindenberg
+ */
+
+$INCLUDE("testIntl.js");
+
+var invalidLanguageTags = [
+ "", // empty tag
+ "i", // singleton alone
+ "x", // private use without subtag
+ "u", // extension singleton in first place
+ "419", // region code in first place
+ "u-nu-latn-cu-bob", // extension sequence without language
+ "hans-cmn-cn", // "hans" could theoretically be a 4-letter language code,
+ // but those can't be followed by extlang codes.
+ "cmn-hans-cn-u-u", // duplicate singleton
+ "cmn-hans-cn-t-u-ca-u", // duplicate singleton
+ "de-gregory-gregory", // duplicate variant
+ "*", // language range
+ "de-*", // language range
+ "中文", // non-ASCII letters
+ "en-ß", // non-ASCII letters
+ "ıd" // non-ASCII letters
+];
+
+testWithIntlConstructors(function (Constructor) {
+ invalidLanguageTags.forEach(function (tag) {
+ var error;
+ try {
+ // this must throw an exception for an invalid language tag
+ var obj = new Constructor([tag]);
+ } catch (e) {
+ error = e;
+ }
+ if (error === undefined) {
+ $ERROR("Invalid language tag " + tag + " was not rejected.");
+ } else if (error.name !== "RangeError") {
+ $ERROR("Invalid language tag " + tag + " was rejected with wrong error " + error.name + ".");
+ }
+ });
+ return true;
+});
+
diff --git a/js/src/tests/test262/intl402/ch06/6.2/6.2.3.js b/js/src/tests/test262/intl402/ch06/6.2/6.2.3.js
new file mode 100644
index 000000000..4ae15ab27
--- /dev/null
+++ b/js/src/tests/test262/intl402/ch06/6.2/6.2.3.js
@@ -0,0 +1,69 @@
+// Copyright 2011-2012 Norbert Lindenberg. All rights reserved.
+// Copyright 2012 Mozilla Corporation. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @description Tests that language tags are canonicalized in return values.
+ * @author Norbert Lindenberg
+ */
+
+$INCLUDE("testIntl.js");
+
+var canonicalizedTags = {
+ "de": ["de"],
+ "de-DE": ["de-DE", "de"],
+ "DE-de": ["de-DE", "de"],
+ "cmn": ["cmn"],
+ "CMN-hANS": ["cmn-Hans", "cmn"],
+ "cmn-hans-cn": ["cmn-Hans-CN", "cmn-Hans", "cmn"],
+ "es-419": ["es-419", "es"],
+ "es-419-u-nu-latn": ["es-419-u-nu-latn", "es-419", "es", "es-u-nu-latn"],
+ // -u-ca is incomplete, so it will not show up in resolvedOptions().locale
+ "cmn-hans-cn-u-ca-t-ca-x-t-u": ["cmn-Hans-CN-t-ca-u-ca-x-t-u", "cmn-Hans-CN-t-ca-x-t-u", "cmn-Hans-CN-t-ca-x-t", "cmn-Hans-CN-t-ca", "cmn-Hans-CN", "cmn-Hans", "cmn"],
+ "enochian-enochian": ["enochian-enochian", "enochian"],
+ "de-gregory-u-ca-gregory": ["de-gregory-u-ca-gregory", "de-gregory", "de-u-ca-gregory", "de"],
+ "no-nyn": ["nn"],
+ "i-klingon": ["tlh"],
+ "sgn-GR": ["gss"],
+ "ji": ["yi"],
+ "de-DD": ["de-DE", "de"],
+ "zh-hak-CN": ["hak-CN", "hak"],
+ "sgn-ils": ["ils"],
+ "in": ["id"],
+ "x-foo": ["x-foo"]
+};
+
+// make sure the data above is correct
+Object.getOwnPropertyNames(canonicalizedTags).forEach(function (tag) {
+ canonicalizedTags[tag].forEach(function (canonicalTag) {
+ if (!isCanonicalizedStructurallyValidLanguageTag(canonicalTag)) {
+ $ERROR("Test data \"" + canonicalTag + "\" is not canonicalized and structurally valid language tag.");
+ }
+ });
+});
+
+// now the actual test
+testWithIntlConstructors(function (Constructor) {
+ var defaultLocale = new Constructor().resolvedOptions().locale;
+ Object.getOwnPropertyNames(canonicalizedTags).forEach(function (tag) {
+ // use lookup locale matcher to keep the set of possible return values predictable
+
+ // Variant 1: construct an object and see whether its locale is canonicalized.
+ // In this variant, shortened forms or the default locale may be returned
+ var object = new Constructor([tag], {localeMatcher: "lookup"});
+ var locale = object.resolvedOptions().locale;
+ if (canonicalizedTags[tag].indexOf(locale) === -1 && locale !== defaultLocale) {
+ $ERROR("For " + tag + " got " + locale + "; expected one of " +
+ canonicalizedTags[tag].join(", ") + ".");
+ }
+
+ // Variant 2: get the supported locales. If the tag is supported, it should be returned canonicalized but unshortened
+ var supported = Constructor.supportedLocalesOf([tag]);
+ if (supported.length > 0 && supported[0] !== canonicalizedTags[tag][0]) {
+ $ERROR("For " + tag + " got " + supported[0] + "; expected " +
+ canonicalizedTags[tag][0] + ".");
+ }
+ });
+ return true;
+});
+
diff --git a/js/src/tests/test262/intl402/ch06/6.2/6.2.4.js b/js/src/tests/test262/intl402/ch06/6.2/6.2.4.js
new file mode 100644
index 000000000..6ca47af14
--- /dev/null
+++ b/js/src/tests/test262/intl402/ch06/6.2/6.2.4.js
@@ -0,0 +1,19 @@
+// Copyright 2012 Mozilla Corporation. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @description Tests that the default locale is a String value representing the
+ * structurally valid and canonicalized BCP 47 language tag.
+ * @author Norbert Lindenberg
+ */
+
+$INCLUDE("testIntl.js");
+
+testWithIntlConstructors(function (Constructor) {
+ var defaultLocale = new Constructor().resolvedOptions().locale;
+ if (!isCanonicalizedStructurallyValidLanguageTag(defaultLocale)) {
+ $ERROR("Default locale \"" + defaultLocale + "\" is not canonicalized and structurally valid language tag.");
+ }
+ return true;
+});
+
diff --git a/js/src/tests/test262/intl402/ch06/6.2/browser.js b/js/src/tests/test262/intl402/ch06/6.2/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/intl402/ch06/6.2/browser.js
diff --git a/js/src/tests/test262/intl402/ch06/6.2/shell.js b/js/src/tests/test262/intl402/ch06/6.2/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/intl402/ch06/6.2/shell.js
diff --git a/js/src/tests/test262/intl402/ch06/6.3/6.3.1_a.js b/js/src/tests/test262/intl402/ch06/6.3/6.3.1_a.js
new file mode 100644
index 000000000..01cc18b03
--- /dev/null
+++ b/js/src/tests/test262/intl402/ch06/6.3/6.3.1_a.js
@@ -0,0 +1,25 @@
+// Copyright 2012 Mozilla Corporation. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @description Tests that well-formed currency codes are accepted.
+ * @author Norbert Lindenberg
+ */
+
+var wellFormedCurrencyCodes = [
+ "BOB",
+ "EUR",
+ "usd", // currency codes are case-insensitive
+ "XdR",
+ "xTs"
+];
+
+wellFormedCurrencyCodes.forEach(function (code) {
+ // this must not throw an exception for a valid currency code
+ var format = new Intl.NumberFormat(["de-de"], {style: "currency", currency: code});
+ if (format.resolvedOptions().currency !== code.toUpperCase()) {
+ $ERROR("Currency " + code + " was not correctly accepted; turned into " +
+ format.resolvedOptions().currency + ".");
+ }
+});
+
diff --git a/js/src/tests/test262/intl402/ch06/6.3/6.3.1_b.js b/js/src/tests/test262/intl402/ch06/6.3/6.3.1_b.js
new file mode 100644
index 000000000..038dd1fc4
--- /dev/null
+++ b/js/src/tests/test262/intl402/ch06/6.3/6.3.1_b.js
@@ -0,0 +1,35 @@
+// Copyright 2012 Mozilla Corporation. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @description Tests that invalid currency codes are not accepted.
+ * @author Norbert Lindenberg
+ */
+
+var invalidCurrencyCodes = [
+ "",
+ "€",
+ "$",
+ "SFr.",
+ "DM",
+ "KR₩",
+ "702",
+ "ßP",
+ "ınr"
+];
+
+invalidCurrencyCodes.forEach(function (code) {
+ var error;
+ try {
+ // this must throw an exception for an invalid currency code
+ var format = new Intl.NumberFormat(["de-de"], {style: "currency", currency: code});
+ } catch (e) {
+ error = e;
+ }
+ if (error === undefined) {
+ $ERROR("Invalid currency code '" + code + "' was not rejected.");
+ } else if (error.name !== "RangeError") {
+ $ERROR("Invalid currency code '" + code + "' was rejected with wrong error " + error.name + ".");
+ }
+});
+
diff --git a/js/src/tests/test262/intl402/ch06/6.3/browser.js b/js/src/tests/test262/intl402/ch06/6.3/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/intl402/ch06/6.3/browser.js
diff --git a/js/src/tests/test262/intl402/ch06/6.3/shell.js b/js/src/tests/test262/intl402/ch06/6.3/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/intl402/ch06/6.3/shell.js
diff --git a/js/src/tests/test262/intl402/ch06/6.4/6.4_a.js b/js/src/tests/test262/intl402/ch06/6.4/6.4_a.js
new file mode 100644
index 000000000..05202353c
--- /dev/null
+++ b/js/src/tests/test262/intl402/ch06/6.4/6.4_a.js
@@ -0,0 +1,22 @@
+// Copyright 2012 Mozilla Corporation. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @description Tests that valid time zone names are accepted.
+ * @author Norbert Lindenberg
+ */
+
+var validTimeZoneNames = [
+ "UTC",
+ "utc" // time zone names are case-insensitive
+];
+
+validTimeZoneNames.forEach(function (name) {
+ // this must not throw an exception for a valid time zone name
+ var format = new Intl.DateTimeFormat(["de-de"], {timeZone: name});
+ if (format.resolvedOptions().timeZone !== name.toUpperCase()) {
+ $ERROR("Time zone name " + name + " was not correctly accepted; turned into " +
+ format.resolvedOptions().timeZone + ".");
+ }
+});
+
diff --git a/js/src/tests/test262/intl402/ch06/6.4/6.4_b.js b/js/src/tests/test262/intl402/ch06/6.4/6.4_b.js
new file mode 100644
index 000000000..847d804e3
--- /dev/null
+++ b/js/src/tests/test262/intl402/ch06/6.4/6.4_b.js
@@ -0,0 +1,34 @@
+// Copyright 2012 Mozilla Corporation. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @description Tests that invalid time zone names are not accepted.
+ * @author Norbert Lindenberg
+ */
+
+var invalidTimeZoneNames = [
+ "",
+ "MEZ", // localized abbreviation
+ "Pacific Time", // localized long form
+ "cnsha", // BCP 47 time zone code
+ "invalid", // as the name says
+ "Europe/İstanbul", // non-ASCII letter
+ "asıa/baku", // non-ASCII letter
+ "europe/brußels" // non-ASCII letter
+];
+
+invalidTimeZoneNames.forEach(function (name) {
+ var error;
+ try {
+ // this must throw an exception for an invalid time zone name
+ var format = new Intl.DateTimeFormat(["de-de"], {timeZone: name});
+ } catch (e) {
+ error = e;
+ }
+ if (error === undefined) {
+ $ERROR("Invalid time zone name " + name + " was not rejected.");
+ } else if (error.name !== "RangeError") {
+ $ERROR("Invalid time zone name " + name + " was rejected with wrong error " + error.name + ".");
+ }
+});
+
diff --git a/js/src/tests/test262/intl402/ch06/6.4/6.4_c.js b/js/src/tests/test262/intl402/ch06/6.4/6.4_c.js
new file mode 100644
index 000000000..a9969b648
--- /dev/null
+++ b/js/src/tests/test262/intl402/ch06/6.4/6.4_c.js
@@ -0,0 +1,36 @@
+// Copyright 2012 Mozilla Corporation. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @description Tests that additional time zone names, if accepted, are handled correctly.
+ * @author Norbert Lindenberg
+ */
+
+// canonicalization specified in conformance clause
+var additionalTimeZoneNames = {
+ "Etc/GMT": "UTC",
+ "Greenwich": "UTC",
+ "PRC": "Asia/Shanghai",
+ "AmErIcA/LoS_aNgElEs": "America/Los_Angeles",
+ "etc/gmt+7": "Etc/GMT+7"
+};
+
+Object.getOwnPropertyNames(additionalTimeZoneNames).forEach(function (name) {
+ var format, error;
+ try {
+ format = new Intl.DateTimeFormat([], {timeZone: name});
+ } catch (e) {
+ error = e;
+ }
+ if (error === undefined) {
+ var actual = format.resolvedOptions().timeZone;
+ var expected = additionalTimeZoneNames[name];
+ if (actual !== expected) {
+ $ERROR("Time zone name " + name + " was accepted, but incorrectly canonicalized to " +
+ actual + "; expected " + expected + ".");
+ }
+ } else if (error.name !== "RangeError") {
+ $ERROR("Time zone name " + name + " was rejected with wrong error " + error.name + ".");
+ }
+});
+
diff --git a/js/src/tests/test262/intl402/ch06/6.4/browser.js b/js/src/tests/test262/intl402/ch06/6.4/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/intl402/ch06/6.4/browser.js
diff --git a/js/src/tests/test262/intl402/ch06/6.4/shell.js b/js/src/tests/test262/intl402/ch06/6.4/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/intl402/ch06/6.4/shell.js
diff --git a/js/src/tests/test262/intl402/ch06/browser.js b/js/src/tests/test262/intl402/ch06/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/intl402/ch06/browser.js
diff --git a/js/src/tests/test262/intl402/ch06/shell.js b/js/src/tests/test262/intl402/ch06/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/intl402/ch06/shell.js
diff --git a/js/src/tests/test262/intl402/ch08/8.0/8.0.js b/js/src/tests/test262/intl402/ch08/8.0/8.0.js
new file mode 100644
index 000000000..dedda973b
--- /dev/null
+++ b/js/src/tests/test262/intl402/ch08/8.0/8.0.js
@@ -0,0 +1,12 @@
+// Copyright 2013 Mozilla Corporation. All rights reserved.
+// This code is governed by the license found in the LICENSE file.
+
+/**
+ * @description Tests that Intl has Object.prototype as its prototype.
+ * @author Norbert Lindenberg
+ */
+
+if (Object.getPrototypeOf(Intl) !== Object.prototype) {
+ $ERROR("Intl doesn't have Object.prototype as its prototype.");
+}
+
diff --git a/js/src/tests/test262/intl402/ch08/8.0/8.0_L15.js b/js/src/tests/test262/intl402/ch08/8.0/8.0_L15.js
new file mode 100644
index 000000000..0174bef54
--- /dev/null
+++ b/js/src/tests/test262/intl402/ch08/8.0/8.0_L15.js
@@ -0,0 +1,15 @@
+// Copyright 2012 Mozilla Corporation. All rights reserved.
+// This code is governed by the license found in the LICENSE file.
+
+/**
+ * @description Tests that Intl
+ * meets the requirements for built-in objects defined by the introduction of
+ * chapter 15 of the ECMAScript Language Specification.
+ * @author Norbert Lindenberg
+ */
+
+$INCLUDE("testBuiltInObject.js");
+
+testBuiltInObject(fnGlobalObject().Intl, false, false, []);
+testBuiltInObject(Intl, false, false, ["Collator", "NumberFormat", "DateTimeFormat"]);
+
diff --git a/js/src/tests/test262/intl402/ch08/8.0/browser.js b/js/src/tests/test262/intl402/ch08/8.0/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/intl402/ch08/8.0/browser.js
diff --git a/js/src/tests/test262/intl402/ch08/8.0/shell.js b/js/src/tests/test262/intl402/ch08/8.0/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/intl402/ch08/8.0/shell.js
diff --git a/js/src/tests/test262/intl402/ch08/browser.js b/js/src/tests/test262/intl402/ch08/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/intl402/ch08/browser.js
diff --git a/js/src/tests/test262/intl402/ch08/shell.js b/js/src/tests/test262/intl402/ch08/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/intl402/ch08/shell.js
diff --git a/js/src/tests/test262/intl402/ch09/9.1/9.1_a.js b/js/src/tests/test262/intl402/ch09/9.1/9.1_a.js
new file mode 100644
index 000000000..b7358304b
--- /dev/null
+++ b/js/src/tests/test262/intl402/ch09/9.1/9.1_a.js
@@ -0,0 +1,18 @@
+// Copyright 2012 Mozilla Corporation. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @description Tests that default locale is available.
+ * @author Norbert Lindenberg
+ */
+
+$INCLUDE("testIntl.js");
+
+testWithIntlConstructors(function (Constructor) {
+ var defaultLocale = new Constructor().resolvedOptions().locale;
+ var supportedLocales = Constructor.supportedLocalesOf([defaultLocale]);
+ if (supportedLocales.indexOf(defaultLocale) === -1) {
+ $ERROR("Default locale is not reported as available.");
+ }
+});
+
diff --git a/js/src/tests/test262/intl402/ch09/9.1/9.1_b.js b/js/src/tests/test262/intl402/ch09/9.1/9.1_b.js
new file mode 100644
index 000000000..a0abc7fc1
--- /dev/null
+++ b/js/src/tests/test262/intl402/ch09/9.1/9.1_b.js
@@ -0,0 +1,32 @@
+// Copyright 2012 Mozilla Corporation. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @description Tests that appropriate fallback locales are provided for
+ * supported locales.
+ * @author Norbert Lindenberg
+ */
+
+$INCLUDE("testIntl.js");
+
+testWithIntlConstructors(function (Constructor) {
+ var info = getLocaleSupportInfo(Constructor);
+ var fallback;
+ info.supported.forEach(function (locale) {
+ var pos = locale.lastIndexOf("-");
+ if (pos !== -1) {
+ fallback = locale.substring(0, pos);
+ if (info.supported.indexOf(fallback) === -1) {
+ $ERROR("Locale " + locale + " is supported, but fallback " + fallback + " isn't.");
+ }
+ }
+ var match = /([a-z]{2,3})(-[A-Z][a-z]{3})(-[A-Z]{2})/.exec(locale);
+ if (match !== null) {
+ fallback = match[1] + match[3];
+ if (info.supported.indexOf(fallback) === -1) {
+ $ERROR("Locale " + locale + " is supported, but fallback " + fallback + " isn't.");
+ }
+ }
+ });
+});
+
diff --git a/js/src/tests/test262/intl402/ch09/9.1/browser.js b/js/src/tests/test262/intl402/ch09/9.1/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/intl402/ch09/9.1/browser.js
diff --git a/js/src/tests/test262/intl402/ch09/9.1/shell.js b/js/src/tests/test262/intl402/ch09/9.1/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/intl402/ch09/9.1/shell.js
diff --git a/js/src/tests/test262/intl402/ch09/9.2/9.2.1_1.js b/js/src/tests/test262/intl402/ch09/9.2/9.2.1_1.js
new file mode 100644
index 000000000..7386fdeda
--- /dev/null
+++ b/js/src/tests/test262/intl402/ch09/9.2/9.2.1_1.js
@@ -0,0 +1,23 @@
+// Copyright 2012 Mozilla Corporation. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @description Tests that canonicalization of locale lists treats undefined and empty lists the same.
+ * @author Norbert Lindenberg
+ */
+
+$INCLUDE("testIntl.js");
+
+testWithIntlConstructors(function (Constructor) {
+ var supportedForUndefined = Constructor.supportedLocalesOf(undefined);
+ var supportedForEmptyList = Constructor.supportedLocalesOf([]);
+ if (supportedForUndefined.length !== supportedForEmptyList.length) {
+ $ERROR("Supported locales differ between undefined and empty list input.");
+ }
+ // we don't compare the elements because length should be 0 - let's just verify that
+ if (supportedForUndefined.length !== 0) {
+ $ERROR("Internal test error: Assumption about length being 0 is invalid.");
+ }
+ return true;
+});
+
diff --git a/js/src/tests/test262/intl402/ch09/9.2/9.2.1_2.js b/js/src/tests/test262/intl402/ch09/9.2/9.2.1_2.js
new file mode 100644
index 000000000..e4fb3756d
--- /dev/null
+++ b/js/src/tests/test262/intl402/ch09/9.2/9.2.1_2.js
@@ -0,0 +1,21 @@
+// Copyright 2012 Mozilla Corporation. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @description Tests that the behavior of a List is not affected by adversarial
+ * changes to Array.prototype.
+ * @author Norbert Lindenberg
+ */
+
+$INCLUDE("testIntl.js");
+
+taintArray();
+
+testWithIntlConstructors(function (Constructor) {
+ var defaultLocale = new Constructor().resolvedOptions().locale;
+ var canonicalized = Constructor.supportedLocalesOf([defaultLocale, defaultLocale]);
+ if (canonicalized.length > 1) {
+ $ERROR("Canonicalization didn't remove duplicate language tags from locale list.");
+ }
+});
+
diff --git a/js/src/tests/test262/intl402/ch09/9.2/9.2.1_3.js b/js/src/tests/test262/intl402/ch09/9.2/9.2.1_3.js
new file mode 100644
index 000000000..e403b1765
--- /dev/null
+++ b/js/src/tests/test262/intl402/ch09/9.2/9.2.1_3.js
@@ -0,0 +1,87 @@
+// Copyright 2012 Mozilla Corporation. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @description Tests that a single string instead of a locale list is treated
+ * as the locale list containing that string.
+ * @author Norbert Lindenberg
+ */
+
+$INCLUDE("testIntl.js");
+
+var validAndInvalidLanguageTags = [
+ "de", // ISO 639 language code
+ "de-DE", // + ISO 3166-1 country code
+ "DE-de", // tags are case-insensitive
+ "cmn", // ISO 639 language code
+ "cmn-Hans", // + script code
+ "CMN-hANS", // tags are case-insensitive
+ "cmn-hans-cn", // + ISO 3166-1 country code
+ "es-419", // + UN M.49 region code
+ "es-419-u-nu-latn-cu-bob", // + Unicode locale extension sequence
+ "i-klingon", // grandfathered tag
+ "cmn-hans-cn-t-ca-u-ca-x-t-u", // singleton subtags can also be used as private use subtags
+ "enochian-enochian", // language and variant subtags may be the same
+ "de-gregory-u-ca-gregory", // variant and extension subtags may be the same
+ "de_DE",
+ "DE_de",
+ "cmn_Hans",
+ "cmn-hans_cn",
+ "es_419",
+ "es-419-u-nu-latn-cu_bob",
+ "i_klingon",
+ "cmn-hans-cn-t-ca-u-ca-x_t-u",
+ "enochian_enochian",
+ "de-gregory_u-ca-gregory",
+ "i", // singleton alone
+ "x", // private use without subtag
+ "u", // extension singleton in first place
+ "419", // region code in first place
+ "u-nu-latn-cu-bob", // extension sequence without language
+ "hans-cmn-cn", // "hans" could theoretically be a 4-letter language code,
+ // but those can't be followed by extlang codes.
+ "cmn-hans-cn-u-u", // duplicate singleton
+ "cmn-hans-cn-t-u-ca-u", // duplicate singleton
+ "de-gregory-gregory" // duplicate variant
+];
+
+testWithIntlConstructors(function (Constructor) {
+ validAndInvalidLanguageTags.forEach(function (locale) {
+ var obj1, obj2, locale1, locale2, error1, error2;
+ try {
+ obj1 = new Constructor(locale);
+ locale1 = obj1.resolvedOptions().locale;
+ } catch (e) {
+ error1 = e;
+ }
+ try {
+ obj2 = new Constructor([locale]);
+ locale2 = obj2.resolvedOptions().locale;
+ } catch (e) {
+ error2 = e;
+ }
+
+ if ((error1 === undefined) !== (error2 === undefined)) {
+ if (error1 === undefined) {
+ $ERROR("Single locale string " + locale +
+ " was accepted, but locale list containing that string wasn't.");
+ } else {
+ $ERROR("Single locale string " + locale +
+ " was rejected, but locale list containing that string wasn't.");
+ }
+ } else if (error1 === undefined) {
+ if (locale1 !== locale2) {
+ $ERROR("Single locale string " + locale + " results in " + locale1 +
+ ", but locale list [" + locale + "] results in " + locale2 + ".");
+ }
+ } else {
+ if (error1.name !== error2.name) {
+ $ERROR("Single locale string " + locale + " results in error " + error1.name +
+ ", but locale list [" + locale + "] results in error " + error2.name + ".");
+ }
+ }
+ });
+
+ return true;
+});
+
diff --git a/js/src/tests/test262/intl402/ch09/9.2/9.2.1_4.js b/js/src/tests/test262/intl402/ch09/9.2/9.2.1_4.js
new file mode 100644
index 000000000..b9bb9db79
--- /dev/null
+++ b/js/src/tests/test262/intl402/ch09/9.2/9.2.1_4.js
@@ -0,0 +1,46 @@
+// Copyright 2012 Mozilla Corporation. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @description Tests that non-objects are converted to objects before canonicalization.
+ * @author Norbert Lindenberg
+ */
+
+$INCLUDE("testIntl.js");
+
+testWithIntlConstructors(function (Constructor) {
+ // undefined is handled separately
+
+ // null should result in a TypeError
+ var error;
+ try {
+ var supportedForNull = Constructor.supportedLocalesOf(null);
+ } catch (e) {
+ error = e;
+ }
+ if (error === undefined) {
+ $ERROR("Null as locale list was not rejected.");
+ } else if (error.name !== "TypeError") {
+ $ERROR("Null as locale list was rejected with wrong error " + error.name + ".");
+ }
+
+ // let's use an empty list for comparison
+ var supportedForEmptyList = Constructor.supportedLocalesOf([]);
+ // we don't compare the elements because length should be 0 - let's just verify that
+ if (supportedForEmptyList.length !== 0) {
+ $ERROR("Internal test error: Assumption about length being 0 is invalid.");
+ }
+
+ // most non-objects will be interpreted as empty lists because a missing length property is interpreted as 0
+ var supportedForNumber = Constructor.supportedLocalesOf(5);
+ if (supportedForNumber.length !== supportedForEmptyList.length) {
+ $ERROR("Supported locales differ between numeric and empty list input.");
+ }
+ var supportedForBoolean = Constructor.supportedLocalesOf(true);
+ if (supportedForBoolean.length !== supportedForEmptyList.length) {
+ $ERROR("Supported locales differ between boolean and empty list input.");
+ }
+
+ return true;
+});
+
diff --git a/js/src/tests/test262/intl402/ch09/9.2/9.2.1_8_c_ii.js b/js/src/tests/test262/intl402/ch09/9.2/9.2.1_8_c_ii.js
new file mode 100644
index 000000000..8dfb9b7b3
--- /dev/null
+++ b/js/src/tests/test262/intl402/ch09/9.2/9.2.1_8_c_ii.js
@@ -0,0 +1,30 @@
+// Copyright 2012 Mozilla Corporation. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @description Tests that values other than strings are not accepted as locales.
+ * @author Norbert Lindenberg
+ */
+
+$INCLUDE("testIntl.js");
+
+var notStringOrObject = [undefined, null, true, false, 0, 5, -5, NaN];
+
+testWithIntlConstructors(function (Constructor) {
+ notStringOrObject.forEach(function (value) {
+ var error;
+ try {
+ var supported = Constructor.supportedLocalesOf([value]);
+ } catch (e) {
+ error = e;
+ }
+ if (error === undefined) {
+ $ERROR("" + value + " as locale was not rejected.");
+ } else if (error.name !== "TypeError") {
+ $ERROR("" + value + " as locale was rejected with wrong error " + error.name + ".");
+ }
+ });
+
+ return true;
+});
+
diff --git a/js/src/tests/test262/intl402/ch09/9.2/9.2.1_8_c_vi.js b/js/src/tests/test262/intl402/ch09/9.2/9.2.1_8_c_vi.js
new file mode 100644
index 000000000..ef78fa97b
--- /dev/null
+++ b/js/src/tests/test262/intl402/ch09/9.2/9.2.1_8_c_vi.js
@@ -0,0 +1,18 @@
+// Copyright 2012 Mozilla Corporation. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @description Tests that canonicalization of locale lists removes duplicate language tags.
+ * @author Norbert Lindenberg
+ */
+
+$INCLUDE("testIntl.js");
+
+testWithIntlConstructors(function (Constructor) {
+ var defaultLocale = new Constructor().resolvedOptions().locale;
+ var canonicalized = Constructor.supportedLocalesOf([defaultLocale, defaultLocale]);
+ if (canonicalized.length > 1) {
+ $ERROR("Canonicalization didn't remove duplicate language tags from locale list.");
+ }
+});
+
diff --git a/js/src/tests/test262/intl402/ch09/9.2/9.2.2.js b/js/src/tests/test262/intl402/ch09/9.2/9.2.2.js
new file mode 100644
index 000000000..cb74eaad2
--- /dev/null
+++ b/js/src/tests/test262/intl402/ch09/9.2/9.2.2.js
@@ -0,0 +1,45 @@
+// Copyright 2012 Mozilla Corporation. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @description Tests that locales that are reported by resolvedOptions
+ * are also reported by supportedLocalesOf.
+ * @author Norbert Lindenberg
+ */
+
+$INCLUDE("testIntl.js");
+
+testWithIntlConstructors(function (Constructor) {
+ var info = getLocaleSupportInfo(Constructor);
+ // this test should work equally for both matching algorithms
+ ["lookup", "best fit"].forEach(function (matcher) {
+ var supportedByConstructor = info.supported.concat(info.byFallback);
+ var supported = Constructor.supportedLocalesOf(supportedByConstructor,
+ {localeMatcher: matcher});
+ // we could check the length first, but it's probably more interesting which locales are missing
+ var i = 0;
+ var limit = Math.min(supportedByConstructor.length, supported.length);
+ while (i < limit && supportedByConstructor[i] === supported[i]) {
+ i++;
+ }
+ if (i < supportedByConstructor.length) {
+ $ERROR("Locale " + supportedByConstructor[i] +
+ " is returned by resolvedOptions but not by supportedLocalesOf.");
+ } else if (i < supported.length) {
+ $ERROR("Locale " + supported[i] +
+ " is returned by supportedLocalesOf but not by resolvedOptions.");
+ }
+ });
+
+ // this test is only valid for lookup - best fit may find additional locales supported
+ var unsupportedByConstructor = info.unsupported;
+ var supported = Constructor.supportedLocalesOf(unsupportedByConstructor,
+ {localeMatcher: "lookup"});
+ if (supported.length > 0) {
+ $ERROR("Locale " + supported[0] +
+ " is returned by supportedLocalesOf but not by resolvedOptions.");
+ }
+
+ return true;
+});
+
diff --git a/js/src/tests/test262/intl402/ch09/9.2/9.2.3_5.js b/js/src/tests/test262/intl402/ch09/9.2/9.2.3_5.js
new file mode 100644
index 000000000..8ae8a216b
--- /dev/null
+++ b/js/src/tests/test262/intl402/ch09/9.2/9.2.3_5.js
@@ -0,0 +1,22 @@
+// Copyright 2012 Mozilla Corporation. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @description Tests that the behavior of a Record is not affected by adversarial
+ * changes to Object.prototype.
+ * @author Norbert Lindenberg
+ */
+
+$INCLUDE("testIntl.js");
+
+taintProperties(["locale", "extension", "extensionIndex"]);
+
+testWithIntlConstructors(function (Constructor) {
+ var locale = new Constructor(undefined, {localeMatcher: "lookup"}).resolvedOptions().locale;
+ if (!isCanonicalizedStructurallyValidLanguageTag(locale)) {
+ $ERROR("Constructor returns invalid locale " + locale + ".");
+ }
+
+ return true;
+});
+
diff --git a/js/src/tests/test262/intl402/ch09/9.2/9.2.5_11_g_ii_2.js b/js/src/tests/test262/intl402/ch09/9.2/9.2.5_11_g_ii_2.js
new file mode 100644
index 000000000..d4213d2da
--- /dev/null
+++ b/js/src/tests/test262/intl402/ch09/9.2/9.2.5_11_g_ii_2.js
@@ -0,0 +1,26 @@
+// Copyright 2011-2012 Norbert Lindenberg. All rights reserved.
+// Copyright 2012 Mozilla Corporation. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @description Tests that missing Unicode extension values default to true for
+ * boolean keys.
+ * @author Norbert Lindenberg
+ */
+
+var extensions = ["-u-co-phonebk-kn", "-u-kn-co-phonebk"];
+extensions.forEach(function (extension) {
+ var defaultLocale = new Intl.Collator().resolvedOptions().locale;
+ var collator = new Intl.Collator([defaultLocale + extension], {usage: "sort"});
+ var locale = collator.resolvedOptions().locale;
+ var numeric = collator.resolvedOptions().numeric;
+ if (numeric !== undefined) {
+ if (numeric !== true) {
+ $ERROR("Default value for \"kn\" should be true, but is " + numeric + ".");
+ }
+ if (locale.indexOf("-kn") !== -1) {
+ $ERROR("\"kn\" is returned in locale, but shouldn't be.");
+ }
+ }
+});
+
diff --git a/js/src/tests/test262/intl402/ch09/9.2/9.2.5_6.js b/js/src/tests/test262/intl402/ch09/9.2/9.2.5_6.js
new file mode 100644
index 000000000..4bc904ee1
--- /dev/null
+++ b/js/src/tests/test262/intl402/ch09/9.2/9.2.5_6.js
@@ -0,0 +1,22 @@
+// Copyright 2012 Mozilla Corporation. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @description Tests that the behavior of a Record is not affected by adversarial
+ * changes to Object.prototype.
+ * @author Norbert Lindenberg
+ */
+
+$INCLUDE("testIntl.js");
+
+taintProperties(["dataLocale", "nu", "ca", "co", "locale"]);
+
+testWithIntlConstructors(function (Constructor) {
+ var locale = new Constructor(undefined, {localeMatcher: "lookup"}).resolvedOptions().locale;
+ if (!isCanonicalizedStructurallyValidLanguageTag(locale)) {
+ $ERROR("Constructor returns invalid locale " + locale + ".");
+ }
+
+ return true;
+});
+
diff --git a/js/src/tests/test262/intl402/ch09/9.2/9.2.6_2.js b/js/src/tests/test262/intl402/ch09/9.2/9.2.6_2.js
new file mode 100644
index 000000000..8d4f7efa9
--- /dev/null
+++ b/js/src/tests/test262/intl402/ch09/9.2/9.2.6_2.js
@@ -0,0 +1,27 @@
+// Copyright 2012 Mozilla Corporation. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @description Tests that the behavior of a List is not affected by adversarial
+ * changes to Array.prototype.
+ * @author Norbert Lindenberg
+ */
+
+$INCLUDE("testIntl.js");
+
+taintArray();
+
+testWithIntlConstructors(function (Constructor) {
+ // this test should work equally for both matching algorithms
+ ["lookup", "best fit"].forEach(function (matcher) {
+ var defaultLocale = new Constructor().resolvedOptions().locale;
+ var canonicalized = Constructor.supportedLocalesOf([defaultLocale, defaultLocale],
+ {localeMatcher: matcher});
+ if (canonicalized.length > 1) {
+ $ERROR("Canonicalization with matcher " + matcher + " didn't remove duplicate language tags from locale list.");
+ }
+ });
+
+ return true;
+});
+
diff --git a/js/src/tests/test262/intl402/ch09/9.2/9.2.6_4.js b/js/src/tests/test262/intl402/ch09/9.2/9.2.6_4.js
new file mode 100644
index 000000000..7c053a381
--- /dev/null
+++ b/js/src/tests/test262/intl402/ch09/9.2/9.2.6_4.js
@@ -0,0 +1,23 @@
+// Copyright 2012 Mozilla Corporation. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @description Tests that LookupSupportedLocales returns an empty list when
+ * given an empty list.
+ * @author Norbert Lindenberg
+ */
+
+$INCLUDE("testIntl.js");
+
+testWithIntlConstructors(function (Constructor) {
+ // this test should work equally for both matching algorithms
+ ["lookup", "best fit"].forEach(function (matcher) {
+ var supported = Constructor.supportedLocalesOf([], {localeMatcher: matcher});
+ if (supported.length !== 0) {
+ $ERROR("SupportedLocales with matcher " + matcher + " returned a non-empty list for an empty list.");
+ }
+ });
+
+ return true;
+});
+
diff --git a/js/src/tests/test262/intl402/ch09/9.2/9.2.6_4_b.js b/js/src/tests/test262/intl402/ch09/9.2/9.2.6_4_b.js
new file mode 100644
index 000000000..5b9a43157
--- /dev/null
+++ b/js/src/tests/test262/intl402/ch09/9.2/9.2.6_4_b.js
@@ -0,0 +1,47 @@
+// Copyright 2012 Mozilla Corporation. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @description Tests that Unicode locale extension sequences do not affect
+ * whether a locale is considered supported, but are reported back.
+ * @author Norbert Lindenberg
+ */
+
+$INCLUDE("testIntl.js");
+
+testWithIntlConstructors(function (Constructor) {
+ // this test should work equally for both matching algorithms
+ ["lookup", "best fit"].forEach(function (matcher) {
+ var info = getLocaleSupportInfo(Constructor);
+ var allLocales = info.supported.concat(info.byFallback, info.unsupported);
+ allLocales.forEach(function (locale) {
+ var validExtension = "-u-co-phonebk-nu-latn";
+ var invalidExtension = "-u-nu-invalid";
+ var supported1 = Constructor.supportedLocalesOf([locale],
+ {localeMatcher: matcher});
+ var supported2 = Constructor.supportedLocalesOf([locale + validExtension],
+ {localeMatcher: matcher});
+ var supported3 = Constructor.supportedLocalesOf([locale + invalidExtension],
+ {localeMatcher: matcher});
+ if (supported1.length === 1) {
+ if (supported2.length !== 1 || supported3.length !== 1) {
+ $ERROR("Presence of Unicode locale extension sequence affects whether locale " +
+ locale + " is considered supported with matcher " + matcher + ".");
+ }
+ if (supported2[0] !== locale + validExtension || supported3[0] !== locale + invalidExtension) {
+ alert(locale + "; " + supported2[0] + "; " + supported3[0]);
+ $ERROR("Unicode locale extension sequence is not correctly returned for locale " +
+ locale + " with matcher " + matcher + ".");
+ }
+ } else {
+ if (supported2.length !== 0 || supported3.length !== 0) {
+ $ERROR("Presence of Unicode locale extension sequence affects whether locale " +
+ locale + " is considered supported with matcher " + matcher + ".");
+ }
+ }
+ });
+ });
+
+ return true;
+});
+
diff --git a/js/src/tests/test262/intl402/ch09/9.2/9.2.6_4_c.js b/js/src/tests/test262/intl402/ch09/9.2/9.2.6_4_c.js
new file mode 100644
index 000000000..de68a9b66
--- /dev/null
+++ b/js/src/tests/test262/intl402/ch09/9.2/9.2.6_4_c.js
@@ -0,0 +1,32 @@
+// Copyright 2012 Mozilla Corporation. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @description Tests that LookupSupportedLocales includes the default locale
+ * and doesn't include the "no linguistic content" locale.
+ * @author Norbert Lindenberg
+ */
+
+$INCLUDE("testIntl.js");
+
+testWithIntlConstructors(function (Constructor) {
+ // this test should work equally for both matching algorithms
+ ["lookup", "best fit"].forEach(function (matcher) {
+ var defaultLocale = new Constructor().resolvedOptions().locale;
+ var noLinguisticContent = "zxx";
+ var supported = Constructor.supportedLocalesOf([defaultLocale, noLinguisticContent],
+ {localeMatcher: matcher});
+ if (supported.indexOf(defaultLocale) === -1) {
+ $ERROR("SupportedLocales didn't return default locale with matcher " + matcher + ".");
+ }
+ if (supported.indexOf(noLinguisticContent) !== -1) {
+ $ERROR("SupportedLocales returned the \"no linguistic content\" locale with matcher " + matcher + ".");
+ }
+ if (supported.length > 1) {
+ $ERROR("SupportedLocales returned stray locales: " + supported.join(", ") + " with matcher " + matcher + ".");
+ }
+ });
+
+ return true;
+});
+
diff --git a/js/src/tests/test262/intl402/ch09/9.2/9.2.8_1_c.js b/js/src/tests/test262/intl402/ch09/9.2/9.2.8_1_c.js
new file mode 100644
index 000000000..724db1edd
--- /dev/null
+++ b/js/src/tests/test262/intl402/ch09/9.2/9.2.8_1_c.js
@@ -0,0 +1,36 @@
+// Copyright 2012 Mozilla Corporation. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @description Tests that the option localeMatcher is processed correctly.
+ * @author Norbert Lindenberg
+ */
+
+$INCLUDE("testIntl.js");
+
+testWithIntlConstructors(function (Constructor) {
+ var defaultLocale = new Constructor().resolvedOptions().locale;
+
+ var validValues = [undefined, "lookup", "best fit", {toString: function () { return "lookup"; }}];
+ validValues.forEach(function (value) {
+ var supported = Constructor.supportedLocalesOf([defaultLocale], {localeMatcher: value});
+ });
+
+ var invalidValues = [null, 0, 5, NaN, true, false, "invalid"];
+ invalidValues.forEach(function (value) {
+ var error;
+ try {
+ var supported = Constructor.supportedLocalesOf([defaultLocale], {localeMatcher: value});
+ } catch (e) {
+ error = e;
+ }
+ if (error === undefined) {
+ $ERROR("Invalid localeMatcher value " + value + " was not rejected.");
+ } else if (error.name !== "RangeError") {
+ $ERROR("Invalid localeMatcher value " + value + " was rejected with wrong error " + error.name + ".");
+ }
+ });
+
+ return true;
+});
+
diff --git a/js/src/tests/test262/intl402/ch09/9.2/9.2.8_4.js b/js/src/tests/test262/intl402/ch09/9.2/9.2.8_4.js
new file mode 100644
index 000000000..79c362f62
--- /dev/null
+++ b/js/src/tests/test262/intl402/ch09/9.2/9.2.8_4.js
@@ -0,0 +1,35 @@
+// Copyright 2012 Mozilla Corporation. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @description Tests that the array returned by SupportedLocales is extensible,
+ * but its properties are non-writable/non-configurable.
+ * @author Norbert Lindenberg
+ */
+
+$INCLUDE("testIntl.js");
+
+function testFrozenProperty(obj, property) {
+ var desc = Object.getOwnPropertyDescriptor(obj, property);
+ if (desc.writable) {
+ $ERROR("Property " + property + " of object returned by SupportedLocales is writable.");
+ }
+ if (desc.configurable) {
+ $ERROR("Property " + property + " of object returned by SupportedLocales is configurable.");
+ }
+}
+
+testWithIntlConstructors(function (Constructor) {
+ var defaultLocale = new Constructor().resolvedOptions().locale;
+ var supported = Constructor.supportedLocalesOf([defaultLocale]);
+ if (!Object.isExtensible(supported)) {
+ $ERROR("Object returned by SupportedLocales is not extensible.");
+ }
+ for (var i = 0; i < supported.length; i++) {
+ testFrozenProperty(supported, i);
+ }
+ testFrozenProperty(supported, "length");
+
+ return true;
+});
+
diff --git a/js/src/tests/test262/intl402/ch09/9.2/browser.js b/js/src/tests/test262/intl402/ch09/9.2/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/intl402/ch09/9.2/browser.js
diff --git a/js/src/tests/test262/intl402/ch09/9.2/shell.js b/js/src/tests/test262/intl402/ch09/9.2/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/intl402/ch09/9.2/shell.js
diff --git a/js/src/tests/test262/intl402/ch09/browser.js b/js/src/tests/test262/intl402/ch09/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/intl402/ch09/browser.js
diff --git a/js/src/tests/test262/intl402/ch09/shell.js b/js/src/tests/test262/intl402/ch09/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/intl402/ch09/shell.js
diff --git a/js/src/tests/test262/intl402/ch10/10.1/10.1.1_1.js b/js/src/tests/test262/intl402/ch10/10.1/10.1.1_1.js
new file mode 100644
index 000000000..432e073fc
--- /dev/null
+++ b/js/src/tests/test262/intl402/ch10/10.1/10.1.1_1.js
@@ -0,0 +1,43 @@
+// Copyright 2012 Mozilla Corporation. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @description Tests that an object can't be re-initialized as a Collator.
+ * @author Norbert Lindenberg
+ */
+
+$INCLUDE("testIntl.js");
+
+testWithIntlConstructors(function (Constructor) {
+ var obj, error;
+
+ // variant 1: use constructor in a "new" expression
+ obj = new Constructor();
+ try {
+ Intl.Collator.call(obj);
+ } catch (e) {
+ error = e;
+ }
+ if (error === undefined) {
+ $ERROR("Re-initializing object created with \"new\" as Collator was not rejected.");
+ } else if (error.name !== "TypeError") {
+ $ERROR("Re-initializing object created with \"new\" as Collator was rejected with wrong error " + error.name + ".");
+ }
+
+ // variant 2: use constructor as a function
+ obj = Constructor.call({});
+ error = undefined;
+ try {
+ Intl.Collator.call(obj);
+ } catch (e) {
+ error = e;
+ }
+ if (error === undefined) {
+ $ERROR("Re-initializing object created with constructor as function as Collator was not rejected.");
+ } else if (error.name !== "TypeError") {
+ $ERROR("Re-initializing object created with constructor as function as Collator was rejected with wrong error " + error.name + ".");
+ }
+
+ return true;
+});
+
diff --git a/js/src/tests/test262/intl402/ch10/10.1/10.1.1_10.js b/js/src/tests/test262/intl402/ch10/10.1/10.1.1_10.js
new file mode 100644
index 000000000..5c6b657b5
--- /dev/null
+++ b/js/src/tests/test262/intl402/ch10/10.1/10.1.1_10.js
@@ -0,0 +1,18 @@
+// Copyright 2012 Mozilla Corporation. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @description Tests that the behavior of a Record is not affected by adversarial
+ * changes to Object.prototype.
+ * @author Norbert Lindenberg
+ */
+
+$INCLUDE("testIntl.js");
+
+taintProperties(["localeMatcher", "kn", "kf"]);
+
+var locale = new Intl.Collator(undefined, {localeMatcher: "lookup"}).resolvedOptions().locale;
+if (!isCanonicalizedStructurallyValidLanguageTag(locale)) {
+ $ERROR("Collator returns invalid locale " + locale + ".");
+}
+
diff --git a/js/src/tests/test262/intl402/ch10/10.1/10.1.1_11.js b/js/src/tests/test262/intl402/ch10/10.1/10.1.1_11.js
new file mode 100644
index 000000000..447fd8b28
--- /dev/null
+++ b/js/src/tests/test262/intl402/ch10/10.1/10.1.1_11.js
@@ -0,0 +1,12 @@
+// Copyright 2012 Mozilla Corporation. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @description Tests that the option localeMatcher is processed correctly.
+ * @author Norbert Lindenberg
+ */
+
+$INCLUDE("testIntl.js");
+
+testOption(Intl.Collator, "localeMatcher", "string", ["lookup", "best fit"], "best fit", {noReturn: true});
+
diff --git a/js/src/tests/test262/intl402/ch10/10.1/10.1.1_13.js b/js/src/tests/test262/intl402/ch10/10.1/10.1.1_13.js
new file mode 100644
index 000000000..4129eebd2
--- /dev/null
+++ b/js/src/tests/test262/intl402/ch10/10.1/10.1.1_13.js
@@ -0,0 +1,13 @@
+// Copyright 2012 Mozilla Corporation. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @description Tests that the options numeric and caseFirst are processed correctly.
+ * @author Norbert Lindenberg
+ */
+
+$INCLUDE("testIntl.js");
+
+testOption(Intl.Collator, "numeric", "boolean", undefined, undefined, {isOptional: true});
+testOption(Intl.Collator, "caseFirst", "string", ["upper", "lower", "false"], undefined, {isOptional: true});
+
diff --git a/js/src/tests/test262/intl402/ch10/10.1/10.1.1_19_b.js b/js/src/tests/test262/intl402/ch10/10.1/10.1.1_19_b.js
new file mode 100644
index 000000000..f1fef2704
--- /dev/null
+++ b/js/src/tests/test262/intl402/ch10/10.1/10.1.1_19_b.js
@@ -0,0 +1,44 @@
+// Copyright 2012 Mozilla Corporation. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @description Tests the special handling of the "co" key in Intl.Collator.
+ * @author Norbert Lindenberg
+ */
+
+function checkCollation(extensionCoValue, usageValue, expectedCollations, expectedUsage) {
+ var requestLocale = extensionCoValue !== undefined ? "de-DE-u-co-" + extensionCoValue : "de-DE";
+ var options = usageValue !== undefined ? { usage: usageValue } : undefined;
+ var collator = new Intl.Collator([requestLocale], options);
+
+ var collation = collator.resolvedOptions().collation;
+ if (expectedCollations.indexOf(collation) === -1) {
+ $ERROR((extensionCoValue === undefined ? "Default collation" : "Collation for \"" + extensionCoValue) +
+ "\" should be " + expectedCollations.join(" or ") + ", but is " + collation + ".");
+ }
+
+ var usage = collator.resolvedOptions().usage;
+ if (expectedUsage !== usage) {
+ $ERROR((usageValue === undefined ? "Default usage" : "Usage") +
+ " should be " + expectedUsage + ", but is " + usage + ".");
+ }
+}
+
+checkCollation(undefined, undefined, ["default"], "sort");
+
+checkCollation("phonebk", undefined, ["phonebk", "default"], "sort");
+
+checkCollation("invalid", undefined, ["default"], "sort");
+
+checkCollation("standard", undefined, ["default"], "sort");
+
+checkCollation("standard", "search", ["default"], "search");
+
+checkCollation("standard", "sort", ["default"], "sort");
+
+checkCollation("search", undefined, ["default"], "sort");
+
+checkCollation("search", "search", ["default"], "search");
+
+checkCollation("search", "sort", ["default"], "sort");
+
diff --git a/js/src/tests/test262/intl402/ch10/10.1/10.1.1_19_c.js b/js/src/tests/test262/intl402/ch10/10.1/10.1.1_19_c.js
new file mode 100644
index 000000000..4ad76d45b
--- /dev/null
+++ b/js/src/tests/test262/intl402/ch10/10.1/10.1.1_19_c.js
@@ -0,0 +1,63 @@
+// Copyright 2012 Mozilla Corporation. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @description Tests that the options numeric and caseFirst can be
+ * set through either the locale or the options.
+ * @author Norbert Lindenberg
+ */
+
+$INCLUDE("testIntl.js");
+
+var options = [
+ {key: "kn", property: "numeric", type: "boolean", values: [true, false]},
+ {key: "kf", property: "caseFirst", type: "string", values: ["upper", "lower", "false"]}
+];
+
+options.forEach(function (option) {
+ var defaultLocale = new Intl.Collator().resolvedOptions().locale;
+ var collator, opt, result;
+
+ // find out which values are supported for a property in the default locale
+ var supportedValues = [];
+ option.values.forEach(function (value) {
+ opt = {};
+ opt[option.property] = value;
+ collator = new Intl.Collator([defaultLocale], opt);
+ result = collator.resolvedOptions()[option.property];
+ if (result !== undefined && supportedValues.indexOf(result) === -1) {
+ supportedValues.push(result);
+ }
+ });
+
+ // verify that the supported values can also be set through the locale
+ supportedValues.forEach(function (value) {
+ collator = new Intl.Collator([defaultLocale + "-u-" + option.key + "-" + value]);
+ result = collator.resolvedOptions()[option.property];
+ if (result !== value) {
+ $ERROR("Property " + option.property + " couldn't be set through locale extension key " +
+ option.key + "; requested value: " + value + "; actual value: " + result + ".");
+ }
+ });
+
+ // verify that the options setting overrides the locale setting
+ supportedValues.forEach(function (value) {
+ var otherValue;
+ option.values.forEach(function (possibleValue) {
+ if (possibleValue !== value) {
+ otherValue = possibleValue;
+ }
+ });
+ if (otherValue !== undefined) {
+ opt = {};
+ opt[option.property] = value;
+ collator = new Intl.Collator([defaultLocale + "-u-" + option.key + "-" + otherValue], opt);
+ result = collator.resolvedOptions()[option.property];
+ if (result !== value) {
+ $ERROR("Options value for property " + option.property + " doesn't override locale extension key " +
+ option.key + "; requested value: " + value + "; actual value: " + result + ".");
+ }
+ }
+ });
+});
+
diff --git a/js/src/tests/test262/intl402/ch10/10.1/10.1.1_20.js b/js/src/tests/test262/intl402/ch10/10.1/10.1.1_20.js
new file mode 100644
index 000000000..97d70c0f9
--- /dev/null
+++ b/js/src/tests/test262/intl402/ch10/10.1/10.1.1_20.js
@@ -0,0 +1,13 @@
+// Copyright 2012 Mozilla Corporation. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @description Tests that the option sensitivity is processed correctly.
+ * @author Norbert Lindenberg
+ */
+
+$INCLUDE("testIntl.js");
+
+// the fallback is variant only for usage === sort, but that happens to be the fallback for usage
+testOption(Intl.Collator, "sensitivity", "string", ["base", "accent", "case", "variant"], "variant");
+
diff --git a/js/src/tests/test262/intl402/ch10/10.1/10.1.1_23.js b/js/src/tests/test262/intl402/ch10/10.1/10.1.1_23.js
new file mode 100644
index 000000000..0b5261509
--- /dev/null
+++ b/js/src/tests/test262/intl402/ch10/10.1/10.1.1_23.js
@@ -0,0 +1,13 @@
+// Copyright 2012 Mozilla Corporation. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @description Tests that the option ignorePunctuation is processed correctly.
+ * @author Norbert Lindenberg
+ */
+
+$INCLUDE("testIntl.js");
+
+// the fallback is variant only for usage === sort, but that happens to be the fallback for usage
+testOption(Intl.Collator, "ignorePunctuation", "boolean", undefined, false);
+
diff --git a/js/src/tests/test262/intl402/ch10/10.1/10.1.1_6.js b/js/src/tests/test262/intl402/ch10/10.1/10.1.1_6.js
new file mode 100644
index 000000000..bc13436d7
--- /dev/null
+++ b/js/src/tests/test262/intl402/ch10/10.1/10.1.1_6.js
@@ -0,0 +1,12 @@
+// Copyright 2012 Mozilla Corporation. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @description Tests that the option usage is processed correctly.
+ * @author Norbert Lindenberg
+ */
+
+$INCLUDE("testIntl.js");
+
+testOption(Intl.Collator, "usage", "string", ["sort", "search"], "sort");
+
diff --git a/js/src/tests/test262/intl402/ch10/10.1/10.1.1_a.js b/js/src/tests/test262/intl402/ch10/10.1/10.1.1_a.js
new file mode 100644
index 000000000..56d4b9789
--- /dev/null
+++ b/js/src/tests/test262/intl402/ch10/10.1/10.1.1_a.js
@@ -0,0 +1,14 @@
+// Copyright 2013 Mozilla Corporation. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @description Tests that constructing a Collator doesn't create or modify
+ * unwanted properties on the RegExp constructor.
+ * @author Norbert Lindenberg
+ */
+
+$INCLUDE("testIntl.js");
+
+testForUnwantedRegExpChanges(function () {
+ new Intl.Collator("de-DE-u-co-phonebk");
+});
diff --git a/js/src/tests/test262/intl402/ch10/10.1/10.1.2.1_4.js b/js/src/tests/test262/intl402/ch10/10.1/10.1.2.1_4.js
new file mode 100644
index 000000000..22e69065e
--- /dev/null
+++ b/js/src/tests/test262/intl402/ch10/10.1/10.1.2.1_4.js
@@ -0,0 +1,21 @@
+// Copyright 2012 Mozilla Corporation. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @description Tests that for non-object values passed as this to Collator a
+ * wrapper object will be initialized and returned.
+ * @author Norbert Lindenberg
+ */
+
+var thisValues = [true, 42, "国際化"];
+
+thisValues.forEach(function (value) {
+ var collator = Intl.Collator.call(value);
+ // check that the returned object functions as a collator
+ var referenceCollator = new Intl.Collator();
+ if (Intl.Collator.prototype.compare.call(collator, "a", "b") !== referenceCollator.compare("a", "b")) {
+ $ERROR("Collator initialized from " + value + " doesn't behave like normal collator.");
+ }
+ return true;
+});
+
diff --git a/js/src/tests/test262/intl402/ch10/10.1/10.1.2_a.js b/js/src/tests/test262/intl402/ch10/10.1/10.1.2_a.js
new file mode 100644
index 000000000..de69a4809
--- /dev/null
+++ b/js/src/tests/test262/intl402/ch10/10.1/10.1.2_a.js
@@ -0,0 +1,30 @@
+// Copyright 2011-2012 Norbert Lindenberg. All rights reserved.
+// Copyright 2012 Mozilla Corporation. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @description Tests that Intl.Collator can be subclassed.
+ * @author Norbert Lindenberg
+ */
+
+$INCLUDE("testIntl.js");
+
+// get a collator and have it sort an array for comparison with the subclass
+var locales = ["tlh", "id", "en"];
+var a = ["A", "C", "E", "B", "D", "F"];
+var referenceCollator = new Intl.Collator(locales);
+var referenceSorted = a.slice().sort(referenceCollator.compare);
+
+function MyCollator(locales, options) {
+ Intl.Collator.call(this, locales, options);
+ // could initialize MyCollator properties
+}
+
+MyCollator.prototype = Object.create(Intl.Collator.prototype);
+MyCollator.prototype.constructor = MyCollator;
+// could add methods to MyCollator.prototype
+
+var collator = new MyCollator(locales);
+a.sort(collator.compare);
+testArraysAreSame(referenceSorted, a);
+
diff --git a/js/src/tests/test262/intl402/ch10/10.1/10.1.3.js b/js/src/tests/test262/intl402/ch10/10.1/10.1.3.js
new file mode 100644
index 000000000..7459d98d6
--- /dev/null
+++ b/js/src/tests/test262/intl402/ch10/10.1/10.1.3.js
@@ -0,0 +1,19 @@
+// Copyright 2012 Mozilla Corporation. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @description Tests that objects constructed by Intl.Collator have the specified internal properties.
+ * @author Norbert Lindenberg
+ */
+
+var obj = new Intl.Collator();
+
+var actualPrototype = Object.getPrototypeOf(obj);
+if (actualPrototype !== Intl.Collator.prototype) {
+ $ERROR("Prototype of object constructed by Intl.Collator isn't Intl.Collator.prototype; got " + actualPrototype);
+}
+
+if (!Object.isExtensible(obj)) {
+ $ERROR("Object constructed by Intl.Collator must be extensible.");
+}
+
diff --git a/js/src/tests/test262/intl402/ch10/10.1/10.1_L15.js b/js/src/tests/test262/intl402/ch10/10.1/10.1_L15.js
new file mode 100644
index 000000000..4dbabfd64
--- /dev/null
+++ b/js/src/tests/test262/intl402/ch10/10.1/10.1_L15.js
@@ -0,0 +1,14 @@
+// Copyright 2012 Mozilla Corporation. All rights reserved.
+// This code is governed by the license found in the LICENSE file.
+
+/**
+ * @description Tests that Intl.Collator
+ * meets the requirements for built-in objects defined by the introduction of
+ * chapter 15 of the ECMAScript Language Specification.
+ * @author Norbert Lindenberg
+ */
+
+$INCLUDE("testBuiltInObject.js");
+
+testBuiltInObject(Intl.Collator, true, true, ["supportedLocalesOf"], 0);
+
diff --git a/js/src/tests/test262/intl402/ch10/10.1/browser.js b/js/src/tests/test262/intl402/ch10/10.1/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/intl402/ch10/10.1/browser.js
diff --git a/js/src/tests/test262/intl402/ch10/10.1/shell.js b/js/src/tests/test262/intl402/ch10/10.1/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/intl402/ch10/10.1/shell.js
diff --git a/js/src/tests/test262/intl402/ch10/10.2/10.2.1.js b/js/src/tests/test262/intl402/ch10/10.2/10.2.1.js
new file mode 100644
index 000000000..9eccb073c
--- /dev/null
+++ b/js/src/tests/test262/intl402/ch10/10.2/10.2.1.js
@@ -0,0 +1,22 @@
+// Copyright 2012 Mozilla Corporation. All rights reserved.
+// This code is governed by the license found in the LICENSE file.
+
+/**
+ * @description Tests that Intl.Collator.prototype has the required attributes.
+ * @author Norbert Lindenberg
+ */
+
+var desc = Object.getOwnPropertyDescriptor(Intl.Collator, "prototype");
+if (desc === undefined) {
+ $ERROR("Intl.Collator.prototype is not defined.");
+}
+if (desc.writable) {
+ $ERROR("Intl.Collator.prototype must not be writable.");
+}
+if (desc.enumerable) {
+ $ERROR("Intl.Collator.prototype must not be enumerable.");
+}
+if (desc.configurable) {
+ $ERROR("Intl.Collator.prototype must not be configurable.");
+}
+
diff --git a/js/src/tests/test262/intl402/ch10/10.2/10.2.2_L15.js b/js/src/tests/test262/intl402/ch10/10.2/10.2.2_L15.js
new file mode 100644
index 000000000..6ffcdde84
--- /dev/null
+++ b/js/src/tests/test262/intl402/ch10/10.2/10.2.2_L15.js
@@ -0,0 +1,14 @@
+// Copyright 2012 Mozilla Corporation. All rights reserved.
+// This code is governed by the license found in the LICENSE file.
+
+/**
+ * @description Tests that Intl.Collator.supportedLocalesOf
+ * meets the requirements for built-in objects defined by the introduction of
+ * chapter 15 of the ECMAScript Language Specification.
+ * @author Norbert Lindenberg
+ */
+
+$INCLUDE("testBuiltInObject.js");
+
+testBuiltInObject(Intl.Collator.supportedLocalesOf, true, false, [], 1);
+
diff --git a/js/src/tests/test262/intl402/ch10/10.2/10.2.2_a.js b/js/src/tests/test262/intl402/ch10/10.2/10.2.2_a.js
new file mode 100644
index 000000000..5cf953ce8
--- /dev/null
+++ b/js/src/tests/test262/intl402/ch10/10.2/10.2.2_a.js
@@ -0,0 +1,27 @@
+// Copyright 2012 Google Inc. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @description Tests that Intl.Collator has a supportedLocalesOf
+ * property, and it works as planned.
+ */
+
+var defaultLocale = new Intl.Collator().resolvedOptions().locale;
+var notSupported = 'zxx'; // "no linguistic content"
+var requestedLocales = [defaultLocale, notSupported];
+
+var supportedLocales;
+
+if (!Intl.Collator.hasOwnProperty('supportedLocalesOf')) {
+ $ERROR("Intl.Collator doesn't have a supportedLocalesOf property.");
+}
+
+supportedLocales = Intl.Collator.supportedLocalesOf(requestedLocales);
+if (supportedLocales.length !== 1) {
+ $ERROR('The length of supported locales list is not 1.');
+}
+
+if (supportedLocales[0] !== defaultLocale) {
+ $ERROR('The default locale is not returned in the supported list.');
+}
+
diff --git a/js/src/tests/test262/intl402/ch10/10.2/10.2.2_b.js b/js/src/tests/test262/intl402/ch10/10.2/10.2.2_b.js
new file mode 100644
index 000000000..1b99fd8c5
--- /dev/null
+++ b/js/src/tests/test262/intl402/ch10/10.2/10.2.2_b.js
@@ -0,0 +1,13 @@
+// Copyright 2013 Mozilla Corporation. All rights reserved.
+// This code is governed by the license found in the LICENSE file.
+
+/**
+ * @description Tests that Intl.Collator.supportedLocalesOf
+ * doesn't access arguments that it's not given.
+ * @author Norbert Lindenberg
+ */
+
+$INCLUDE("testIntl.js");
+
+taintDataProperty(Object.prototype, "1");
+new Intl.Collator("und");
diff --git a/js/src/tests/test262/intl402/ch10/10.2/10.2.3_b.js b/js/src/tests/test262/intl402/ch10/10.2/10.2.3_b.js
new file mode 100644
index 000000000..aef1e746a
--- /dev/null
+++ b/js/src/tests/test262/intl402/ch10/10.2/10.2.3_b.js
@@ -0,0 +1,52 @@
+// Copyright 2012 Mozilla Corporation. All rights reserved.
+// This code is governed by the license found in the LICENSE file.
+
+/**
+ * @description Tests that Intl.Collator does not accept Unicode locale
+ * extension keys and values that are not allowed.
+ * @author Norbert Lindenberg
+ */
+
+$INCLUDE("testIntl.js");
+
+var testArray = [
+ "hello", "你好", "こんにちは",
+ "pêche", "peché", "1", "9", "10",
+ "ụ\u031B", "u\u031B\u0323", "ư\u0323", "u\u0323\u031B",
+ "Å", "Å", "A\u030A"
+];
+
+var defaultCollator = new Intl.Collator();
+var defaultOptions = defaultCollator.resolvedOptions();
+var defaultOptionsJSON = JSON.stringify(defaultOptions);
+var defaultLocale = defaultOptions.locale;
+var defaultSortedArray = testArray.slice(0).sort(defaultCollator.compare);
+
+var keyValues = {
+ "co": ["standard", "search", "invalid"],
+ "ka": ["noignore", "shifted", "invalid"],
+ "kb": ["true", "false", "invalid"],
+ "kc": ["true", "false", "invalid"],
+ "kh": ["true", "false", "invalid"],
+ "kk": ["true", "false", "invalid"],
+ "kr": ["latn-hira-hani", "hani-hira-latn", "invalid"],
+ "ks": ["level1", "level2", "level3", "level4", "identic", "invalid"],
+ "vt": ["1234-5678-9abc-edf0", "invalid"]
+};
+
+Object.getOwnPropertyNames(keyValues).forEach(function (key) {
+ keyValues[key].forEach(function (value) {
+ var collator = new Intl.Collator([defaultLocale + "-u-" + key + "-" + value]);
+ var options = collator.resolvedOptions();
+ if (options.locale !== defaultLocale) {
+ $ERROR("Locale " + options.locale + " is affected by key " +
+ key + "; value " + value + ".");
+ }
+ if (JSON.stringify(options) !== defaultOptionsJSON) {
+ $ERROR("Resolved options " + JSON.stringify(options) + " are affected by key " +
+ key + "; value " + value + ".");
+ }
+ testArraysAreSame(defaultSortedArray, testArray.sort(collator.compare));
+ });
+});
+
diff --git a/js/src/tests/test262/intl402/ch10/10.2/browser.js b/js/src/tests/test262/intl402/ch10/10.2/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/intl402/ch10/10.2/browser.js
diff --git a/js/src/tests/test262/intl402/ch10/10.2/shell.js b/js/src/tests/test262/intl402/ch10/10.2/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/intl402/ch10/10.2/shell.js
diff --git a/js/src/tests/test262/intl402/ch10/10.3/10.3.1.js b/js/src/tests/test262/intl402/ch10/10.3/10.3.1.js
new file mode 100644
index 000000000..699949e18
--- /dev/null
+++ b/js/src/tests/test262/intl402/ch10/10.3/10.3.1.js
@@ -0,0 +1,13 @@
+// Copyright 2012 Google Inc. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @description Tests that Intl.Collator.prototype.constructor is the
+ * Intl.Collator.
+ */
+
+if (Intl.Collator.prototype.constructor !== Intl.Collator) {
+ $ERROR("Intl.Collator.prototype.constructor is not the same as " +
+ "Intl.Collator");
+}
+
diff --git a/js/src/tests/test262/intl402/ch10/10.3/10.3.2_1_a_L15.js b/js/src/tests/test262/intl402/ch10/10.3/10.3.2_1_a_L15.js
new file mode 100644
index 000000000..3d49601db
--- /dev/null
+++ b/js/src/tests/test262/intl402/ch10/10.3/10.3.2_1_a_L15.js
@@ -0,0 +1,14 @@
+// Copyright 2012 Mozilla Corporation. All rights reserved.
+// This code is governed by the license found in the LICENSE file.
+
+/**
+ * @description Tests that the function returned by Intl.Collator.prototype.compare
+ * meets the requirements for built-in objects defined by the introduction of
+ * chapter 15 of the ECMAScript Language Specification.
+ * @author Norbert Lindenberg
+ */
+
+$INCLUDE("testBuiltInObject.js");
+
+testBuiltInObject(new Intl.Collator().compare, true, false, [], 2);
+
diff --git a/js/src/tests/test262/intl402/ch10/10.3/10.3.2_1_c.js b/js/src/tests/test262/intl402/ch10/10.3/10.3.2_1_c.js
new file mode 100644
index 000000000..73f2bcf09
--- /dev/null
+++ b/js/src/tests/test262/intl402/ch10/10.3/10.3.2_1_c.js
@@ -0,0 +1,36 @@
+// Copyright 2012 Mozilla Corporation. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @description Tests that compare function is bound to its Intl.Collator.
+ * @author Norbert Lindenberg
+ */
+
+$INCLUDE("testIntl.js");
+
+var strings = ["d", "O", "od", "oe", "of", "ö", "o\u0308", "X", "y", "Z", "Z.", "𠮷野家", "吉野家", "!A", "A", "b", "C"];
+var locales = [undefined, ["de"], ["de-u-co-phonebk"], ["en"], ["ja"], ["sv"]];
+var options = [
+ undefined,
+ {usage: "search"},
+ {sensitivity: "base", ignorePunctuation: true}
+];
+
+locales.forEach(function (locales) {
+ options.forEach(function (options) {
+ var collatorObj = new Intl.Collator(locales, options);
+ var compareFunc = collatorObj.compare;
+ var referenceSorted = strings.slice();
+ referenceSorted.sort(function (a, b) { return collatorObj.compare(a, b); });
+ var sorted = strings;
+ sorted.sort(compareFunc);
+ try {
+ testArraysAreSame(referenceSorted, sorted);
+ } catch (e) {
+ e.message += " (Testing with locales " + locales + "; options " +
+ (options ? JSON.stringify(options) : options) + ".)";
+ throw e;
+ }
+ });
+});
+
diff --git a/js/src/tests/test262/intl402/ch10/10.3/10.3.2_CS_a.js b/js/src/tests/test262/intl402/ch10/10.3/10.3.2_CS_a.js
new file mode 100644
index 000000000..a946245b4
--- /dev/null
+++ b/js/src/tests/test262/intl402/ch10/10.3/10.3.2_CS_a.js
@@ -0,0 +1,68 @@
+// Copyright 2012 Norbert Lindenberg. All rights reserved.
+// Copyright 2012 Mozilla Corporation. All rights reserved.
+// This code is governed by the license found in the LICENSE file.
+
+/**
+ * @description Tests that the function returned by Intl.Collator.prototype.compare
+ * returns 0 when comparing Strings that are considered canonically equivalent
+ * by the Unicode standard.
+ * @author Norbert Lindenberg
+ */
+
+var collator = new Intl.Collator();
+var pairs = [
+ // example from Unicode 5.0, section 3.7, definition D70
+ ["o\u0308", "ö"],
+ // examples from Unicode 5.0, chapter 3.11
+ ["ä\u0323", "a\u0323\u0308"],
+ ["a\u0308\u0323", "a\u0323\u0308"],
+ ["ạ\u0308", "a\u0323\u0308"],
+ ["ä\u0306", "a\u0308\u0306"],
+ ["ă\u0308", "a\u0306\u0308"],
+ // example from Unicode 5.0, chapter 3.12
+ ["\u1111\u1171\u11B6", "퓛"],
+ // examples from UTS 10, Unicode Collation Algorithm
+ ["Å", "Å"],
+ ["Å", "A\u030A"],
+ ["x\u031B\u0323", "x\u0323\u031B"],
+ ["ự", "ụ\u031B"],
+ ["ự", "u\u031B\u0323"],
+ ["ự", "ư\u0323"],
+ ["ự", "u\u0323\u031B"],
+ // examples from UAX 15, Unicode Normalization Forms
+ ["Ç", "C\u0327"],
+ ["q\u0307\u0323", "q\u0323\u0307"],
+ ["가", "\u1100\u1161"],
+ ["Å", "A\u030A"],
+ ["Ω", "Ω"],
+ ["Å", "A\u030A"],
+ ["ô", "o\u0302"],
+ ["ṩ", "s\u0323\u0307"],
+ ["ḋ\u0323", "d\u0323\u0307"],
+ ["ḋ\u0323", "ḍ\u0307"],
+ ["q\u0307\u0323", "q\u0323\u0307"],
+ // examples involving supplementary characters from UCD NormalizationTest.txt
+ ["\uD834\uDD5E", "\uD834\uDD57\uD834\uDD65"],
+ ["\uD87E\uDC2B", "北"]
+
+];
+var i;
+for (i = 0; i < pairs.length; i++) {
+ var pair = pairs[i];
+ if (collator.compare(pair[0], pair[1]) !== 0) {
+ $ERROR("Collator.compare considers " + pair[0] + " (" + toU(pair[0]) +
+ ") ≠ " + pair[1] + " (" + toU(pair[1]) + ").");
+ }
+}
+
+function toU(s) {
+ var result = "";
+ var escape = "\\u0000";
+ var i;
+ for (i = 0; i < s.length; i++) {
+ var hex = s.charCodeAt(i).toString(16);
+ result += escape.substring(0, escape.length - hex.length) + hex;
+ }
+ return result;
+}
+
diff --git a/js/src/tests/test262/intl402/ch10/10.3/10.3.2_CS_b_NN.js b/js/src/tests/test262/intl402/ch10/10.3/10.3.2_CS_b_NN.js
new file mode 100644
index 000000000..c417d2b8a
--- /dev/null
+++ b/js/src/tests/test262/intl402/ch10/10.3/10.3.2_CS_b_NN.js
@@ -0,0 +1,22 @@
+// Copyright 2012 Mozilla Corporation. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @description Tests that the compare function isn't entirely unreasonable.
+ * This test is not normative.
+ * @author Norbert Lindenberg
+ */
+
+$INCLUDE("testIntl.js");
+
+// this test should be valid at least for the following locales
+var locales = ["de", "en", "es", "fr", "it"];
+locales = Intl.Collator.supportedLocalesOf(locales, {localeMatcher: "lookup"});
+locales.forEach(function (locale) {
+ var collator = new Intl.Collator([locale], {sensitivity: "variant", localeMatcher: "lookup"});
+ var a = ["L", "X", "C", "k", "Z", "H", "d", "m", "w", "A", "i", "f", "y", "E", "N", "V", "g", "J", "b"];
+ a.sort(collator.compare);
+ var expected = ["A", "b", "C", "d", "E", "f", "g", "H", "i", "J", "k", "L", "m", "N", "V", "w", "X", "y", "Z"];
+ testArraysAreSame(expected, a);
+});
+
diff --git a/js/src/tests/test262/intl402/ch10/10.3/10.3.2_CS_c_NN.js b/js/src/tests/test262/intl402/ch10/10.3/10.3.2_CS_c_NN.js
new file mode 100644
index 000000000..5d5060be5
--- /dev/null
+++ b/js/src/tests/test262/intl402/ch10/10.3/10.3.2_CS_c_NN.js
@@ -0,0 +1,22 @@
+// Copyright 2011-2012 Norbert Lindenberg. All rights reserved.
+// Copyright 2012 Mozilla Corporation. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @description Tests that the compare function supports phonebook sorting if it says it does.
+ * This test is not normative.
+ * @author Norbert Lindenberg
+ */
+
+$INCLUDE("testIntl.js");
+
+// this test should be valid at least for the following locales
+var locales = ["de-DE-u-co-phonebk", "de-u-co-phonebk"];
+var collator = new Intl.Collator(locales, {localeMatcher: "lookup"});
+if (locales.indexOf(collator.resolvedOptions().locale) !== -1) {
+ var a = ["A", "b", "Af", "Ab", "od", "off", "Ä", "ö"];
+ a.sort(collator.compare);
+ var expected = ["A", "Ab", "Ä", "Af", "b", "od", "ö", "off"];
+ testArraysAreSame(expected, a);
+}
+
diff --git a/js/src/tests/test262/intl402/ch10/10.3/10.3.2_CS_d_NN.js b/js/src/tests/test262/intl402/ch10/10.3/10.3.2_CS_d_NN.js
new file mode 100644
index 000000000..be5f1aa33
--- /dev/null
+++ b/js/src/tests/test262/intl402/ch10/10.3/10.3.2_CS_d_NN.js
@@ -0,0 +1,34 @@
+// Copyright 2011-2012 Norbert Lindenberg. All rights reserved.
+// Copyright 2012 Mozilla Corporation. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @description Tests that the compare function supports different sensitivity settings.
+ * This test is not normative.
+ * @author Norbert Lindenberg
+ */
+
+$INCLUDE("testIntl.js");
+
+// this test should be valid at least for the following locales
+var locales = ["de", "en", "es", "it"];
+locales = Intl.Collator.supportedLocalesOf(locales, {localeMatcher: "lookup"});
+locales.forEach(function (locale) {
+ var target = "Aa";
+ var input = ["Aa", "bA", "E", "b", "aA", "fC", "áÁ", "Aã"];
+ var expected = {
+ "base": ["Aa", "aA", "áÁ", "Aã"],
+ "accent": ["Aa", "aA"],
+ "case": ["Aa", "Aã"],
+ "variant": ["Aa"]
+ };
+ Object.getOwnPropertyNames(expected).forEach(function (sensitivity) {
+ var collator = new Intl.Collator([locale], {usage: "search",
+ sensitivity: sensitivity, localeMatcher: "lookup"});
+ var matches = input.filter(function (v) {
+ return collator.compare(v, target) === 0;
+ });
+ testArraysAreSame(expected[sensitivity], matches);
+ });
+});
+
diff --git a/js/src/tests/test262/intl402/ch10/10.3/10.3.2_L15.js b/js/src/tests/test262/intl402/ch10/10.3/10.3.2_L15.js
new file mode 100644
index 000000000..5845ea3ca
--- /dev/null
+++ b/js/src/tests/test262/intl402/ch10/10.3/10.3.2_L15.js
@@ -0,0 +1,14 @@
+// Copyright 2012 Mozilla Corporation. All rights reserved.
+// This code is governed by the license found in the LICENSE file.
+
+/**
+ * @description Tests that the getter for Intl.Collator.prototype.compare
+ * meets the requirements for built-in objects defined by the introduction of
+ * chapter 15 of the ECMAScript Language Specification.
+ * @author Norbert Lindenberg
+ */
+
+$INCLUDE("testBuiltInObject.js");
+
+testBuiltInObject(Object.getOwnPropertyDescriptor(Intl.Collator.prototype, "compare").get , true, false, [], 0);
+
diff --git a/js/src/tests/test262/intl402/ch10/10.3/10.3.3.js b/js/src/tests/test262/intl402/ch10/10.3/10.3.3.js
new file mode 100644
index 000000000..bc6b4fabb
--- /dev/null
+++ b/js/src/tests/test262/intl402/ch10/10.3/10.3.3.js
@@ -0,0 +1,47 @@
+// Copyright 2012 Mozilla Corporation. All rights reserved.
+// This code is governed by the license found in the LICENSE file.
+
+/**
+ * @description Tests that the object returned by Intl.Collator.prototype.resolvedOptions
+ * has the right properties.
+ * @author Norbert Lindenberg
+ */
+
+$INCLUDE("testIntl.js");
+
+var actual = new Intl.Collator().resolvedOptions();
+
+var actual2 = new Intl.Collator().resolvedOptions();
+if (actual2 === actual) {
+ $ERROR("resolvedOptions returned the same object twice.");
+}
+
+// source: CLDR file common/bcp47/collation.xml; version CLDR 21.
+var collations = [
+ "default", // added
+ "big5han",
+ "dict",
+ "direct",
+ "ducet",
+ "gb2312",
+ "phonebk",
+ "phonetic",
+ "pinyin",
+ "reformed",
+ // "search", // excluded
+ "searchjl",
+ // "standard", // excluded
+ "stroke",
+ "trad",
+ "unihan"
+];
+
+// this assumes the default values where the specification provides them
+mustHaveProperty(actual, "locale", isCanonicalizedStructurallyValidLanguageTag);
+mustHaveProperty(actual, "usage", ["sort"]);
+mustHaveProperty(actual, "sensitivity", ["variant"]);
+mustHaveProperty(actual, "ignorePunctuation", [false]);
+mustHaveProperty(actual, "collation", collations);
+mayHaveProperty(actual, "numeric", [true, false]);
+mayHaveProperty(actual, "caseFirst", ["upper", "lower", "false"]);
+
diff --git a/js/src/tests/test262/intl402/ch10/10.3/10.3.3_L15.js b/js/src/tests/test262/intl402/ch10/10.3/10.3.3_L15.js
new file mode 100644
index 000000000..718cc9fea
--- /dev/null
+++ b/js/src/tests/test262/intl402/ch10/10.3/10.3.3_L15.js
@@ -0,0 +1,14 @@
+// Copyright 2012 Mozilla Corporation. All rights reserved.
+// This code is governed by the license found in the LICENSE file.
+
+/**
+ * @description Tests that Intl.Collator.prototype.resolvedOptions
+ * meets the requirements for built-in objects defined by the introduction of
+ * chapter 15 of the ECMAScript Language Specification.
+ * @author Norbert Lindenberg
+ */
+
+$INCLUDE("testBuiltInObject.js");
+
+testBuiltInObject(Intl.Collator.prototype.resolvedOptions, true, false, [], 0);
+
diff --git a/js/src/tests/test262/intl402/ch10/10.3/10.3_L15.js b/js/src/tests/test262/intl402/ch10/10.3/10.3_L15.js
new file mode 100644
index 000000000..60719736c
--- /dev/null
+++ b/js/src/tests/test262/intl402/ch10/10.3/10.3_L15.js
@@ -0,0 +1,14 @@
+// Copyright 2012 Mozilla Corporation. All rights reserved.
+// This code is governed by the license found in the LICENSE file.
+
+/**
+ * @description Tests that Intl.Collator.prototype
+ * meets the requirements for built-in objects defined by the introduction of
+ * chapter 15 of the ECMAScript Language Specification.
+ * @author Norbert Lindenberg
+ */
+
+$INCLUDE("testBuiltInObject.js");
+
+testBuiltInObject(Intl.Collator.prototype, false, false, ["constructor", "compare", "resolvedOptions"]);
+
diff --git a/js/src/tests/test262/intl402/ch10/10.3/10.3_a.js b/js/src/tests/test262/intl402/ch10/10.3/10.3_a.js
new file mode 100644
index 000000000..aa2e52845
--- /dev/null
+++ b/js/src/tests/test262/intl402/ch10/10.3/10.3_a.js
@@ -0,0 +1,15 @@
+// Copyright 2012 Google Inc. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @description Tests that Intl.Collator.prototype is an object that
+ * has been initialized as an Intl.Collator.
+ */
+
+// test by calling a function that would fail if "this" were not an object
+// initialized as an Intl.Collator
+if (Intl.Collator.prototype.compare("aаあ아", "aаあ아") !== 0) {
+ $ERROR("Intl.Collator.prototype is not an object that has been " +
+ "initialized as an Intl.Collator.");
+}
+
diff --git a/js/src/tests/test262/intl402/ch10/10.3/10.3_b.js b/js/src/tests/test262/intl402/ch10/10.3/10.3_b.js
new file mode 100644
index 000000000..9c3c2db32
--- /dev/null
+++ b/js/src/tests/test262/intl402/ch10/10.3/10.3_b.js
@@ -0,0 +1,33 @@
+// Copyright 2012 Mozilla Corporation. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @description Tests that Intl.Collator.prototype functions throw a
+ * TypeError if called on a non-object value or an object that hasn't been
+ * initialized as a Collator.
+ * @author Norbert Lindenberg
+ */
+
+var functions = {
+ "compare getter": Object.getOwnPropertyDescriptor(Intl.Collator.prototype, "compare").get,
+ resolvedOptions: Intl.Collator.prototype.resolvedOptions
+};
+var invalidTargets = [undefined, null, true, 0, "Collator", [], {}];
+
+Object.getOwnPropertyNames(functions).forEach(function (functionName) {
+ var f = functions[functionName];
+ invalidTargets.forEach(function (target) {
+ var error;
+ try {
+ f.call(target);
+ } catch (e) {
+ error = e;
+ }
+ if (error === undefined) {
+ $ERROR("Calling " + functionName + " on " + target + " was not rejected.");
+ } else if (error.name !== "TypeError") {
+ $ERROR("Calling " + functionName + " on " + target + " was rejected with wrong error " + error.name + ".");
+ }
+ });
+});
+
diff --git a/js/src/tests/test262/intl402/ch10/10.3/browser.js b/js/src/tests/test262/intl402/ch10/10.3/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/intl402/ch10/10.3/browser.js
diff --git a/js/src/tests/test262/intl402/ch10/10.3/shell.js b/js/src/tests/test262/intl402/ch10/10.3/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/intl402/ch10/10.3/shell.js
diff --git a/js/src/tests/test262/intl402/ch10/10.4/10.4_a.js b/js/src/tests/test262/intl402/ch10/10.4/10.4_a.js
new file mode 100644
index 000000000..7527f65eb
--- /dev/null
+++ b/js/src/tests/test262/intl402/ch10/10.4/10.4_a.js
@@ -0,0 +1,15 @@
+// Copyright 2012 Mozilla Corporation. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @description Tests that Intl.Collator instances have the specified properties.
+ * @author Norbert Lindenberg
+ */
+
+var obj = new Intl.Collator();
+
+var toStringValue = Object.prototype.toString.call(obj);
+if (toStringValue !== "[object Object]") {
+ $ERROR("Intl.Collator instance produces wrong [[Class]] - toString returns " + toStringValue + ".");
+}
+
diff --git a/js/src/tests/test262/intl402/ch10/10.4/browser.js b/js/src/tests/test262/intl402/ch10/10.4/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/intl402/ch10/10.4/browser.js
diff --git a/js/src/tests/test262/intl402/ch10/10.4/shell.js b/js/src/tests/test262/intl402/ch10/10.4/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/intl402/ch10/10.4/shell.js
diff --git a/js/src/tests/test262/intl402/ch10/browser.js b/js/src/tests/test262/intl402/ch10/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/intl402/ch10/browser.js
diff --git a/js/src/tests/test262/intl402/ch10/shell.js b/js/src/tests/test262/intl402/ch10/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/intl402/ch10/shell.js
diff --git a/js/src/tests/test262/intl402/ch11/11.1/11.1.1_1.js b/js/src/tests/test262/intl402/ch11/11.1/11.1.1_1.js
new file mode 100644
index 000000000..33af16975
--- /dev/null
+++ b/js/src/tests/test262/intl402/ch11/11.1/11.1.1_1.js
@@ -0,0 +1,43 @@
+// Copyright 2012 Mozilla Corporation. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @description Tests that an object can't be re-initialized as a NumberFormat.
+ * @author Norbert Lindenberg
+ */
+
+$INCLUDE("testIntl.js");
+
+testWithIntlConstructors(function (Constructor) {
+ var obj, error;
+
+ // variant 1: use constructor in a "new" expression
+ obj = new Constructor();
+ try {
+ Intl.NumberFormat.call(obj);
+ } catch (e) {
+ error = e;
+ }
+ if (error === undefined) {
+ $ERROR("Re-initializing object created with \"new\" as NumberFormat was not rejected.");
+ } else if (error.name !== "TypeError") {
+ $ERROR("Re-initializing object created with \"new\" as NumberFormat was rejected with wrong error " + error.name + ".");
+ }
+
+ // variant 2: use constructor as a function
+ obj = Constructor.call({});
+ error = undefined;
+ try {
+ Intl.NumberFormat.call(obj);
+ } catch (e) {
+ error = e;
+ }
+ if (error === undefined) {
+ $ERROR("Re-initializing object created with constructor as function as NumberFormat was not rejected.");
+ } else if (error.name !== "TypeError") {
+ $ERROR("Re-initializing object created with constructor as function as NumberFormat was rejected with wrong error " + error.name + ".");
+ }
+
+ return true;
+});
+
diff --git a/js/src/tests/test262/intl402/ch11/11.1/11.1.1_15.js b/js/src/tests/test262/intl402/ch11/11.1/11.1.1_15.js
new file mode 100644
index 000000000..4d0467428
--- /dev/null
+++ b/js/src/tests/test262/intl402/ch11/11.1/11.1.1_15.js
@@ -0,0 +1,13 @@
+// Copyright 2012 Mozilla Corporation. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @description Tests that the option style is processed correctly.
+ * @author Norbert Lindenberg
+ */
+
+$INCLUDE("testIntl.js");
+
+testOption(Intl.NumberFormat, "style", "string", ["decimal", "percent", "currency"], "decimal",
+ {extra: {"currency": {currency: "CNY"}}});
+
diff --git a/js/src/tests/test262/intl402/ch11/11.1/11.1.1_17.js b/js/src/tests/test262/intl402/ch11/11.1/11.1.1_17.js
new file mode 100644
index 000000000..08c0e8e5c
--- /dev/null
+++ b/js/src/tests/test262/intl402/ch11/11.1/11.1.1_17.js
@@ -0,0 +1,81 @@
+// Copyright 2012 Mozilla Corporation. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @description Tests that the option currency is processed correctly.
+ * @author Norbert Lindenberg
+ */
+
+var validValues = ["CNY", "USD", "EUR", "IDR", "jpy", {toString: function () {return "INR";}}];
+var invalidValues = ["$", "SFr.", "US$", "ßP", {toString: function () {return;}}];
+
+var defaultLocale = new Intl.NumberFormat().resolvedOptions().locale;
+
+validValues.forEach(function (value) {
+ var format, actual, expected;
+
+ // with currency style, we should get the upper case form back
+ format = new Intl.NumberFormat([defaultLocale], {style: "currency", currency: value});
+ actual = format.resolvedOptions().currency;
+ expected = value.toString().toUpperCase();
+ if (actual !== expected) {
+ $ERROR("Incorrect resolved currency with currency style - expected " +
+ expected + "; got " + actual + ".");
+ }
+
+ // without currency style, we shouldn't get any currency back
+ format = new Intl.NumberFormat([defaultLocale], {currency: value});
+ actual = format.resolvedOptions().currency;
+ expected = undefined;
+ if (actual !== expected) {
+ $ERROR("Incorrect resolved currency with non-currency style - expected " +
+ expected + "; got " + actual + ".");
+ }
+
+ // currencies specified through the locale must be ignored
+ format = new Intl.NumberFormat([defaultLocale + "-u-cu-krw"], {style: "currency", currency: value});
+ actual = format.resolvedOptions().currency;
+ expected = value.toString().toUpperCase();
+ if (actual !== expected) {
+ $ERROR("Incorrect resolved currency with -u-cu- and currency style - expected " +
+ expected + "; got " + actual + ".");
+ }
+
+ format = new Intl.NumberFormat([defaultLocale + "-u-cu-krw"], {currency: value});
+ actual = format.resolvedOptions().currency;
+ expected = undefined;
+ if (actual !== expected) {
+ $ERROR("Incorrect resolved currency with -u-cu- and non-currency style - expected " +
+ expected + "; got " + actual + ".");
+ }
+});
+
+invalidValues.forEach(function (value) {
+ function expectError(f) {
+ var error;
+ try {
+ f();
+ } catch (e) {
+ error = e;
+ }
+ if (error === undefined) {
+ $ERROR("Invalid currency value " + value + " was not rejected.");
+ } else if (error.name !== "RangeError") {
+ $ERROR("Invalid currency value " + value + " was rejected with wrong error " + error.name + ".");
+ }
+ }
+
+ expectError(function () {
+ return new Intl.NumberFormat([defaultLocale], {style: "currency", currency: value});
+ });
+ expectError(function () {
+ return new Intl.NumberFormat([defaultLocale], {currency: value});
+ });
+ expectError(function () {
+ return new Intl.NumberFormat([defaultLocale + "-u-cu-krw"], {style: "currency", currency: value});
+ });
+ expectError(function () {
+ return new Intl.NumberFormat([defaultLocale + "-u-cu-krw"], {currency: value});
+ });
+});
+
diff --git a/js/src/tests/test262/intl402/ch11/11.1/11.1.1_19.js b/js/src/tests/test262/intl402/ch11/11.1/11.1.1_19.js
new file mode 100644
index 000000000..e41ca5bec
--- /dev/null
+++ b/js/src/tests/test262/intl402/ch11/11.1/11.1.1_19.js
@@ -0,0 +1,31 @@
+// Copyright 2012 Mozilla Corporation. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @description Tests that the currency style can not be used without a specified currency.
+ * @author Norbert Lindenberg
+ */
+
+var defaultLocale = new Intl.NumberFormat().resolvedOptions().locale;
+
+function expectError(f) {
+ var error;
+ try {
+ f();
+ } catch (e) {
+ error = e;
+ }
+ if (error === undefined) {
+ $ERROR("Invalid currency value " + value + " was not rejected.");
+ } else if (error.name !== "TypeError") {
+ $ERROR("Invalid currency value " + value + " was rejected with wrong error " + error.name + ".");
+ }
+}
+
+expectError(function () {
+ return new Intl.NumberFormat([defaultLocale], {style: "currency"});
+});
+expectError(function () {
+ return new Intl.NumberFormat([defaultLocale + "-u-cu-krw"], {style: "currency"});
+});
+
diff --git a/js/src/tests/test262/intl402/ch11/11.1/11.1.1_20_c.js b/js/src/tests/test262/intl402/ch11/11.1/11.1.1_20_c.js
new file mode 100644
index 000000000..6a705ab33
--- /dev/null
+++ b/js/src/tests/test262/intl402/ch11/11.1/11.1.1_20_c.js
@@ -0,0 +1,196 @@
+// Copyright 2011-2012 Norbert Lindenberg. All rights reserved.
+// Copyright 2012 Mozilla Corporation. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @description Tests that the number of fractional digits is determined correctly for currencies.
+ * @author Norbert Lindenberg
+ */
+
+// data from http://www.currency-iso.org/dl_iso_table_a1.xml, 2013-02-25
+var currencyDigits = {
+ AED: 2,
+ AFN: 2,
+ ALL: 2,
+ AMD: 2,
+ ANG: 2,
+ AOA: 2,
+ ARS: 2,
+ AUD: 2,
+ AWG: 2,
+ AZN: 2,
+ BAM: 2,
+ BBD: 2,
+ BDT: 2,
+ BGN: 2,
+ BHD: 3,
+ BIF: 0,
+ BMD: 2,
+ BND: 2,
+ BOB: 2,
+ BOV: 2,
+ BRL: 2,
+ BSD: 2,
+ BTN: 2,
+ BWP: 2,
+ BYR: 0,
+ BZD: 2,
+ CAD: 2,
+ CDF: 2,
+ CHE: 2,
+ CHF: 2,
+ CHW: 2,
+ CLF: 4,
+ CLP: 0,
+ CNY: 2,
+ COP: 2,
+ COU: 2,
+ CRC: 2,
+ CUC: 2,
+ CUP: 2,
+ CVE: 2,
+ CZK: 2,
+ DJF: 0,
+ DKK: 2,
+ DOP: 2,
+ DZD: 2,
+ EGP: 2,
+ ERN: 2,
+ ETB: 2,
+ EUR: 2,
+ FJD: 2,
+ FKP: 2,
+ GBP: 2,
+ GEL: 2,
+ GHS: 2,
+ GIP: 2,
+ GMD: 2,
+ GNF: 0,
+ GTQ: 2,
+ GYD: 2,
+ HKD: 2,
+ HNL: 2,
+ HRK: 2,
+ HTG: 2,
+ HUF: 2,
+ IDR: 2,
+ ILS: 2,
+ INR: 2,
+ IQD: 3,
+ IRR: 2,
+ ISK: 0,
+ JMD: 2,
+ JOD: 3,
+ JPY: 0,
+ KES: 2,
+ KGS: 2,
+ KHR: 2,
+ KMF: 0,
+ KPW: 2,
+ KRW: 0,
+ KWD: 3,
+ KYD: 2,
+ KZT: 2,
+ LAK: 2,
+ LBP: 2,
+ LKR: 2,
+ LRD: 2,
+ LSL: 2,
+ LTL: 2,
+ LVL: 2,
+ LYD: 3,
+ MAD: 2,
+ MDL: 2,
+ MGA: 2,
+ MKD: 2,
+ MMK: 2,
+ MNT: 2,
+ MOP: 2,
+ MRO: 2,
+ MUR: 2,
+ MVR: 2,
+ MWK: 2,
+ MXN: 2,
+ MXV: 2,
+ MYR: 2,
+ MZN: 2,
+ NAD: 2,
+ NGN: 2,
+ NIO: 2,
+ NOK: 2,
+ NPR: 2,
+ NZD: 2,
+ OMR: 3,
+ PAB: 2,
+ PEN: 2,
+ PGK: 2,
+ PHP: 2,
+ PKR: 2,
+ PLN: 2,
+ PYG: 0,
+ QAR: 2,
+ RON: 2,
+ RSD: 2,
+ RUB: 2,
+ RWF: 0,
+ SAR: 2,
+ SBD: 2,
+ SCR: 2,
+ SDG: 2,
+ SEK: 2,
+ SGD: 2,
+ SHP: 2,
+ SLL: 2,
+ SOS: 2,
+ SRD: 2,
+ SSP: 2,
+ STD: 2,
+ SVC: 2,
+ SYP: 2,
+ SZL: 2,
+ THB: 2,
+ TJS: 2,
+ TMT: 2,
+ TND: 3,
+ TOP: 2,
+ TRY: 2,
+ TTD: 2,
+ TWD: 2,
+ TZS: 2,
+ UAH: 2,
+ UGX: 0,
+ USD: 2,
+ USN: 2,
+ USS: 2,
+ UYI: 0,
+ UYU: 2,
+ UZS: 2,
+ VEF: 2,
+ VND: 0,
+ VUV: 0,
+ WST: 2,
+ XAF: 0,
+ XCD: 2,
+ XOF: 0,
+ XPF: 0,
+ YER: 2,
+ ZAR: 2,
+ ZMW: 2,
+ ZWL: 2
+};
+
+Object.getOwnPropertyNames(currencyDigits).forEach(function (currency) {
+ var digits = currencyDigits[currency];
+ format = Intl.NumberFormat([], {style: "currency", currency: currency});
+ var min = format.resolvedOptions().minimumFractionDigits;
+ var max = format.resolvedOptions().maximumFractionDigits;
+ if (min !== digits) {
+ $ERROR("Didn't get correct minimumFractionDigits for currency " +
+ currency + "; expected " + digits + ", got " + min + ".");
+ }
+ if (max !== digits) {
+ $ERROR("Didn't get correct maximumFractionDigits for currency " +
+ currency + "; expected " + digits + ", got " + max + ".");
+ }
+});
+
diff --git a/js/src/tests/test262/intl402/ch11/11.1/11.1.1_21.js b/js/src/tests/test262/intl402/ch11/11.1/11.1.1_21.js
new file mode 100644
index 000000000..1751b8b57
--- /dev/null
+++ b/js/src/tests/test262/intl402/ch11/11.1/11.1.1_21.js
@@ -0,0 +1,15 @@
+// Copyright 2012 Mozilla Corporation. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @description Tests that the option currencyDisplay is processed correctly.
+ * @author Norbert Lindenberg
+ */
+
+$INCLUDE("testIntl.js");
+
+testOption(Intl.NumberFormat, "currencyDisplay", "string", ["code", "symbol", "name"],
+ "symbol", {extra: {any: {style: "currency", currency: "XDR"}}});
+testOption(Intl.NumberFormat, "currencyDisplay", "string", ["code", "symbol", "name"],
+ undefined, {noReturn: true});
+
diff --git a/js/src/tests/test262/intl402/ch11/11.1/11.1.1_32.js b/js/src/tests/test262/intl402/ch11/11.1/11.1.1_32.js
new file mode 100644
index 000000000..9196318ef
--- /dev/null
+++ b/js/src/tests/test262/intl402/ch11/11.1/11.1.1_32.js
@@ -0,0 +1,44 @@
+// Copyright 2013 Mozilla Corporation. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @description Tests that the options minimumSignificantDigits and
+ * maximumSignificantDigits are read in the right sequence.
+ * @author Norbert Lindenberg
+ */
+
+var read = 0;
+
+function readMinimumSignificantDigits() {
+ ++read;
+ if (read === 1) {
+ return 0; // invalid value, but on first read that's OK
+ } else if (read === 3) {
+ return 1; // valid value
+ } else {
+ $ERROR("minimumSignificantDigits read out of sequence: " + read + ".");
+ }
+}
+
+function readMaximumSignificantDigits() {
+ ++read;
+ if (read === 2) {
+ return 0; // invalid value, but on first read that's OK
+ } else if (read === 4) {
+ return 1; // valid value
+ } else {
+ $ERROR("maximumSignificantDigits read out of sequence: " + read + ".");
+ }
+}
+
+var options = {};
+Object.defineProperty(options, "minimumSignificantDigits",
+ { get: readMinimumSignificantDigits });
+Object.defineProperty(options, "maximumSignificantDigits",
+ { get: readMaximumSignificantDigits });
+
+new Intl.NumberFormat("de", options);
+
+if (read !== 4) {
+ $ERROR("insuffient number of property reads: " + read + ".");
+}
diff --git a/js/src/tests/test262/intl402/ch11/11.1/11.1.1_34.js b/js/src/tests/test262/intl402/ch11/11.1/11.1.1_34.js
new file mode 100644
index 000000000..98ba9a062
--- /dev/null
+++ b/js/src/tests/test262/intl402/ch11/11.1/11.1.1_34.js
@@ -0,0 +1,12 @@
+// Copyright 2012 Mozilla Corporation. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @description Tests that the option useGrouping is processed correctly.
+ * @author Norbert Lindenberg
+ */
+
+$INCLUDE("testIntl.js");
+
+testOption(Intl.NumberFormat, "useGrouping", "boolean", undefined, true);
+
diff --git a/js/src/tests/test262/intl402/ch11/11.1/11.1.1_6.js b/js/src/tests/test262/intl402/ch11/11.1/11.1.1_6.js
new file mode 100644
index 000000000..5b9d342eb
--- /dev/null
+++ b/js/src/tests/test262/intl402/ch11/11.1/11.1.1_6.js
@@ -0,0 +1,18 @@
+// Copyright 2012 Mozilla Corporation. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @description Tests that the behavior of a Record is not affected by adversarial
+ * changes to Object.prototype.
+ * @author Norbert Lindenberg
+ */
+
+$INCLUDE("testIntl.js");
+
+taintProperties(["localeMatcher"]);
+
+var locale = new Intl.NumberFormat(undefined, {localeMatcher: "lookup"}).resolvedOptions().locale;
+if (!isCanonicalizedStructurallyValidLanguageTag(locale)) {
+ $ERROR("NumberFormat returns invalid locale " + locale + ".");
+}
+
diff --git a/js/src/tests/test262/intl402/ch11/11.1/11.1.1_7.js b/js/src/tests/test262/intl402/ch11/11.1/11.1.1_7.js
new file mode 100644
index 000000000..4b13b245b
--- /dev/null
+++ b/js/src/tests/test262/intl402/ch11/11.1/11.1.1_7.js
@@ -0,0 +1,12 @@
+// Copyright 2012 Mozilla Corporation. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @description Tests that the option localeMatcher is processed correctly.
+ * @author Norbert Lindenberg
+ */
+
+$INCLUDE("testIntl.js");
+
+testOption(Intl.NumberFormat, "localeMatcher", "string", ["lookup", "best fit"], "best fit", {noReturn: true});
+
diff --git a/js/src/tests/test262/intl402/ch11/11.1/11.1.1_a.js b/js/src/tests/test262/intl402/ch11/11.1/11.1.1_a.js
new file mode 100644
index 000000000..611816b61
--- /dev/null
+++ b/js/src/tests/test262/intl402/ch11/11.1/11.1.1_a.js
@@ -0,0 +1,18 @@
+// Copyright 2013 Mozilla Corporation. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @description Tests that constructing a NumberFormat doesn't create or modify
+ * unwanted properties on the RegExp constructor.
+ * @author Norbert Lindenberg
+ */
+
+$INCLUDE("testIntl.js");
+
+testForUnwantedRegExpChanges(function () {
+ new Intl.NumberFormat("de-DE-u-nu-latn");
+});
+
+testForUnwantedRegExpChanges(function () {
+ new Intl.NumberFormat("de-DE-u-nu-latn", {style: "currency", currency: "EUR"});
+});
diff --git a/js/src/tests/test262/intl402/ch11/11.1/11.1.2.1_4.js b/js/src/tests/test262/intl402/ch11/11.1/11.1.2.1_4.js
new file mode 100644
index 000000000..18b5b98fa
--- /dev/null
+++ b/js/src/tests/test262/intl402/ch11/11.1/11.1.2.1_4.js
@@ -0,0 +1,21 @@
+// Copyright 2012 Mozilla Corporation. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @description Tests that for non-object values passed as this to NumberFormat a
+ * wrapper object will be initialized and returned.
+ * @author Norbert Lindenberg
+ */
+
+var thisValues = [true, 42, "国際化"];
+
+thisValues.forEach(function (value) {
+ var format = Intl.NumberFormat.call(value);
+ // check that the returned object functions as a number format
+ var referenceFormat = new Intl.NumberFormat();
+ if (Intl.NumberFormat.prototype.format.call(format, 12.3456) !== referenceFormat.format(12.3456)) {
+ $ERROR("NumberFormat initialized from " + value + " doesn't behave like normal number format.");
+ }
+ return true;
+});
+
diff --git a/js/src/tests/test262/intl402/ch11/11.1/11.1.2.js b/js/src/tests/test262/intl402/ch11/11.1/11.1.2.js
new file mode 100644
index 000000000..0ca8cbbda
--- /dev/null
+++ b/js/src/tests/test262/intl402/ch11/11.1/11.1.2.js
@@ -0,0 +1,30 @@
+// Copyright 2011-2012 Norbert Lindenberg. All rights reserved.
+// Copyright 2012 Mozilla Corporation. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @description Tests that Intl.NumberFormat can be subclassed.
+ * @author Norbert Lindenberg
+ */
+
+$INCLUDE("testIntl.js");
+
+// get a number format and have it format an array of numbers for comparison with the subclass
+var locales = ["tlh", "id", "en"];
+var a = [0, 1, -1, -123456.789, -Infinity, NaN];
+var referenceNumberFormat = new Intl.NumberFormat(locales);
+var referenceFormatted = a.map(referenceNumberFormat.format);
+
+function MyNumberFormat(locales, options) {
+ Intl.NumberFormat.call(this, locales, options);
+ // could initialize MyNumberFormat properties
+}
+
+MyNumberFormat.prototype = Object.create(Intl.NumberFormat.prototype);
+MyNumberFormat.prototype.constructor = MyNumberFormat;
+// could add methods to MyNumberFormat.prototype
+
+var format = new MyNumberFormat(locales);
+var actual = a.map(format.format);
+testArraysAreSame(referenceFormatted, actual);
+
diff --git a/js/src/tests/test262/intl402/ch11/11.1/11.1.3.js b/js/src/tests/test262/intl402/ch11/11.1/11.1.3.js
new file mode 100644
index 000000000..f0bfb5552
--- /dev/null
+++ b/js/src/tests/test262/intl402/ch11/11.1/11.1.3.js
@@ -0,0 +1,19 @@
+// Copyright 2012 Mozilla Corporation. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @description Tests that objects constructed by Intl.NumberFormat have the specified internal properties.
+ * @author Norbert Lindenberg
+ */
+
+var obj = new Intl.NumberFormat();
+
+var actualPrototype = Object.getPrototypeOf(obj);
+if (actualPrototype !== Intl.NumberFormat.prototype) {
+ $ERROR("Prototype of object constructed by Intl.NumberFormat isn't Intl.NumberFormat.prototype; got " + actualPrototype);
+}
+
+if (!Object.isExtensible(obj)) {
+ $ERROR("Object constructed by Intl.NumberFormat must be extensible.");
+}
+
diff --git a/js/src/tests/test262/intl402/ch11/11.1/11.1_L15.js b/js/src/tests/test262/intl402/ch11/11.1/11.1_L15.js
new file mode 100644
index 000000000..e40ffc53e
--- /dev/null
+++ b/js/src/tests/test262/intl402/ch11/11.1/11.1_L15.js
@@ -0,0 +1,14 @@
+// Copyright 2012 Mozilla Corporation. All rights reserved.
+// This code is governed by the license found in the LICENSE file.
+
+/**
+ * @description Tests that Intl.NumberFormat
+ * meets the requirements for built-in objects defined by the introduction of
+ * chapter 15 of the ECMAScript Language Specification.
+ * @author Norbert Lindenberg
+ */
+
+$INCLUDE("testBuiltInObject.js");
+
+testBuiltInObject(Intl.NumberFormat, true, true, ["supportedLocalesOf"], 0);
+
diff --git a/js/src/tests/test262/intl402/ch11/11.1/browser.js b/js/src/tests/test262/intl402/ch11/11.1/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/intl402/ch11/11.1/browser.js
diff --git a/js/src/tests/test262/intl402/ch11/11.1/shell.js b/js/src/tests/test262/intl402/ch11/11.1/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/intl402/ch11/11.1/shell.js
diff --git a/js/src/tests/test262/intl402/ch11/11.2/11.2.1.js b/js/src/tests/test262/intl402/ch11/11.2/11.2.1.js
new file mode 100644
index 000000000..83bebb283
--- /dev/null
+++ b/js/src/tests/test262/intl402/ch11/11.2/11.2.1.js
@@ -0,0 +1,22 @@
+// Copyright 2012 Mozilla Corporation. All rights reserved.
+// This code is governed by the license found in the LICENSE file.
+
+/**
+ * @description Tests that Intl.NumberFormat.prototype has the required attributes.
+ * @author Norbert Lindenberg
+ */
+
+var desc = Object.getOwnPropertyDescriptor(Intl.NumberFormat, "prototype");
+if (desc === undefined) {
+ $ERROR("Intl.NumberFormat.prototype is not defined.");
+}
+if (desc.writable) {
+ $ERROR("Intl.NumberFormat.prototype must not be writable.");
+}
+if (desc.enumerable) {
+ $ERROR("Intl.NumberFormat.prototype must not be enumerable.");
+}
+if (desc.configurable) {
+ $ERROR("Intl.NumberFormat.prototype must not be configurable.");
+}
+
diff --git a/js/src/tests/test262/intl402/ch11/11.2/11.2.2_L15.js b/js/src/tests/test262/intl402/ch11/11.2/11.2.2_L15.js
new file mode 100644
index 000000000..49dce3bae
--- /dev/null
+++ b/js/src/tests/test262/intl402/ch11/11.2/11.2.2_L15.js
@@ -0,0 +1,14 @@
+// Copyright 2012 Mozilla Corporation. All rights reserved.
+// This code is governed by the license found in the LICENSE file.
+
+/**
+ * @description Tests that Intl.NumberFormat.supportedLocalesOf
+ * meets the requirements for built-in objects defined by the introduction of
+ * chapter 15 of the ECMAScript Language Specification.
+ * @author Norbert Lindenberg
+ */
+
+$INCLUDE("testBuiltInObject.js");
+
+testBuiltInObject(Intl.NumberFormat.supportedLocalesOf, true, false, [], 1);
+
diff --git a/js/src/tests/test262/intl402/ch11/11.2/11.2.2_a.js b/js/src/tests/test262/intl402/ch11/11.2/11.2.2_a.js
new file mode 100644
index 000000000..c6c9f9a46
--- /dev/null
+++ b/js/src/tests/test262/intl402/ch11/11.2/11.2.2_a.js
@@ -0,0 +1,28 @@
+// Copyright 2012 Google Inc. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @description Tests that Intl.NumberFormat has a supportedLocalesOf
+ * property, and it works as planned.
+ * @author: Roozbeh Pournader
+ */
+
+var defaultLocale = new Intl.NumberFormat().resolvedOptions().locale;
+var notSupported = 'zxx'; // "no linguistic content"
+var requestedLocales = [defaultLocale, notSupported];
+
+var supportedLocales;
+
+if (!Intl.NumberFormat.hasOwnProperty('supportedLocalesOf')) {
+ $ERROR("Intl.NumberFormat doesn't have a supportedLocalesOf property.");
+}
+
+supportedLocales = Intl.NumberFormat.supportedLocalesOf(requestedLocales);
+if (supportedLocales.length !== 1) {
+ $ERROR('The length of supported locales list is not 1.');
+}
+
+if (supportedLocales[0] !== defaultLocale) {
+ $ERROR('The default locale is not returned in the supported list.');
+}
+
diff --git a/js/src/tests/test262/intl402/ch11/11.2/11.2.2_b.js b/js/src/tests/test262/intl402/ch11/11.2/11.2.2_b.js
new file mode 100644
index 000000000..6b4d77e77
--- /dev/null
+++ b/js/src/tests/test262/intl402/ch11/11.2/11.2.2_b.js
@@ -0,0 +1,13 @@
+// Copyright 2013 Mozilla Corporation. All rights reserved.
+// This code is governed by the license found in the LICENSE file.
+
+/**
+ * @description Tests that Intl.NumberFormat.supportedLocalesOf
+ * doesn't access arguments that it's not given.
+ * @author Norbert Lindenberg
+ */
+
+$INCLUDE("testIntl.js");
+
+taintDataProperty(Object.prototype, "1");
+new Intl.NumberFormat("und");
diff --git a/js/src/tests/test262/intl402/ch11/11.2/11.2.3_b.js b/js/src/tests/test262/intl402/ch11/11.2/11.2.3_b.js
new file mode 100644
index 000000000..70fe7cf11
--- /dev/null
+++ b/js/src/tests/test262/intl402/ch11/11.2/11.2.3_b.js
@@ -0,0 +1,46 @@
+// Copyright 2012 Mozilla Corporation. All rights reserved.
+// This code is governed by the license found in the LICENSE file.
+
+/**
+ * @description Tests that Intl.NumberFormat does not accept Unicode locale
+ * extension keys and values that are not allowed.
+ * @author Norbert Lindenberg
+ */
+
+$INCLUDE("testIntl.js");
+
+var locales = ["ja-JP", "zh-Hans-CN", "zh-Hant-TW"];
+var input = 1234567.89;
+
+locales.forEach(function (locale) {
+ var defaultNumberFormat = new Intl.NumberFormat([locale]);
+ var defaultOptions = defaultNumberFormat.resolvedOptions();
+ var defaultOptionsJSON = JSON.stringify(defaultOptions);
+ var defaultLocale = defaultOptions.locale;
+ var defaultFormatted = defaultNumberFormat.format(input);
+
+ var keyValues = {
+ "cu": ["USD", "EUR", "JPY", "CNY", "TWD", "invalid"],
+ "nu": ["native", "traditio", "finance", "invalid"]
+ };
+
+ Object.getOwnPropertyNames(keyValues).forEach(function (key) {
+ keyValues[key].forEach(function (value) {
+ var numberFormat = new Intl.NumberFormat([locale + "-u-" + key + "-" + value]);
+ var options = numberFormat.resolvedOptions();
+ if (options.locale !== defaultLocale) {
+ $ERROR("Locale " + options.locale + " is affected by key " +
+ key + "; value " + value + ".");
+ }
+ if (JSON.stringify(options) !== defaultOptionsJSON) {
+ $ERROR("Resolved options " + JSON.stringify(options) + " are affected by key " +
+ key + "; value " + value + ".");
+ }
+ if (defaultFormatted !== numberFormat.format(input)) {
+ $ERROR("Formatted value " + numberFormat.format(input) + " is affected by key " +
+ key + "; value " + value + ".");
+ }
+ });
+ });
+});
+
diff --git a/js/src/tests/test262/intl402/ch11/11.2/browser.js b/js/src/tests/test262/intl402/ch11/11.2/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/intl402/ch11/11.2/browser.js
diff --git a/js/src/tests/test262/intl402/ch11/11.2/shell.js b/js/src/tests/test262/intl402/ch11/11.2/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/intl402/ch11/11.2/shell.js
diff --git a/js/src/tests/test262/intl402/ch11/11.3/11.3.1.js b/js/src/tests/test262/intl402/ch11/11.3/11.3.1.js
new file mode 100644
index 000000000..46c7fc519
--- /dev/null
+++ b/js/src/tests/test262/intl402/ch11/11.3/11.3.1.js
@@ -0,0 +1,14 @@
+// Copyright 2012 Google Inc. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @description Tests that Intl.NumberFormat.prototype.constructor is the
+ * Intl.NumberFormat.
+ * @author: Roozbeh Pournader
+ */
+
+if (Intl.NumberFormat.prototype.constructor !== Intl.NumberFormat) {
+ $ERROR("Intl.NumberFormat.prototype.constructor is not the same as " +
+ "Intl.NumberFormat");
+}
+
diff --git a/js/src/tests/test262/intl402/ch11/11.3/11.3.2_1_a_L15.js b/js/src/tests/test262/intl402/ch11/11.3/11.3.2_1_a_L15.js
new file mode 100644
index 000000000..8e1c95835
--- /dev/null
+++ b/js/src/tests/test262/intl402/ch11/11.3/11.3.2_1_a_L15.js
@@ -0,0 +1,14 @@
+// Copyright 2012 Mozilla Corporation. All rights reserved.
+// This code is governed by the license found in the LICENSE file.
+
+/**
+ * @description Tests that the function returned by Intl.NumberFormat.prototype.format
+ * meets the requirements for built-in objects defined by the introduction of
+ * chapter 15 of the ECMAScript Language Specification.
+ * @author Norbert Lindenberg
+ */
+
+$INCLUDE("testBuiltInObject.js");
+
+testBuiltInObject(new Intl.NumberFormat().format, true, false, [], 1);
+
diff --git a/js/src/tests/test262/intl402/ch11/11.3/11.3.2_1_a_ii.js b/js/src/tests/test262/intl402/ch11/11.3/11.3.2_1_a_ii.js
new file mode 100644
index 000000000..cb284f43e
--- /dev/null
+++ b/js/src/tests/test262/intl402/ch11/11.3/11.3.2_1_a_ii.js
@@ -0,0 +1,27 @@
+// Copyright 2012 Google Inc. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @description Tests that Intl.NumberFormat.prototype.format
+ * converts other types to numbers.
+ * @author: Roozbeh Pournader
+ */
+
+var formatter = new Intl.NumberFormat();
+var testData = [undefined, null, true, '0.6666666', {valueOf: function () { return '0.1234567';}}];
+var number;
+var i, input, correctResult, result;
+
+for (i in testData) {
+ input = testData[i];
+ number = +input;
+ correctResult = formatter.format(number);
+
+ result = formatter.format(input);
+ if (result !== correctResult) {
+ $ERROR('Intl.NumberFormat does not convert other ' +
+ 'types to numbers. Input: "'+input+'" Output: "'+result+'" '+
+ 'Expected output: "'+correctResult+'"');
+ }
+}
+
diff --git a/js/src/tests/test262/intl402/ch11/11.3/11.3.2_1_c.js b/js/src/tests/test262/intl402/ch11/11.3/11.3.2_1_c.js
new file mode 100644
index 000000000..3fc877b31
--- /dev/null
+++ b/js/src/tests/test262/intl402/ch11/11.3/11.3.2_1_c.js
@@ -0,0 +1,41 @@
+// Copyright 2012 Mozilla Corporation. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @description Tests that format function is bound to its Intl.NumberFormat.
+ * @author Norbert Lindenberg
+ */
+
+$INCLUDE("testIntl.js");
+
+var numbers = [0, -0, 1, -1, 5.5, 123, -123, -123.45, 123.44501, 0.001234,
+ -0.00000000123, 0.00000000000000000000000000000123, 1.2, 0.0000000012344501,
+ 123445.01, 12344501000000000000000000000000000, -12344501000000000000000000000000000,
+ Infinity, -Infinity, NaN];
+var locales = [undefined, ["de"], ["th-u-nu-thai"], ["en"], ["ja-u-nu-jpanfin"], ["ar-u-nu-arab"]];
+var options = [
+ undefined,
+ {style: "percent"},
+ {style: "currency", currency: "EUR", currencyDisplay: "symbol"},
+ {style: "currency", currency: "IQD", currencyDisplay: "symbol"},
+ {style: "currency", currency: "KMF", currencyDisplay: "symbol"},
+ {style: "currency", currency: "CLF", currencyDisplay: "symbol"},
+ {useGrouping: false, minimumIntegerDigits: 3, minimumFractionDigits: 1, maximumFractionDigits: 3}
+];
+
+locales.forEach(function (locales) {
+ options.forEach(function (options) {
+ var formatObj = new Intl.NumberFormat(locales, options);
+ var formatFunc = formatObj.format;
+ numbers.forEach(function (number) {
+ var referenceFormatted = formatObj.format(number);
+ var formatted = formatFunc(number);
+ if (referenceFormatted !== formatted) {
+ $ERROR("format function produces different result than format method for locales " +
+ locales + "; options: " + (options ? JSON.stringify(options) : options) +
+ " : " + formatted + " vs. " + referenceFormatted + ".");
+ }
+ });
+ });
+});
+
diff --git a/js/src/tests/test262/intl402/ch11/11.3/11.3.2_FN_1.js b/js/src/tests/test262/intl402/ch11/11.3/11.3.2_FN_1.js
new file mode 100644
index 000000000..5f14e7772
--- /dev/null
+++ b/js/src/tests/test262/intl402/ch11/11.3/11.3.2_FN_1.js
@@ -0,0 +1,19 @@
+// Copyright 2012 Google Inc. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @description Tests that Intl.NumberFormat.prototype.format
+ * doesn't treat all numbers as negative.
+ * @author: Roozbeh Pournader
+ */
+
+var formatter = new Intl.NumberFormat();
+
+if (formatter.format(1) === formatter.format(-1)) {
+ $ERROR('Intl.NumberFormat is formatting 1 and -1 the same way.');
+}
+
+if (formatter.format(-0) !== formatter.format(0)) {
+ $ERROR('Intl.NumberFormat is formatting signed zeros differently.');
+}
+
diff --git a/js/src/tests/test262/intl402/ch11/11.3/11.3.2_FN_2.js b/js/src/tests/test262/intl402/ch11/11.3/11.3.2_FN_2.js
new file mode 100644
index 000000000..ec11a679d
--- /dev/null
+++ b/js/src/tests/test262/intl402/ch11/11.3/11.3.2_FN_2.js
@@ -0,0 +1,59 @@
+// Copyright 2012 Google Inc. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @description Tests that Intl.NumberFormat.prototype.format
+ * handles NaN, Infinity, and -Infinity properly.
+ * @author: Roozbeh Pournader
+ */
+
+// FIXME: We are only listing Numeric_Type=Decimal. May need to add more
+// when the spec clarifies. Current as of Unicode 6.1.
+var hasUnicodeDigits = new RegExp('.*([' +
+ '0-9\u0660-\u0669\u06F0-\u06F9\u07C0-\u07C9\u0966-\u096F' +
+ '\u09E6-\u09EF\u0A66-\u0A6F\u0AE6-\u0AEF\u0B66-\u0B6F\u0BE6-\u0BEF' +
+ '\u0C66-\u0C6F\u0CE6-\u0CEF\u0D66-\u0D6F\u0E50-\u0E59\u0ED0-\u0ED9' +
+ '\u0F20-\u0F29\u1040-\u1049\u1090-\u1099\u17E0-\u17E9\u1810-\u1819' +
+ '\u1946-\u194F\u19D0-\u19D9\u1A80-\u1A89\u1A90-\u1A99\u1B50-\u1B59' +
+ '\u1BB0-\u1BB9\u1C40-\u1C49\u1C50-\u1C59\uA620-\uA629\uA8D0-\uA8D9' +
+ '\uA900-\uA909\uA9D0-\uA9D9\uAA50-\uAA59\uABF0-\uABF9\uFF10-\uFF19' +
+ ']|' +
+ '\uD801[\uDCA0-\uDCA9]|' +
+ '\uD804[\uDC66-\uDC6F\uDCF0-\uDCF9\uDD36-\uDD3F\uDDD0-\uDDD9]|' +
+ '\uD805[\uDEC0-\uDEC9]|' +
+ '\uD835[\uDFCE-\uDFFF])');
+
+var formatter = new Intl.NumberFormat();
+var formattedNaN = formatter.format(NaN);
+var formattedInfinity = formatter.format(Infinity);
+var formattedNegativeInfinity = formatter.format(-Infinity);
+
+if (formattedNaN === formattedInfinity) {
+ $ERROR('Intl.NumberFormat formats NaN and Infinity the ' +
+ 'same way.');
+}
+
+if (formattedNaN === formattedNegativeInfinity) {
+ $ERROR('Intl.NumberFormat formats NaN and negative ' +
+ 'Infinity the same way.');
+}
+
+if (formattedInfinity === formattedNegativeInfinity) {
+ $ERROR('Intl.NumberFormat formats Infinity and ' +
+ 'negative Infinity the same way.');
+}
+
+if (hasUnicodeDigits.test(formattedNaN)) {
+ $ERROR('Intl.NumberFormat formats NaN using a digit.');
+}
+
+if (hasUnicodeDigits.test(formattedInfinity)) {
+ $ERROR('Intl.NumberFormat formats Infinity using a ' +
+ 'digit.');
+}
+
+if (hasUnicodeDigits.test(formattedNegativeInfinity)) {
+ $ERROR('Intl.NumberFormat formats negative Infinity ' +
+ 'using a digit.');
+}
+
diff --git a/js/src/tests/test262/intl402/ch11/11.3/11.3.2_FN_3_b.js b/js/src/tests/test262/intl402/ch11/11.3/11.3.2_FN_3_b.js
new file mode 100644
index 000000000..efe15575d
--- /dev/null
+++ b/js/src/tests/test262/intl402/ch11/11.3/11.3.2_FN_3_b.js
@@ -0,0 +1,27 @@
+// Copyright 2012 Google Inc. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @description Tests that Intl.NumberFormat.prototype.format
+ * formats percent values properly.
+ * @author: Roozbeh Pournader
+ */
+
+var numberFormatter = new Intl.NumberFormat();
+var percentFormatter = new Intl.NumberFormat(undefined, {style: 'percent'});
+
+var formattedTwenty = numberFormatter.format(20);
+var formattedTwentyPercent = percentFormatter.format(0.20);
+
+// FIXME: May not work for some theoretical locales where percents and
+// normal numbers are formatted using different numbering systems.
+if (formattedTwentyPercent.indexOf(formattedTwenty) === -1) {
+ $ERROR("Intl.NumberFormat's formatting of 20% does not include a " +
+ "formatting of 20 as a substring.");
+}
+
+// FIXME: Move this to somewhere appropriate
+if (percentFormatter.format(0.011) === percentFormatter.format(0.02)) {
+ $ERROR('Intl.NumberFormat is formatting 1.1% and 2% the same way.');
+}
+
diff --git a/js/src/tests/test262/intl402/ch11/11.3/11.3.2_FN_3_e.js b/js/src/tests/test262/intl402/ch11/11.3/11.3.2_FN_3_e.js
new file mode 100644
index 000000000..234ae6325
--- /dev/null
+++ b/js/src/tests/test262/intl402/ch11/11.3/11.3.2_FN_3_e.js
@@ -0,0 +1,47 @@
+// Copyright 2012 Google Inc. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @description Tests that Intl.NumberFormat.prototype.format
+ * supports all alternative numbering systems.
+ * @author: Roozbeh Pournader
+ */
+
+var numberingSystems = {
+ arab: 0x0660,
+ arabext: 0x06F0,
+ beng: 0x09E6,
+ deva: 0x0966,
+ fullwide: 0xFF10,
+ gujr: 0x0AE6,
+ guru: 0x0A66,
+ hanidec: [0x3007, 0x4E00, 0x4E8C, 0x4E09, 0x56DB,
+ 0x4E94, 0x516D, 0x4E03, 0x516B, 0x4E5D],
+ khmr: 0x17E0,
+ knda: 0x0CE6,
+ laoo: 0x0ED0,
+ latn: 0x0030,
+ mlym: 0x0D66,
+ mong: 0x1810,
+ mymr: 0x1040,
+ orya: 0x0B66,
+ tamldec: 0x0BE6,
+ telu: 0x0C66,
+ thai: 0x0E50,
+ tibt: 0x0F20
+};
+
+var options, formatter;
+var s, zeroCode, digitList;
+
+for (s in numberingSystems) {
+ zeroCode = numberingSystems[s];
+ if (typeof zeroCode === 'number') {
+ digitList = [zeroCode, zeroCode+1, zeroCode+2, zeroCode+3, zeroCode+4,
+ zeroCode+5, zeroCode+6, zeroCode+7, zeroCode+8, zeroCode+9];
+ numberingSystems[s] = digitList;
+ }
+}
+
+// FIXME: Unfinished
+
diff --git a/js/src/tests/test262/intl402/ch11/11.3/11.3.2_L15.js b/js/src/tests/test262/intl402/ch11/11.3/11.3.2_L15.js
new file mode 100644
index 000000000..17b688b7a
--- /dev/null
+++ b/js/src/tests/test262/intl402/ch11/11.3/11.3.2_L15.js
@@ -0,0 +1,14 @@
+// Copyright 2012 Mozilla Corporation. All rights reserved.
+// This code is governed by the license found in the LICENSE file.
+
+/**
+ * @description Tests that the getter for Intl.NumberFormat.prototype.format
+ * meets the requirements for built-in objects defined by the introduction of
+ * chapter 15 of the ECMAScript Language Specification.
+ * @author Norbert Lindenberg
+ */
+
+$INCLUDE("testBuiltInObject.js");
+
+testBuiltInObject(Object.getOwnPropertyDescriptor(Intl.NumberFormat.prototype, "format").get , true, false, [], 0);
+
diff --git a/js/src/tests/test262/intl402/ch11/11.3/11.3.2_TRF.js b/js/src/tests/test262/intl402/ch11/11.3/11.3.2_TRF.js
new file mode 100644
index 000000000..c042a318a
--- /dev/null
+++ b/js/src/tests/test262/intl402/ch11/11.3/11.3.2_TRF.js
@@ -0,0 +1,56 @@
+// Copyright 2011-2012 Norbert Lindenberg. All rights reserved.
+// Copyright 2012 Mozilla Corporation. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @description Tests that the digits are determined correctly when specifying pre/post decimal digits.
+ * @author Norbert Lindenberg
+ */
+
+$INCLUDE("testIntl.js");
+
+var locales = [
+ new Intl.NumberFormat().resolvedOptions().locale,
+ "ar", "de", "th", "ja"
+];
+var numberingSystems = [
+ "arab",
+ "latn",
+ "thai",
+ "hanidec"
+];
+var testData = {
+ "0": "000.0",
+ "-0": "000.0",
+ "123": "123.0",
+ "-123": "-123.0",
+ "12345": "12345.0",
+ "-12345": "-12345.0",
+ "123.45": "123.45",
+ "-123.45": "-123.45",
+ "123.444499": "123.444",
+ "-123.444499": "-123.444",
+ "123.444500": "123.445",
+ "-123.444500": "-123.445",
+ "123.44501": "123.445",
+ "-123.44501": "-123.445",
+ "0.001234": "000.001",
+ "-0.001234": "-000.001",
+ "0.00000000123": "000.0",
+ "-0.00000000123": "-000.0",
+ "0.00000000000000000000000000000123": "000.0",
+ "-0.00000000000000000000000000000123": "-000.0",
+ "1.2": "001.2",
+ "-1.2": "-001.2",
+ "0.0000000012344501": "000.0",
+ "-0.0000000012344501": "-000.0",
+ "123445.01": "123445.01",
+ "-123445.01": "-123445.01",
+ "12344501000000000000000000000000000": "12344501000000000000000000000000000.0",
+ "-12344501000000000000000000000000000": "-12344501000000000000000000000000000.0"
+};
+
+testNumberFormat(locales, numberingSystems,
+ {useGrouping: false, minimumIntegerDigits: 3, minimumFractionDigits: 1, maximumFractionDigits: 3},
+ testData);
+
diff --git a/js/src/tests/test262/intl402/ch11/11.3/11.3.2_TRP.js b/js/src/tests/test262/intl402/ch11/11.3/11.3.2_TRP.js
new file mode 100644
index 000000000..9ab6550b6
--- /dev/null
+++ b/js/src/tests/test262/intl402/ch11/11.3/11.3.2_TRP.js
@@ -0,0 +1,56 @@
+// Copyright 2011-2012 Norbert Lindenberg. All rights reserved.
+// Copyright 2012 Mozilla Corporation. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @description Tests that the digits are determined correctly when specifying significant digits.
+ * @author Norbert Lindenberg
+ */
+
+$INCLUDE("testIntl.js");
+
+var locales = [
+ new Intl.NumberFormat().resolvedOptions().locale,
+ "ar", "de", "th", "ja"
+];
+var numberingSystems = [
+ "arab",
+ "latn",
+ "thai",
+ "hanidec"
+];
+var testData = {
+ "0": "0.00",
+ "-0": "0.00",
+ "123": "123",
+ "-123": "-123",
+ "12345": "12345",
+ "-12345": "-12345",
+ "123.45": "123.45",
+ "-123.45": "-123.45",
+ "123.44499": "123.44",
+ "-123.44499": "-123.44",
+ "123.44500": "123.45",
+ "-123.44500": "-123.45",
+ "123.44501": "123.45",
+ "-123.44501": "-123.45",
+ "0.001234": "0.001234",
+ "-0.001234": "-0.001234",
+ "0.00000000123": "0.00000000123",
+ "-0.00000000123": "-0.00000000123",
+ "0.00000000000000000000000000000123": "0.00000000000000000000000000000123",
+ "-0.00000000000000000000000000000123": "-0.00000000000000000000000000000123",
+ "1.2": "1.20",
+ "-1.2": "-1.20",
+ "0.0000000012344501": "0.0000000012345",
+ "-0.0000000012344501": "-0.0000000012345",
+ "123445.01": "123450",
+ "-123445.01": "-123450",
+ "12344501000000000000000000000000000": "12345000000000000000000000000000000",
+ "-12344501000000000000000000000000000": "-12345000000000000000000000000000000"
+};
+
+testNumberFormat(locales, numberingSystems,
+ {useGrouping: false, minimumSignificantDigits: 3, maximumSignificantDigits: 5},
+ testData);
+
diff --git a/js/src/tests/test262/intl402/ch11/11.3/11.3.3.js b/js/src/tests/test262/intl402/ch11/11.3/11.3.3.js
new file mode 100644
index 000000000..5a220ccc9
--- /dev/null
+++ b/js/src/tests/test262/intl402/ch11/11.3/11.3.3.js
@@ -0,0 +1,31 @@
+// Copyright 2012 Mozilla Corporation. All rights reserved.
+// This code is governed by the license found in the LICENSE file.
+
+/**
+ * @description Tests that the object returned by Intl.NumberFormat.prototype.resolvedOptions
+ * has the right properties.
+ * @author Norbert Lindenberg
+ */
+
+$INCLUDE("testIntl.js");
+
+var actual = new Intl.NumberFormat().resolvedOptions();
+
+var actual2 = new Intl.NumberFormat().resolvedOptions();
+if (actual2 === actual) {
+ $ERROR("resolvedOptions returned the same object twice.");
+}
+
+// this assumes the default values where the specification provides them
+mustHaveProperty(actual, "locale", isCanonicalizedStructurallyValidLanguageTag);
+mustHaveProperty(actual, "numberingSystem", isValidNumberingSystem);
+mustHaveProperty(actual, "style", ["decimal"]);
+mustNotHaveProperty(actual, "currency");
+mustNotHaveProperty(actual, "currencyDisplay");
+mustHaveProperty(actual, "minimumIntegerDigits", [1]);
+mustHaveProperty(actual, "minimumFractionDigits", [0]);
+mustHaveProperty(actual, "maximumFractionDigits", [3]);
+mustNotHaveProperty(actual, "minimumSignificantDigits");
+mustNotHaveProperty(actual, "maximumSignificantDigits");
+mustHaveProperty(actual, "useGrouping", [true]);
+
diff --git a/js/src/tests/test262/intl402/ch11/11.3/11.3.3_L15.js b/js/src/tests/test262/intl402/ch11/11.3/11.3.3_L15.js
new file mode 100644
index 000000000..b9f95866d
--- /dev/null
+++ b/js/src/tests/test262/intl402/ch11/11.3/11.3.3_L15.js
@@ -0,0 +1,14 @@
+// Copyright 2012 Mozilla Corporation. All rights reserved.
+// This code is governed by the license found in the LICENSE file.
+
+/**
+ * @description Tests that Intl.NumberFormat.prototype.resolvedOptions
+ * meets the requirements for built-in objects defined by the introduction of
+ * chapter 15 of the ECMAScript Language Specification.
+ * @author Norbert Lindenberg
+ */
+
+$INCLUDE("testBuiltInObject.js");
+
+testBuiltInObject(Intl.NumberFormat.prototype.resolvedOptions, true, false, [], 0);
+
diff --git a/js/src/tests/test262/intl402/ch11/11.3/11.3_L15.js b/js/src/tests/test262/intl402/ch11/11.3/11.3_L15.js
new file mode 100644
index 000000000..ac1f0c05d
--- /dev/null
+++ b/js/src/tests/test262/intl402/ch11/11.3/11.3_L15.js
@@ -0,0 +1,14 @@
+// Copyright 2012 Mozilla Corporation. All rights reserved.
+// This code is governed by the license found in the LICENSE file.
+
+/**
+ * @description Tests that Intl.NumberFormat.prototype
+ * meets the requirements for built-in objects defined by the introduction of
+ * chapter 15 of the ECMAScript Language Specification.
+ * @author Norbert Lindenberg
+ */
+
+$INCLUDE("testBuiltInObject.js");
+
+testBuiltInObject(Intl.NumberFormat.prototype, false, false, ["constructor", "format", "resolvedOptions"]);
+
diff --git a/js/src/tests/test262/intl402/ch11/11.3/11.3_a.js b/js/src/tests/test262/intl402/ch11/11.3/11.3_a.js
new file mode 100644
index 000000000..282a10bf6
--- /dev/null
+++ b/js/src/tests/test262/intl402/ch11/11.3/11.3_a.js
@@ -0,0 +1,16 @@
+// Copyright 2012 Google Inc. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @description Tests that Intl.NumberFormat.prototype is an object that
+ * has been initialized as an Intl.NumberFormat.
+ * @author: Roozbeh Pournader
+ */
+
+// test by calling a function that would fail if "this" were not an object
+// initialized as an Intl.NumberFormat
+if (typeof Intl.NumberFormat.prototype.format(0) !== "string") {
+ $ERROR("Intl.NumberFormat's prototype is not an object that has been " +
+ "initialized as an Intl.NumberFormat");
+}
+
diff --git a/js/src/tests/test262/intl402/ch11/11.3/11.3_b.js b/js/src/tests/test262/intl402/ch11/11.3/11.3_b.js
new file mode 100644
index 000000000..6d0162b1d
--- /dev/null
+++ b/js/src/tests/test262/intl402/ch11/11.3/11.3_b.js
@@ -0,0 +1,33 @@
+// Copyright 2012 Mozilla Corporation. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @description Tests that Intl.NumberFormat.prototype functions throw a
+ * TypeError if called on a non-object value or an object that hasn't been
+ * initialized as a NumberFormat.
+ * @author Norbert Lindenberg
+ */
+
+var functions = {
+ "format getter": Object.getOwnPropertyDescriptor(Intl.NumberFormat.prototype, "format").get,
+ resolvedOptions: Intl.NumberFormat.prototype.resolvedOptions
+};
+var invalidTargets = [undefined, null, true, 0, "NumberFormat", [], {}];
+
+Object.getOwnPropertyNames(functions).forEach(function (functionName) {
+ var f = functions[functionName];
+ invalidTargets.forEach(function (target) {
+ var error;
+ try {
+ f.call(target);
+ } catch (e) {
+ error = e;
+ }
+ if (error === undefined) {
+ $ERROR("Calling " + functionName + " on " + target + " was not rejected.");
+ } else if (error.name !== "TypeError") {
+ $ERROR("Calling " + functionName + " on " + target + " was rejected with wrong error " + error.name + ".");
+ }
+ });
+});
+
diff --git a/js/src/tests/test262/intl402/ch11/11.3/browser.js b/js/src/tests/test262/intl402/ch11/11.3/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/intl402/ch11/11.3/browser.js
diff --git a/js/src/tests/test262/intl402/ch11/11.3/shell.js b/js/src/tests/test262/intl402/ch11/11.3/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/intl402/ch11/11.3/shell.js
diff --git a/js/src/tests/test262/intl402/ch11/11.4/11.4_a.js b/js/src/tests/test262/intl402/ch11/11.4/11.4_a.js
new file mode 100644
index 000000000..a562879ec
--- /dev/null
+++ b/js/src/tests/test262/intl402/ch11/11.4/11.4_a.js
@@ -0,0 +1,15 @@
+// Copyright 2012 Mozilla Corporation. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @description Tests that Intl.NumberFormat instances have the specified properties.
+ * @author Norbert Lindenberg
+ */
+
+var obj = new Intl.NumberFormat();
+
+var toStringValue = Object.prototype.toString.call(obj);
+if (toStringValue !== "[object Object]") {
+ $ERROR("Intl.NumberFormat instance produces wrong [[Class]] - toString returns " + toStringValue + ".");
+}
+
diff --git a/js/src/tests/test262/intl402/ch11/11.4/browser.js b/js/src/tests/test262/intl402/ch11/11.4/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/intl402/ch11/11.4/browser.js
diff --git a/js/src/tests/test262/intl402/ch11/11.4/shell.js b/js/src/tests/test262/intl402/ch11/11.4/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/intl402/ch11/11.4/shell.js
diff --git a/js/src/tests/test262/intl402/ch11/browser.js b/js/src/tests/test262/intl402/ch11/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/intl402/ch11/browser.js
diff --git a/js/src/tests/test262/intl402/ch11/shell.js b/js/src/tests/test262/intl402/ch11/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/intl402/ch11/shell.js
diff --git a/js/src/tests/test262/intl402/ch12/12.1/12.1.1_1.js b/js/src/tests/test262/intl402/ch12/12.1/12.1.1_1.js
new file mode 100644
index 000000000..8136fb421
--- /dev/null
+++ b/js/src/tests/test262/intl402/ch12/12.1/12.1.1_1.js
@@ -0,0 +1,43 @@
+// Copyright 2012 Mozilla Corporation. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @description Tests that an object can't be re-initialized as a DateTimeFormat.
+ * @author Norbert Lindenberg
+ */
+
+$INCLUDE("testIntl.js");
+
+testWithIntlConstructors(function (Constructor) {
+ var obj, error;
+
+ // variant 1: use constructor in a "new" expression
+ obj = new Constructor();
+ try {
+ Intl.DateTimeFormat.call(obj);
+ } catch (e) {
+ error = e;
+ }
+ if (error === undefined) {
+ $ERROR("Re-initializing object created with \"new\" as DateTimeFormat was not rejected.");
+ } else if (error.name !== "TypeError") {
+ $ERROR("Re-initializing object created with \"new\" as DateTimeFormat was rejected with wrong error " + error.name + ".");
+ }
+
+ // variant 2: use constructor as a function
+ obj = Constructor.call({});
+ error = undefined;
+ try {
+ Intl.DateTimeFormat.call(obj);
+ } catch (e) {
+ error = e;
+ }
+ if (error === undefined) {
+ $ERROR("Re-initializing object created with constructor as function as DateTimeFormat was not rejected.");
+ } else if (error.name !== "TypeError") {
+ $ERROR("Re-initializing object created with constructor as function as DateTimeFormat was rejected with wrong error " + error.name + ".");
+ }
+
+ return true;
+});
+
diff --git a/js/src/tests/test262/intl402/ch12/12.1/12.1.1_18.js b/js/src/tests/test262/intl402/ch12/12.1/12.1.1_18.js
new file mode 100644
index 000000000..f75ea1e32
--- /dev/null
+++ b/js/src/tests/test262/intl402/ch12/12.1/12.1.1_18.js
@@ -0,0 +1,15 @@
+// Copyright 2012 Mozilla Corporation. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @description Tests that the option hour12 is processed correctly.
+ * @author Norbert Lindenberg
+ */
+
+$INCLUDE("testIntl.js");
+
+testOption(Intl.DateTimeFormat, "hour12", "boolean", undefined, undefined,
+ {extra: {any: {hour: "numeric", minute: "numeric"}}});
+testOption(Intl.DateTimeFormat, "hour12", "boolean", undefined, undefined,
+ {noReturn: true});
+
diff --git a/js/src/tests/test262/intl402/ch12/12.1/12.1.1_22.js b/js/src/tests/test262/intl402/ch12/12.1/12.1.1_22.js
new file mode 100644
index 000000000..5c317c6b9
--- /dev/null
+++ b/js/src/tests/test262/intl402/ch12/12.1/12.1.1_22.js
@@ -0,0 +1,18 @@
+// Copyright 2012 Mozilla Corporation. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @description Tests that the behavior of a Record is not affected by adversarial
+ * changes to Object.prototype.
+ * @author Norbert Lindenberg
+ */
+
+$INCLUDE("testIntl.js");
+
+taintProperties(["weekday", "era", "year", "month", "day", "hour", "minute", "second", "timeZone"]);
+
+var locale = new Intl.DateTimeFormat(undefined, {localeMatcher: "lookup"}).resolvedOptions().locale;
+if (!isCanonicalizedStructurallyValidLanguageTag(locale)) {
+ $ERROR("DateTimeFormat returns invalid locale " + locale + ".");
+}
+
diff --git a/js/src/tests/test262/intl402/ch12/12.1/12.1.1_23.js b/js/src/tests/test262/intl402/ch12/12.1/12.1.1_23.js
new file mode 100644
index 000000000..d26e1d28c
--- /dev/null
+++ b/js/src/tests/test262/intl402/ch12/12.1/12.1.1_23.js
@@ -0,0 +1,14 @@
+// Copyright 2012 Mozilla Corporation. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @description Tests that the options for the date and time components are processed correctly.
+ * @author Norbert Lindenberg
+ */
+
+$INCLUDE("testIntl.js");
+
+getDateTimeComponents().forEach(function (component) {
+ testOption(Intl.DateTimeFormat, component, "string", getDateTimeComponentValues(component), undefined, {isILD: true});
+});
+
diff --git a/js/src/tests/test262/intl402/ch12/12.1/12.1.1_25.js b/js/src/tests/test262/intl402/ch12/12.1/12.1.1_25.js
new file mode 100644
index 000000000..ccaf7be03
--- /dev/null
+++ b/js/src/tests/test262/intl402/ch12/12.1/12.1.1_25.js
@@ -0,0 +1,12 @@
+// Copyright 2012 Mozilla Corporation. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @description Tests that the option formatMatcher is processed correctly.
+ * @author Norbert Lindenberg
+ */
+
+$INCLUDE("testIntl.js");
+
+testOption(Intl.DateTimeFormat, "formatMatcher", "string", ["basic", "best fit"], "best fit", {noReturn: true});
+
diff --git a/js/src/tests/test262/intl402/ch12/12.1/12.1.1_5.js b/js/src/tests/test262/intl402/ch12/12.1/12.1.1_5.js
new file mode 100644
index 000000000..c6b166814
--- /dev/null
+++ b/js/src/tests/test262/intl402/ch12/12.1/12.1.1_5.js
@@ -0,0 +1,18 @@
+// Copyright 2012 Mozilla Corporation. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @description Tests that the behavior of a Record is not affected by adversarial
+ * changes to Object.prototype.
+ * @author Norbert Lindenberg
+ */
+
+$INCLUDE("testIntl.js");
+
+taintProperties(["localeMatcher"]);
+
+var locale = new Intl.DateTimeFormat(undefined, {localeMatcher: "lookup"}).resolvedOptions().locale;
+if (!isCanonicalizedStructurallyValidLanguageTag(locale)) {
+ $ERROR("DateTimeFormat returns invalid locale " + locale + ".");
+}
+
diff --git a/js/src/tests/test262/intl402/ch12/12.1/12.1.1_6.js b/js/src/tests/test262/intl402/ch12/12.1/12.1.1_6.js
new file mode 100644
index 000000000..148ca02f6
--- /dev/null
+++ b/js/src/tests/test262/intl402/ch12/12.1/12.1.1_6.js
@@ -0,0 +1,12 @@
+// Copyright 2012 Mozilla Corporation. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @description Tests that the option localeMatcher is processed correctly.
+ * @author Norbert Lindenberg
+ */
+
+$INCLUDE("testIntl.js");
+
+testOption(Intl.DateTimeFormat, "localeMatcher", "string", ["lookup", "best fit"], "best fit", {noReturn: true});
+
diff --git a/js/src/tests/test262/intl402/ch12/12.1/12.1.1_TDTO.js b/js/src/tests/test262/intl402/ch12/12.1/12.1.1_TDTO.js
new file mode 100644
index 000000000..5df6a1cf2
--- /dev/null
+++ b/js/src/tests/test262/intl402/ch12/12.1/12.1.1_TDTO.js
@@ -0,0 +1,107 @@
+// Copyright 2012 Mozilla Corporation. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @description Tests that the set of options for the date and time components is processed correctly.
+ * @author Norbert Lindenberg
+ */
+
+$INCLUDE("testIntl.js");
+
+var locales = [[], ["zh-Hans-CN"], ["hi-IN"], ["en-US"], ["id-ID"]];
+var dates = [new Date(), new Date(0), new Date(Date.parse("1989-11-09T17:57:00Z"))];
+
+function testWithDateTimeFormat(options, expected) {
+ locales.forEach(function (locales) {
+ var format = new Intl.DateTimeFormat(locales, options);
+ var resolvedOptions = format.resolvedOptions();
+ getDateTimeComponents().forEach(function (component) {
+ if (resolvedOptions.hasOwnProperty(component)) {
+ if (!expected.hasOwnProperty(component)) {
+ $ERROR("Unrequested component " + component +
+ " added to expected subset " + JSON.stringify(expected) +
+ "; locales " + locales + ", options " +
+ (options ? JSON.stringify(options) : options) + ".");
+ }
+ } else {
+ if (expected.hasOwnProperty(component)) {
+ $ERROR("Missing component " + component +
+ " from expected subset " + JSON.stringify(expected) +
+ "; locales " + locales + ", options " +
+ (options ? JSON.stringify(options) : options) + ".");
+ }
+ }
+ });
+ });
+}
+
+function testWithToLocale(f, options, expected) {
+ // expected can be either one subset or an array of possible subsets
+ if (expected.length === undefined) {
+ expected = [expected];
+ }
+ locales.forEach(function (locales) {
+ dates.forEach(function (date) {
+ var formatted = Date.prototype[f].call(date, locales, options);
+ var expectedStrings = [];
+ expected.forEach(function (expected) {
+ var referenceFormat = new Intl.DateTimeFormat(locales, expected);
+ expectedStrings.push(referenceFormat.format(date));
+ });
+ if (expectedStrings.indexOf(formatted) === -1) {
+ $ERROR("Function " + f + " did not return expected string for locales " +
+ locales + ", options " + (options? JSON.stringify(options) : options) +
+ "; expected " +
+ (expectedStrings.length === 1 ? expectedStrings[0] : "one of " + expectedStrings) +
+ ", got " + formatted + ".");
+ }
+ });
+ });
+}
+
+// any/date: steps 5a, 6a, 7a
+testWithDateTimeFormat(undefined, {year: "numeric", month: "numeric", day: "numeric"});
+
+// any/date: steps 5a, 6a
+testWithDateTimeFormat({year: "numeric", month: "numeric"}, {year: "numeric", month: "numeric"});
+
+// any/date: steps 5a, 6a
+testWithDateTimeFormat({hour: "numeric", minute: "numeric"}, {hour: "numeric", minute: "numeric"});
+
+// any/all: steps 5a, 6a, 7a, 8a
+testWithToLocale("toLocaleString", undefined, [
+ // the first one is not guaranteed to be supported; the second one is
+ {year: "numeric", month: "numeric", day: "numeric", hour: "numeric", minute: "numeric", second: "numeric"},
+ {weekday: "short", year: "numeric", month: "numeric", day: "numeric", hour: "numeric", minute: "numeric", second: "numeric"}
+]);
+
+// any/all: steps 5a, 6a
+testWithToLocale("toLocaleString", {year: "numeric", month: "numeric"}, {year: "numeric", month: "numeric"});
+
+// any/all: steps 5a, 6a
+testWithToLocale("toLocaleString", {hour: "numeric", minute: "numeric"}, {hour: "numeric", minute: "numeric"});
+
+// date/date: steps 5a, 7a
+testWithToLocale("toLocaleDateString", undefined, {year: "numeric", month: "numeric", day: "numeric"});
+
+// date/date: steps 5a
+testWithToLocale("toLocaleDateString", {year: "numeric", month: "numeric"}, {year: "numeric", month: "numeric"});
+
+// date/date: steps 5a, 7a
+testWithToLocale("toLocaleDateString", {hour: "numeric", minute: "numeric", second: "numeric"}, [
+ // the first one is not guaranteed to be supported; the second one is
+ {year: "numeric", month: "numeric", day: "numeric", hour: "numeric", minute: "numeric", second: "numeric"},
+ {weekday: "short", year: "numeric", month: "numeric", day: "numeric", hour: "numeric", minute: "numeric", second: "numeric"}
+]);
+
+// time/time: steps 6a, 8a
+testWithToLocale("toLocaleTimeString", undefined, {hour: "numeric", minute: "numeric", second: "numeric"});
+
+// time/time: steps 6a, 8a
+testWithToLocale("toLocaleTimeString", {weekday: "short", year: "numeric", month: "numeric", day: "numeric"},
+ {weekday: "short", year: "numeric", month: "numeric", day: "numeric", hour: "numeric", minute: "numeric", second: "numeric"});
+
+// time/time: steps 6a
+testWithToLocale("toLocaleTimeString", {hour: "numeric", minute: "numeric"}, {hour: "numeric", minute: "numeric"});
+
+
diff --git a/js/src/tests/test262/intl402/ch12/12.1/12.1.1_a.js b/js/src/tests/test262/intl402/ch12/12.1/12.1.1_a.js
new file mode 100644
index 000000000..4f5f3dbf5
--- /dev/null
+++ b/js/src/tests/test262/intl402/ch12/12.1/12.1.1_a.js
@@ -0,0 +1,18 @@
+// Copyright 2013 Mozilla Corporation. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @description Tests that constructing a DateTimeFormat doesn't create or modify
+ * unwanted properties on the RegExp constructor.
+ * @author Norbert Lindenberg
+ */
+
+$INCLUDE("testIntl.js");
+
+testForUnwantedRegExpChanges(function () {
+ new Intl.DateTimeFormat("de-DE-u-ca-gregory");
+});
+
+testForUnwantedRegExpChanges(function () {
+ new Intl.DateTimeFormat("de-DE-u-ca-gregory", {timeZone: "UTC"});
+});
diff --git a/js/src/tests/test262/intl402/ch12/12.1/12.1.2.1_4.js b/js/src/tests/test262/intl402/ch12/12.1/12.1.2.1_4.js
new file mode 100644
index 000000000..cb22be8f9
--- /dev/null
+++ b/js/src/tests/test262/intl402/ch12/12.1/12.1.2.1_4.js
@@ -0,0 +1,21 @@
+// Copyright 2012 Mozilla Corporation. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @description Tests that for non-object values passed as this to DateTimeFormat a
+ * wrapper object will be initialized and returned.
+ * @author Norbert Lindenberg
+ */
+
+var thisValues = [true, 42, "国際化"];
+
+thisValues.forEach(function (value) {
+ var format = Intl.DateTimeFormat.call(value);
+ // check that the returned object functions as a date-time format
+ var referenceFormat = new Intl.DateTimeFormat();
+ if (Intl.DateTimeFormat.prototype.format.call(format, new Date(111111111)) !== referenceFormat.format(new Date(111111111))) {
+ $ERROR("DateTimeFormat initialized from " + value + " doesn't behave like normal date-time format.");
+ }
+ return true;
+});
+
diff --git a/js/src/tests/test262/intl402/ch12/12.1/12.1.2.js b/js/src/tests/test262/intl402/ch12/12.1/12.1.2.js
new file mode 100644
index 000000000..3ffed2ec8
--- /dev/null
+++ b/js/src/tests/test262/intl402/ch12/12.1/12.1.2.js
@@ -0,0 +1,30 @@
+// Copyright 2011-2012 Norbert Lindenberg. All rights reserved.
+// Copyright 2012 Mozilla Corporation. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @description Tests that Intl.DateTimeFormat can be subclassed.
+ * @author Norbert Lindenberg
+ */
+
+$INCLUDE("testIntl.js");
+
+// get a date-time format and have it format an array of dates for comparison with the subclass
+var locales = ["tlh", "id", "en"];
+var a = [new Date(0), Date.now(), new Date(Date.parse("1989-11-09T17:57:00Z"))];
+var referenceDateTimeFormat = new Intl.DateTimeFormat(locales);
+var referenceFormatted = a.map(referenceDateTimeFormat.format);
+
+function MyDateTimeFormat(locales, options) {
+ Intl.DateTimeFormat.call(this, locales, options);
+ // could initialize MyDateTimeFormat properties
+}
+
+MyDateTimeFormat.prototype = Object.create(Intl.DateTimeFormat.prototype);
+MyDateTimeFormat.prototype.constructor = MyDateTimeFormat;
+// could add methods to MyDateTimeFormat.prototype
+
+var format = new MyDateTimeFormat(locales);
+var actual = a.map(format.format);
+testArraysAreSame(referenceFormatted, actual);
+
diff --git a/js/src/tests/test262/intl402/ch12/12.1/12.1.3.js b/js/src/tests/test262/intl402/ch12/12.1/12.1.3.js
new file mode 100644
index 000000000..5e70bbb8f
--- /dev/null
+++ b/js/src/tests/test262/intl402/ch12/12.1/12.1.3.js
@@ -0,0 +1,19 @@
+// Copyright 2012 Mozilla Corporation. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @description Tests that objects constructed by Intl.DateTimeFormat have the specified internal properties.
+ * @author Norbert Lindenberg
+ */
+
+var obj = new Intl.DateTimeFormat();
+
+var actualPrototype = Object.getPrototypeOf(obj);
+if (actualPrototype !== Intl.DateTimeFormat.prototype) {
+ $ERROR("Prototype of object constructed by Intl.DateTimeFormat isn't Intl.DateTimeFormat.prototype; got " + actualPrototype);
+}
+
+if (!Object.isExtensible(obj)) {
+ $ERROR("Object constructed by Intl.DateTimeFormat must be extensible.");
+}
+
diff --git a/js/src/tests/test262/intl402/ch12/12.1/12.1_L15.js b/js/src/tests/test262/intl402/ch12/12.1/12.1_L15.js
new file mode 100644
index 000000000..46c4f5f50
--- /dev/null
+++ b/js/src/tests/test262/intl402/ch12/12.1/12.1_L15.js
@@ -0,0 +1,14 @@
+// Copyright 2012 Mozilla Corporation. All rights reserved.
+// This code is governed by the license found in the LICENSE file.
+
+/**
+ * @description Tests that Intl.DateTimeFormat
+ * meets the requirements for built-in objects defined by the introduction of
+ * chapter 15 of the ECMAScript Language Specification.
+ * @author Norbert Lindenberg
+ */
+
+$INCLUDE("testBuiltInObject.js");
+
+testBuiltInObject(Intl.DateTimeFormat, true, true, ["supportedLocalesOf"], 0);
+
diff --git a/js/src/tests/test262/intl402/ch12/12.1/browser.js b/js/src/tests/test262/intl402/ch12/12.1/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/intl402/ch12/12.1/browser.js
diff --git a/js/src/tests/test262/intl402/ch12/12.1/shell.js b/js/src/tests/test262/intl402/ch12/12.1/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/intl402/ch12/12.1/shell.js
diff --git a/js/src/tests/test262/intl402/ch12/12.2/12.2.1.js b/js/src/tests/test262/intl402/ch12/12.2/12.2.1.js
new file mode 100644
index 000000000..3590c0a9d
--- /dev/null
+++ b/js/src/tests/test262/intl402/ch12/12.2/12.2.1.js
@@ -0,0 +1,22 @@
+// Copyright 2012 Mozilla Corporation. All rights reserved.
+// This code is governed by the license found in the LICENSE file.
+
+/**
+ * @description Tests that Intl.DateTimeFormat.prototype has the required attributes.
+ * @author Norbert Lindenberg
+ */
+
+var desc = Object.getOwnPropertyDescriptor(Intl.DateTimeFormat, "prototype");
+if (desc === undefined) {
+ $ERROR("Intl.DateTimeFormat.prototype is not defined.");
+}
+if (desc.writable) {
+ $ERROR("Intl.DateTimeFormat.prototype must not be writable.");
+}
+if (desc.enumerable) {
+ $ERROR("Intl.DateTimeFormat.prototype must not be enumerable.");
+}
+if (desc.configurable) {
+ $ERROR("Intl.DateTimeFormat.prototype must not be configurable.");
+}
+
diff --git a/js/src/tests/test262/intl402/ch12/12.2/12.2.2_L15.js b/js/src/tests/test262/intl402/ch12/12.2/12.2.2_L15.js
new file mode 100644
index 000000000..8b21df1fd
--- /dev/null
+++ b/js/src/tests/test262/intl402/ch12/12.2/12.2.2_L15.js
@@ -0,0 +1,14 @@
+// Copyright 2012 Mozilla Corporation. All rights reserved.
+// This code is governed by the license found in the LICENSE file.
+
+/**
+ * @description Tests that Intl.DateTimeFormat.supportedLocalesOf
+ * meets the requirements for built-in objects defined by the introduction of
+ * chapter 15 of the ECMAScript Language Specification.
+ * @author Norbert Lindenberg
+ */
+
+$INCLUDE("testBuiltInObject.js");
+
+testBuiltInObject(Intl.DateTimeFormat.supportedLocalesOf, true, false, [], 1);
+
diff --git a/js/src/tests/test262/intl402/ch12/12.2/12.2.2_a.js b/js/src/tests/test262/intl402/ch12/12.2/12.2.2_a.js
new file mode 100644
index 000000000..42eedc0a1
--- /dev/null
+++ b/js/src/tests/test262/intl402/ch12/12.2/12.2.2_a.js
@@ -0,0 +1,28 @@
+// Copyright 2012 Google Inc. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @description Tests that Intl.DateTimeFormat has a supportedLocalesOf
+ * property, and it works as planned.
+ * @author: Roozbeh Pournader
+ */
+
+var defaultLocale = new Intl.DateTimeFormat().resolvedOptions().locale;
+var notSupported = 'zxx'; // "no linguistic content"
+var requestedLocales = [defaultLocale, notSupported];
+
+var supportedLocales;
+
+if (!Intl.DateTimeFormat.hasOwnProperty('supportedLocalesOf')) {
+ $ERROR("Intl.DateTimeFormat doesn't have a supportedLocalesOf property.");
+}
+
+supportedLocales = Intl.DateTimeFormat.supportedLocalesOf(requestedLocales);
+if (supportedLocales.length !== 1) {
+ $ERROR('The length of supported locales list is not 1.');
+}
+
+if (supportedLocales[0] !== defaultLocale) {
+ $ERROR('The default locale is not returned in the supported list.');
+}
+
diff --git a/js/src/tests/test262/intl402/ch12/12.2/12.2.2_b.js b/js/src/tests/test262/intl402/ch12/12.2/12.2.2_b.js
new file mode 100644
index 000000000..06bc8027e
--- /dev/null
+++ b/js/src/tests/test262/intl402/ch12/12.2/12.2.2_b.js
@@ -0,0 +1,13 @@
+// Copyright 2013 Mozilla Corporation. All rights reserved.
+// This code is governed by the license found in the LICENSE file.
+
+/**
+ * @description Tests that Intl.DateTimeFormat.supportedLocalesOf
+ * doesn't access arguments that it's not given.
+ * @author Norbert Lindenberg
+ */
+
+$INCLUDE("testIntl.js");
+
+taintDataProperty(Object.prototype, "1");
+new Intl.DateTimeFormat("und");
diff --git a/js/src/tests/test262/intl402/ch12/12.2/12.2.3_b.js b/js/src/tests/test262/intl402/ch12/12.2/12.2.3_b.js
new file mode 100644
index 000000000..65fd9dc5f
--- /dev/null
+++ b/js/src/tests/test262/intl402/ch12/12.2/12.2.3_b.js
@@ -0,0 +1,47 @@
+// Copyright 2012 Mozilla Corporation. All rights reserved.
+// This code is governed by the license found in the LICENSE file.
+
+/**
+ * @description Tests that Intl.DateTimeFormat does not accept Unicode locale
+ * extension keys and values that are not allowed.
+ * @author Norbert Lindenberg
+ */
+
+$INCLUDE("testIntl.js");
+
+var locales = ["ja-JP", "zh-Hans-CN", "zh-Hant-TW"];
+var input = new Date(Date.parse("1989-11-09T17:57:00Z"));
+
+locales.forEach(function (locale) {
+ var defaultDateTimeFormat = new Intl.DateTimeFormat([locale]);
+ var defaultOptions = defaultDateTimeFormat.resolvedOptions();
+ var defaultOptionsJSON = JSON.stringify(defaultOptions);
+ var defaultLocale = defaultOptions.locale;
+ var defaultFormatted = defaultDateTimeFormat.format(input);
+
+ var keyValues = {
+ "cu": ["USD", "EUR", "JPY", "CNY", "TWD", "invalid"], // DateTimeFormat internally uses NumberFormat
+ "nu": ["native", "traditio", "finance", "invalid"],
+ "tz": ["usnavajo", "utcw01", "aumel", "uslax", "usnyc", "deber", "invalid"]
+ };
+
+ Object.getOwnPropertyNames(keyValues).forEach(function (key) {
+ keyValues[key].forEach(function (value) {
+ var dateTimeFormat = new Intl.DateTimeFormat([locale + "-u-" + key + "-" + value]);
+ var options = dateTimeFormat.resolvedOptions();
+ if (options.locale !== defaultLocale) {
+ $ERROR("Locale " + options.locale + " is affected by key " +
+ key + "; value " + value + ".");
+ }
+ if (JSON.stringify(options) !== defaultOptionsJSON) {
+ $ERROR("Resolved options " + JSON.stringify(options) + " are affected by key " +
+ key + "; value " + value + ".");
+ }
+ if (defaultFormatted !== dateTimeFormat.format(input)) {
+ $ERROR("Formatted value " + dateTimeFormat.format(input) + " is affected by key " +
+ key + "; value " + value + ".");
+ }
+ });
+ });
+});
+
diff --git a/js/src/tests/test262/intl402/ch12/12.2/12.2.3_c.js b/js/src/tests/test262/intl402/ch12/12.2/12.2.3_c.js
new file mode 100644
index 000000000..0aced6ca9
--- /dev/null
+++ b/js/src/tests/test262/intl402/ch12/12.2/12.2.3_c.js
@@ -0,0 +1,52 @@
+// Copyright 2012 Mozilla Corporation. All rights reserved.
+// This code is governed by the license found in the LICENSE file.
+
+/**
+ * @description Tests that Intl.DateTimeFormat provides the required date-time
+ * format component subsets.
+ * @author Norbert Lindenberg
+ */
+
+$INCLUDE("testIntl.js");
+
+var locales = ["de-DE", "en-US", "hi-IN", "id-ID", "ja-JP", "th-TH", "zh-Hans-CN", "zh-Hant-TW", "zxx"];
+var subsets = [
+ {weekday: "long", year: "numeric", month: "numeric", day: "numeric",
+ hour: "numeric", minute: "numeric", second: "numeric"},
+ {weekday: "long", year: "numeric", month: "numeric", day: "numeric"},
+ {year: "numeric", month: "numeric", day: "numeric"},
+ {year: "numeric", month: "numeric"},
+ {month: "numeric", day: "numeric"},
+ {hour: "numeric", minute: "numeric", second: "numeric"},
+ {hour: "numeric", minute: "numeric"}
+];
+
+locales.forEach(function (locale) {
+ subsets.forEach(function (subset) {
+ var format = new Intl.DateTimeFormat([locale], subset);
+ var actual = format.resolvedOptions();
+ getDateTimeComponents().forEach(function (component) {
+ if (actual.hasOwnProperty(component)) {
+ if (!subset.hasOwnProperty(component)) {
+ $ERROR("Unrequested component " + component +
+ " added to requested subset " + JSON.stringify(subset) +
+ "; locale " + locale + ".");
+ }
+ try {
+ testValidDateTimeComponentValue(component, actual[component]);
+ } catch (e) {
+ e.message += " (Testing locale " + locale + "; subset " +
+ JSON.stringify(subset) + ")";
+ throw e;
+ }
+ } else {
+ if (subset.hasOwnProperty(component)) {
+ $ERROR("Missing component " + component +
+ " from requested subset " + JSON.stringify(subset) +
+ "; locale " + locale + ".");
+ }
+ }
+ });
+ });
+});
+
diff --git a/js/src/tests/test262/intl402/ch12/12.2/browser.js b/js/src/tests/test262/intl402/ch12/12.2/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/intl402/ch12/12.2/browser.js
diff --git a/js/src/tests/test262/intl402/ch12/12.2/shell.js b/js/src/tests/test262/intl402/ch12/12.2/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/intl402/ch12/12.2/shell.js
diff --git a/js/src/tests/test262/intl402/ch12/12.3/12.3.1.js b/js/src/tests/test262/intl402/ch12/12.3/12.3.1.js
new file mode 100644
index 000000000..1755dd64b
--- /dev/null
+++ b/js/src/tests/test262/intl402/ch12/12.3/12.3.1.js
@@ -0,0 +1,14 @@
+// Copyright 2012 Google Inc. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @description Tests that Intl.DateTimeFormat.prototype.constructor is the
+ * Intl.DateTimeFormat.
+ * @author: Roozbeh Pournader
+ */
+
+if (Intl.DateTimeFormat.prototype.constructor !== Intl.DateTimeFormat) {
+ $ERROR("Intl.DateTimeFormat.prototype.constructor is not the same as " +
+ "Intl.DateTimeFormat");
+}
+
diff --git a/js/src/tests/test262/intl402/ch12/12.3/12.3.2_1_a_L15.js b/js/src/tests/test262/intl402/ch12/12.3/12.3.2_1_a_L15.js
new file mode 100644
index 000000000..2fb768d09
--- /dev/null
+++ b/js/src/tests/test262/intl402/ch12/12.3/12.3.2_1_a_L15.js
@@ -0,0 +1,14 @@
+// Copyright 2012 Mozilla Corporation. All rights reserved.
+// This code is governed by the license found in the LICENSE file.
+
+/**
+ * @description Tests that the function returned by Intl.DateTimeFormat.prototype.format
+ * meets the requirements for built-in objects defined by the introduction of
+ * chapter 15 of the ECMAScript Language Specification.
+ * @author Norbert Lindenberg
+ */
+
+$INCLUDE("testBuiltInObject.js");
+
+testBuiltInObject(new Intl.DateTimeFormat().format, true, false, [], 0);
+
diff --git a/js/src/tests/test262/intl402/ch12/12.3/12.3.2_1_c.js b/js/src/tests/test262/intl402/ch12/12.3/12.3.2_1_c.js
new file mode 100644
index 000000000..d4b9f891f
--- /dev/null
+++ b/js/src/tests/test262/intl402/ch12/12.3/12.3.2_1_c.js
@@ -0,0 +1,34 @@
+// Copyright 2012 Mozilla Corporation. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @description Tests that format function is bound to its Intl.DateTimeFormat.
+ * @author Norbert Lindenberg
+ */
+
+$INCLUDE("testIntl.js");
+
+var dates = [new Date(), new Date(0), new Date(Date.parse("1989-11-09T17:57:00Z"))];
+var locales = [undefined, ["de"], ["th-u-ca-gregory-nu-thai"], ["en"], ["ja-u-ca-japanese"], ["ar-u-ca-islamicc-nu-arab"]];
+var options = [
+ undefined,
+ {hour12: false},
+ {month: "long", day: "numeric", hour: "2-digit", minute: "2-digit"}
+];
+
+locales.forEach(function (locales) {
+ options.forEach(function (options) {
+ var formatObj = new Intl.DateTimeFormat(locales, options);
+ var formatFunc = formatObj.format;
+ dates.forEach(function (date) {
+ var referenceFormatted = formatObj.format(date);
+ var formatted = formatFunc(date);
+ if (referenceFormatted !== formatted) {
+ $ERROR("format function produces different result than format method for locales " +
+ locales + "; options: " + (options ? JSON.stringify(options) : options) +
+ " : " + formatted + " vs. " + referenceFormatted + ".");
+ }
+ });
+ });
+});
+
diff --git a/js/src/tests/test262/intl402/ch12/12.3/12.3.2_FDT_1.js b/js/src/tests/test262/intl402/ch12/12.3/12.3.2_FDT_1.js
new file mode 100644
index 000000000..d643d7928
--- /dev/null
+++ b/js/src/tests/test262/intl402/ch12/12.3/12.3.2_FDT_1.js
@@ -0,0 +1,26 @@
+// Copyright 2012 Mozilla Corporation. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @description Tests that format handles non-finite values correctly.
+ * @author Norbert Lindenberg
+ */
+
+var invalidValues = [NaN, Infinity, -Infinity];
+
+var format = new Intl.DateTimeFormat();
+
+invalidValues.forEach(function (value) {
+ var error;
+ try {
+ var result = format.format(value);
+ } catch (e) {
+ error = e;
+ }
+ if (error === undefined) {
+ $ERROR("Invalid value " + value + " was not rejected.");
+ } else if (error.name !== "RangeError") {
+ $ERROR("Invalid value " + value + " was rejected with wrong error " + error.name + ".");
+ }
+});
+
diff --git a/js/src/tests/test262/intl402/ch12/12.3/12.3.2_FDT_7_a_iv.js b/js/src/tests/test262/intl402/ch12/12.3/12.3.2_FDT_7_a_iv.js
new file mode 100644
index 000000000..f13878403
--- /dev/null
+++ b/js/src/tests/test262/intl402/ch12/12.3/12.3.2_FDT_7_a_iv.js
@@ -0,0 +1,32 @@
+// Copyright 2012 Mozilla Corporation. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @description Tests that format uses a proleptic Gregorian calendar with no year 0.
+ * @author Norbert Lindenberg
+ */
+
+var dates = [
+ 0, // January 1, 1970
+ -62151602400000, // in June 1 BC
+ -8640000000000000 // beginning of ECMAScript time
+];
+
+var format = new Intl.DateTimeFormat(["en-US"], {year: "numeric", month: "long", timeZone: "UTC"});
+
+// this test requires a Gregorian calendar, which we usually find in the US
+if (format.resolvedOptions().calendar !== "gregory") {
+ $ERROR("Internal error: Didn't find Gregorian calendar");
+}
+
+dates.forEach(function (date) {
+ var year = new Date(date).getUTCFullYear();
+ var expectedYear = year <= 0 ? 1 - year : year;
+ var expectedYearString = expectedYear.toLocaleString(["en-US"], {useGrouping: false});
+ var dateString = format.format(date);
+ if (dateString.indexOf(expectedYearString) === -1) {
+ $ERROR("Formatted year doesn't contain expected year – expected " +
+ expectedYearString + ", got " + dateString + ".");
+ }
+});
+
diff --git a/js/src/tests/test262/intl402/ch12/12.3/12.3.2_L15.js b/js/src/tests/test262/intl402/ch12/12.3/12.3.2_L15.js
new file mode 100644
index 000000000..73d309e26
--- /dev/null
+++ b/js/src/tests/test262/intl402/ch12/12.3/12.3.2_L15.js
@@ -0,0 +1,14 @@
+// Copyright 2012 Mozilla Corporation. All rights reserved.
+// This code is governed by the license found in the LICENSE file.
+
+/**
+ * @description Tests that the getter for Intl.DateTimeFormat.prototype.format
+ * meets the requirements for built-in objects defined by the introduction of
+ * chapter 15 of the ECMAScript Language Specification.
+ * @author Norbert Lindenberg
+ */
+
+$INCLUDE("testBuiltInObject.js");
+
+testBuiltInObject(Object.getOwnPropertyDescriptor(Intl.DateTimeFormat.prototype, "format").get , true, false, [], 0);
+
diff --git a/js/src/tests/test262/intl402/ch12/12.3/12.3.2_TLT_2.js b/js/src/tests/test262/intl402/ch12/12.3/12.3.2_TLT_2.js
new file mode 100644
index 000000000..bf0a8ed36
--- /dev/null
+++ b/js/src/tests/test262/intl402/ch12/12.3/12.3.2_TLT_2.js
@@ -0,0 +1,16 @@
+// Copyright 2012 Mozilla Corporation. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @description Tests that the behavior of a Record is not affected by adversarial
+ * changes to Object.prototype.
+ * @author Norbert Lindenberg
+ */
+
+$INCLUDE("testIntl.js");
+
+taintProperties(["weekday", "era", "year", "month", "day", "hour", "minute", "second", "inDST"]);
+
+var format = new Intl.DateTimeFormat();
+var time = format.format();
+
diff --git a/js/src/tests/test262/intl402/ch12/12.3/12.3.3.js b/js/src/tests/test262/intl402/ch12/12.3/12.3.3.js
new file mode 100644
index 000000000..b5735c350
--- /dev/null
+++ b/js/src/tests/test262/intl402/ch12/12.3/12.3.3.js
@@ -0,0 +1,52 @@
+// Copyright 2012 Mozilla Corporation. All rights reserved.
+// This code is governed by the license found in the LICENSE file.
+
+/**
+ * @description Tests that the object returned by Intl.DateTimeFormat.prototype.resolvedOptions
+ * has the right properties.
+ * @author Norbert Lindenberg
+ */
+
+$INCLUDE("testIntl.js");
+
+var actual = new Intl.DateTimeFormat().resolvedOptions();
+
+var actual2 = new Intl.DateTimeFormat().resolvedOptions();
+if (actual2 === actual) {
+ $ERROR("resolvedOptions returned the same object twice.");
+}
+
+// source: CLDR file common/bcp47/calendar.xml; version CLDR 21.
+var calendars = [
+ "buddhist",
+ "chinese",
+ "coptic",
+ "ethioaa",
+ "ethiopic",
+ "gregory",
+ "hebrew",
+ "indian",
+ "islamic",
+ "islamicc",
+ "iso8601",
+ "japanese",
+ "persian",
+ "roc"
+];
+
+// this assumes the default values where the specification provides them
+mustHaveProperty(actual, "locale", isCanonicalizedStructurallyValidLanguageTag);
+mustHaveProperty(actual, "calendar", calendars);
+mustHaveProperty(actual, "numberingSystem", isValidNumberingSystem);
+mustHaveProperty(actual, "timeZone", [undefined]);
+mustNotHaveProperty(actual, "weekday");
+mustNotHaveProperty(actual, "era");
+mustHaveProperty(actual, "year", ["2-digit", "numeric"]);
+mustHaveProperty(actual, "month", ["2-digit", "numeric", "narrow", "short", "long"]);
+mustHaveProperty(actual, "day", ["2-digit", "numeric"]);
+mustNotHaveProperty(actual, "hour");
+mustNotHaveProperty(actual, "minute");
+mustNotHaveProperty(actual, "second");
+mustNotHaveProperty(actual, "timeZoneName");
+mustNotHaveProperty(actual, "hour12");
+
diff --git a/js/src/tests/test262/intl402/ch12/12.3/12.3.3_L15.js b/js/src/tests/test262/intl402/ch12/12.3/12.3.3_L15.js
new file mode 100644
index 000000000..1b4079ebe
--- /dev/null
+++ b/js/src/tests/test262/intl402/ch12/12.3/12.3.3_L15.js
@@ -0,0 +1,14 @@
+// Copyright 2012 Mozilla Corporation. All rights reserved.
+// This code is governed by the license found in the LICENSE file.
+
+/**
+ * @description Tests that Intl.DateTimeFormat.prototype.resolvedOptions
+ * meets the requirements for built-in objects defined by the introduction of
+ * chapter 15 of the ECMAScript Language Specification.
+ * @author Norbert Lindenberg
+ */
+
+$INCLUDE("testBuiltInObject.js");
+
+testBuiltInObject(Intl.DateTimeFormat.prototype.resolvedOptions, true, false, [], 0);
+
diff --git a/js/src/tests/test262/intl402/ch12/12.3/12.3_L15.js b/js/src/tests/test262/intl402/ch12/12.3/12.3_L15.js
new file mode 100644
index 000000000..55f1c16ca
--- /dev/null
+++ b/js/src/tests/test262/intl402/ch12/12.3/12.3_L15.js
@@ -0,0 +1,14 @@
+// Copyright 2012 Mozilla Corporation. All rights reserved.
+// This code is governed by the license found in the LICENSE file.
+
+/**
+ * @description Tests that Intl.DateTimeFormat.prototype
+ * meets the requirements for built-in objects defined by the introduction of
+ * chapter 15 of the ECMAScript Language Specification.
+ * @author Norbert Lindenberg
+ */
+
+$INCLUDE("testBuiltInObject.js");
+
+testBuiltInObject(Intl.DateTimeFormat.prototype, false, false, ["constructor", "format", "resolvedOptions"]);
+
diff --git a/js/src/tests/test262/intl402/ch12/12.3/12.3_a.js b/js/src/tests/test262/intl402/ch12/12.3/12.3_a.js
new file mode 100644
index 000000000..e1d795b91
--- /dev/null
+++ b/js/src/tests/test262/intl402/ch12/12.3/12.3_a.js
@@ -0,0 +1,16 @@
+// Copyright 2012 Google Inc. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @description Tests that Intl.DateTimeFormat.prototype is an object that
+ * has been initialized as an Intl.DateTimeFormat.
+ * @author: Roozbeh Pournader
+ */
+
+// test by calling a function that would fail if "this" were not an object
+// initialized as an Intl.DateTimeFormat
+if (typeof Intl.DateTimeFormat.prototype.format(0) !== "string") {
+ $ERROR("Intl.DateTimeFormat's prototype is not an object that has been " +
+ "initialized as an Intl.DateTimeFormat");
+}
+
diff --git a/js/src/tests/test262/intl402/ch12/12.3/12.3_b.js b/js/src/tests/test262/intl402/ch12/12.3/12.3_b.js
new file mode 100644
index 000000000..d905bf571
--- /dev/null
+++ b/js/src/tests/test262/intl402/ch12/12.3/12.3_b.js
@@ -0,0 +1,33 @@
+// Copyright 2012 Mozilla Corporation. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @description Tests that Intl.DateTimeFormat.prototype functions throw a
+ * TypeError if called on a non-object value or an object that hasn't been
+ * initialized as a DateTimeFormat.
+ * @author Norbert Lindenberg
+ */
+
+var functions = {
+ "format getter": Object.getOwnPropertyDescriptor(Intl.DateTimeFormat.prototype, "format").get,
+ resolvedOptions: Intl.DateTimeFormat.prototype.resolvedOptions
+};
+var invalidTargets = [undefined, null, true, 0, "DateTimeFormat", [], {}];
+
+Object.getOwnPropertyNames(functions).forEach(function (functionName) {
+ var f = functions[functionName];
+ invalidTargets.forEach(function (target) {
+ var error;
+ try {
+ f.call(target);
+ } catch (e) {
+ error = e;
+ }
+ if (error === undefined) {
+ $ERROR("Calling " + functionName + " on " + target + " was not rejected.");
+ } else if (error.name !== "TypeError") {
+ $ERROR("Calling " + functionName + " on " + target + " was rejected with wrong error " + error.name + ".");
+ }
+ });
+});
+
diff --git a/js/src/tests/test262/intl402/ch12/12.3/browser.js b/js/src/tests/test262/intl402/ch12/12.3/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/intl402/ch12/12.3/browser.js
diff --git a/js/src/tests/test262/intl402/ch12/12.3/shell.js b/js/src/tests/test262/intl402/ch12/12.3/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/intl402/ch12/12.3/shell.js
diff --git a/js/src/tests/test262/intl402/ch12/12.4/12.4_a.js b/js/src/tests/test262/intl402/ch12/12.4/12.4_a.js
new file mode 100644
index 000000000..8e8d5954c
--- /dev/null
+++ b/js/src/tests/test262/intl402/ch12/12.4/12.4_a.js
@@ -0,0 +1,15 @@
+// Copyright 2012 Mozilla Corporation. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @description Tests that Intl.DateTimeFormat instances have the specified properties.
+ * @author Norbert Lindenberg
+ */
+
+var obj = new Intl.DateTimeFormat();
+
+var toStringValue = Object.prototype.toString.call(obj);
+if (toStringValue !== "[object Object]") {
+ $ERROR("Intl.DateTimeFormat instance produces wrong [[Class]] - toString returns " + toStringValue + ".");
+}
+
diff --git a/js/src/tests/test262/intl402/ch12/12.4/browser.js b/js/src/tests/test262/intl402/ch12/12.4/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/intl402/ch12/12.4/browser.js
diff --git a/js/src/tests/test262/intl402/ch12/12.4/shell.js b/js/src/tests/test262/intl402/ch12/12.4/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/intl402/ch12/12.4/shell.js
diff --git a/js/src/tests/test262/intl402/ch12/browser.js b/js/src/tests/test262/intl402/ch12/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/intl402/ch12/browser.js
diff --git a/js/src/tests/test262/intl402/ch12/shell.js b/js/src/tests/test262/intl402/ch12/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/intl402/ch12/shell.js
diff --git a/js/src/tests/test262/intl402/ch13/13.1/13.1.1_1.js b/js/src/tests/test262/intl402/ch13/13.1/13.1.1_1.js
new file mode 100644
index 000000000..37be9711b
--- /dev/null
+++ b/js/src/tests/test262/intl402/ch13/13.1/13.1.1_1.js
@@ -0,0 +1,24 @@
+// Copyright 2012 Mozilla Corporation. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @description Tests that localeCompare rejects values that can't be coerced to an object.
+ * @author Norbert Lindenberg
+ */
+
+var invalidValues = [undefined, null];
+
+invalidValues.forEach(function (value) {
+ var error;
+ try {
+ var result = String.prototype.localeCompare.call(value, "");
+ } catch (e) {
+ error = e;
+ }
+ if (error === undefined) {
+ $ERROR("String.prototype.localeCompare did not reject this = " + value + ".");
+ } else if (error.name !== "TypeError") {
+ $ERROR("String.prototype.localeCompare rejected this = " + value + " with wrong error " + error.name + ".");
+ }
+});
+
diff --git a/js/src/tests/test262/intl402/ch13/13.1/13.1.1_2.js b/js/src/tests/test262/intl402/ch13/13.1/13.1.1_2.js
new file mode 100644
index 000000000..bad7c0fdd
--- /dev/null
+++ b/js/src/tests/test262/intl402/ch13/13.1/13.1.1_2.js
@@ -0,0 +1,26 @@
+// Copyright 2012 Mozilla Corporation. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @description Tests that localeCompare coerces this to a string.
+ * @author Norbert Lindenberg
+ */
+
+var thisValues = [true, 5, "hello", {toString: function () { return "good bye"; }}];
+var thatValues = ["true", "5", "hello", "good bye"];
+
+var i;
+for (i = 0; i < thisValues.length; i++) {
+ var j;
+ for (j = 0; j < thatValues.length; j++) {
+ var result = String.prototype.localeCompare.call(thisValues[i], thatValues[j]);
+ if ((result === 0) !== (i === j)) {
+ if (result === 0) {
+ $ERROR("localeCompare treats " + thisValues[i] + " and " + thatValues[j] + " as equal.");
+ } else {
+ $ERROR("localeCompare treats " + thisValues[i] + " and " + thatValues[j] + " as different.");
+ }
+ }
+ }
+}
+
diff --git a/js/src/tests/test262/intl402/ch13/13.1/13.1.1_3_1.js b/js/src/tests/test262/intl402/ch13/13.1/13.1.1_3_1.js
new file mode 100644
index 000000000..113a2d9aa
--- /dev/null
+++ b/js/src/tests/test262/intl402/ch13/13.1/13.1.1_3_1.js
@@ -0,0 +1,26 @@
+// Copyright 2012 Mozilla Corporation. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @description Tests that localeCompare coerces that to a string.
+ * @author Norbert Lindenberg
+ */
+
+var thisValues = ["true", "5", "hello", "good bye"];
+var thatValues = [true, 5, "hello", {toString: function () { return "good bye"; }}];
+
+var i;
+for (i = 0; i < thisValues.length; i++) {
+ var j;
+ for (j = 0; j < thatValues.length; j++) {
+ var result = String.prototype.localeCompare.call(thisValues[i], thatValues[j]);
+ if ((result === 0) !== (i === j)) {
+ if (result === 0) {
+ $ERROR("localeCompare treats " + thisValues[i] + " and " + thatValues[j] + " as equal.");
+ } else {
+ $ERROR("localeCompare treats " + thisValues[i] + " and " + thatValues[j] + " as different.");
+ }
+ }
+ }
+}
+
diff --git a/js/src/tests/test262/intl402/ch13/13.1/13.1.1_3_2.js b/js/src/tests/test262/intl402/ch13/13.1/13.1.1_3_2.js
new file mode 100644
index 000000000..441166c9f
--- /dev/null
+++ b/js/src/tests/test262/intl402/ch13/13.1/13.1.1_3_2.js
@@ -0,0 +1,22 @@
+// Copyright 2013 Mozilla Corporation. All rights reserved.
+// This code is governed by the license found in the LICENSE file.
+
+/**
+ * @description Tests that String.prototype.localeCompare treats a missing
+ * "that" argument, undefined, and "undefined" as equivalent.
+ * @author Norbert Lindenberg
+ */
+
+var thisValues = ["a", "t", "u", "undefined", "UNDEFINED", "nicht definiert", "xyz", "未定义"];
+
+var i;
+for (i = 0; i < thisValues.length; i++) {
+ var thisValue = thisValues[i];
+ if (thisValue.localeCompare() !== thisValue.localeCompare(undefined)) {
+ $ERROR("String.prototype.localeCompare does not treat missing 'that' argument as undefined.");
+ }
+ if (thisValue.localeCompare(undefined) !== thisValue.localeCompare("undefined")) {
+ $ERROR("String.prototype.localeCompare does not treat undefined 'that' argument as \"undefined\".");
+ }
+}
+
diff --git a/js/src/tests/test262/intl402/ch13/13.1/13.1.1_6_1.js b/js/src/tests/test262/intl402/ch13/13.1/13.1.1_6_1.js
new file mode 100644
index 000000000..30607d317
--- /dev/null
+++ b/js/src/tests/test262/intl402/ch13/13.1/13.1.1_6_1.js
@@ -0,0 +1,65 @@
+// Copyright 2012 Mozilla Corporation. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @description Tests that String.prototype.localeCompare throws the same exceptions as Intl.Collator.
+ * @author Norbert Lindenberg
+ */
+
+var locales = [null, [NaN], ["i"], ["de_DE"]];
+var options = [
+ {localeMatcher: null},
+ {usage: "invalid"},
+ {sensitivity: "invalid"}
+];
+
+locales.forEach(function (locales) {
+ var referenceError, error;
+ try {
+ var collator = new Intl.Collator(locales);
+ } catch (e) {
+ referenceError = e;
+ }
+ if (referenceError === undefined) {
+ $ERROR("Internal error: Expected exception was not thrown by Intl.Collator for locales " + locales + ".");
+ }
+
+ try {
+ var result = "".localeCompare("", locales);
+ } catch (e) {
+ error = e;
+ }
+ if (error === undefined) {
+ $ERROR("String.prototype.localeCompare didn't throw exception for locales " + locales + ".");
+ } else if (error.name !== referenceError.name) {
+ $ERROR("String.prototype.localeCompare threw exception " + error.name +
+ " for locales " + locales + "; expected " + referenceError.name + ".");
+ }
+});
+
+options.forEach(function (options) {
+ var referenceError, error;
+ try {
+ var collator = new Intl.Collator([], options);
+ } catch (e) {
+ referenceError = e;
+ }
+ if (referenceError === undefined) {
+ $ERROR("Internal error: Expected exception was not thrown by Intl.Collator for options " +
+ JSON.stringify(options) + ".");
+ }
+
+ try {
+ var result = "".localeCompare("", [], options);
+ } catch (e) {
+ error = e;
+ }
+ if (error === undefined) {
+ $ERROR("String.prototype.localeCompare didn't throw exception for options " +
+ JSON.stringify(options) + ".");
+ } else if (error.name !== referenceError.name) {
+ $ERROR("String.prototype.localeCompare threw exception " + error.name +
+ " for options " + JSON.stringify(options) + "; expected " + referenceError.name + ".");
+ }
+});
+
diff --git a/js/src/tests/test262/intl402/ch13/13.1/13.1.1_6_2.js b/js/src/tests/test262/intl402/ch13/13.1/13.1.1_6_2.js
new file mode 100644
index 000000000..481a7803b
--- /dev/null
+++ b/js/src/tests/test262/intl402/ch13/13.1/13.1.1_6_2.js
@@ -0,0 +1,13 @@
+// Copyright 2013 Mozilla Corporation. All rights reserved.
+// This code is governed by the license found in the LICENSE file.
+
+/**
+ * @description Tests that String.prototype.localeCompare uses the standard
+ * built-in Intl.Collator constructor.
+ * @author Norbert Lindenberg
+ */
+
+$INCLUDE("testIntl.js");
+
+taintDataProperty(Intl, "Collator");
+"a".localeCompare("b");
diff --git a/js/src/tests/test262/intl402/ch13/13.1/13.1.1_7.js b/js/src/tests/test262/intl402/ch13/13.1/13.1.1_7.js
new file mode 100644
index 000000000..f0c588f64
--- /dev/null
+++ b/js/src/tests/test262/intl402/ch13/13.1/13.1.1_7.js
@@ -0,0 +1,33 @@
+// Copyright 2012 Mozilla Corporation. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @description Tests that localeCompare produces the same results as Intl.Collator.
+ * @author Norbert Lindenberg
+ */
+
+$INCLUDE("testIntl.js");
+
+var strings = ["d", "O", "od", "oe", "of", "ö", "o\u0308", "X", "y", "Z", "Z.", "𠮷野家", "吉野家", "!A", "A", "b", "C"];
+var locales = [undefined, ["de"], ["de-u-co-phonebk"], ["en"], ["ja"], ["sv"]];
+var options = [
+ undefined,
+ {usage: "search"},
+ {sensitivity: "base", ignorePunctuation: true}
+];
+
+locales.forEach(function (locales) {
+ options.forEach(function (options) {
+ var referenceCollator = new Intl.Collator(locales, options);
+ var referenceSorted = strings.slice().sort(referenceCollator.compare);
+
+ strings.sort(function (a, b) { return a.localeCompare(b, locales, options); });
+ try {
+ testArraysAreSame(referenceSorted, strings);
+ } catch (e) {
+ e.message += " (Testing with locales " + locales + "; options " + JSON.stringify(options) + ".)";
+ throw e;
+ }
+ });
+});
+
diff --git a/js/src/tests/test262/intl402/ch13/13.1/13.1.1_L15.js b/js/src/tests/test262/intl402/ch13/13.1/13.1.1_L15.js
new file mode 100644
index 000000000..d921de000
--- /dev/null
+++ b/js/src/tests/test262/intl402/ch13/13.1/13.1.1_L15.js
@@ -0,0 +1,14 @@
+// Copyright 2012 Mozilla Corporation. All rights reserved.
+// This code is governed by the license found in the LICENSE file.
+
+/**
+ * @description Tests that String.prototype.localeCompare
+ * meets the requirements for built-in objects defined by the introduction of
+ * chapter 15 of the ECMAScript Language Specification.
+ * @author Norbert Lindenberg
+ */
+
+$INCLUDE("testBuiltInObject.js");
+
+testBuiltInObject(String.prototype.localeCompare, true, false, [], 1);
+
diff --git a/js/src/tests/test262/intl402/ch13/13.1/browser.js b/js/src/tests/test262/intl402/ch13/13.1/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/intl402/ch13/13.1/browser.js
diff --git a/js/src/tests/test262/intl402/ch13/13.1/shell.js b/js/src/tests/test262/intl402/ch13/13.1/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/intl402/ch13/13.1/shell.js
diff --git a/js/src/tests/test262/intl402/ch13/13.2/13.2.1_1.js b/js/src/tests/test262/intl402/ch13/13.2/13.2.1_1.js
new file mode 100644
index 000000000..da1ee8fe5
--- /dev/null
+++ b/js/src/tests/test262/intl402/ch13/13.2/13.2.1_1.js
@@ -0,0 +1,37 @@
+// Copyright 2012 Mozilla Corporation. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @description Tests that toLocaleString handles "this Number value" correctly.
+ * @author Norbert Lindenberg
+ */
+
+var invalidValues = [undefined, null, "5", false, {valueOf: function () { return 5; }}];
+var validValues = [5, NaN, -1234567.89, -Infinity];
+
+invalidValues.forEach(function (value) {
+ var error;
+ try {
+ var result = Number.prototype.toLocaleString.call(value);
+ } catch (e) {
+ error = e;
+ }
+ if (error === undefined) {
+ $ERROR("Number.prototype.toLocaleString did not reject this = " + value + ".");
+ } else if (error.name !== "TypeError") {
+ $ERROR("Number.prototype.toLocaleString rejected this = " + value + " with wrong error " + error.name + ".");
+ }
+});
+
+// for valid values, just check that a Number value and the corresponding
+// Number object get the same result.
+validValues.forEach(function (value) {
+ var Constructor = Number; // to keep jshint happy
+ var valueResult = Number.prototype.toLocaleString.call(value);
+ var objectResult = Number.prototype.toLocaleString.call(new Constructor(value));
+ if (valueResult !== objectResult) {
+ $ERROR("Number.prototype.toLocaleString produces different results for Number value " +
+ value + " and corresponding Number object: " + valueResult + " vs. " + objectResult + ".");
+ }
+});
+
diff --git a/js/src/tests/test262/intl402/ch13/13.2/13.2.1_4_1.js b/js/src/tests/test262/intl402/ch13/13.2/13.2.1_4_1.js
new file mode 100644
index 000000000..e6e0b1163
--- /dev/null
+++ b/js/src/tests/test262/intl402/ch13/13.2/13.2.1_4_1.js
@@ -0,0 +1,67 @@
+// Copyright 2012 Mozilla Corporation. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @description Tests that Number.prototype.toLocaleString throws the same exceptions as Intl.NumberFormat.
+ * @author Norbert Lindenberg
+ */
+
+var locales = [null, [NaN], ["i"], ["de_DE"]];
+var options = [
+ {localeMatcher: null},
+ {style: "invalid"},
+ {style: "currency"},
+ {style: "currency", currency: "ßP"},
+ {maximumSignificantDigits: -Infinity}
+];
+
+locales.forEach(function (locales) {
+ var referenceError, error;
+ try {
+ var format = new Intl.NumberFormat(locales);
+ } catch (e) {
+ referenceError = e;
+ }
+ if (referenceError === undefined) {
+ $ERROR("Internal error: Expected exception was not thrown by Intl.NumberFormat for locales " + locales + ".");
+ }
+
+ try {
+ var result = (0).toLocaleString(locales);
+ } catch (e) {
+ error = e;
+ }
+ if (error === undefined) {
+ $ERROR("Number.prototype.toLocaleString didn't throw exception for locales " + locales + ".");
+ } else if (error.name !== referenceError.name) {
+ $ERROR("Number.prototype.toLocaleString threw exception " + error.name +
+ " for locales " + locales + "; expected " + referenceError.name + ".");
+ }
+});
+
+options.forEach(function (options) {
+ var referenceError, error;
+ try {
+ var format = new Intl.NumberFormat([], options);
+ } catch (e) {
+ referenceError = e;
+ }
+ if (referenceError === undefined) {
+ $ERROR("Internal error: Expected exception was not thrown by Intl.NumberFormat for options " +
+ JSON.stringify(options) + ".");
+ }
+
+ try {
+ var result = (0).toLocaleString([], options);
+ } catch (e) {
+ error = e;
+ }
+ if (error === undefined) {
+ $ERROR("Number.prototype.toLocaleString didn't throw exception for options " +
+ JSON.stringify(options) + ".");
+ } else if (error.name !== referenceError.name) {
+ $ERROR("Number.prototype.toLocaleString threw exception " + error.name +
+ " for options " + JSON.stringify(options) + "; expected " + referenceError.name + ".");
+ }
+});
+
diff --git a/js/src/tests/test262/intl402/ch13/13.2/13.2.1_4_2.js b/js/src/tests/test262/intl402/ch13/13.2/13.2.1_4_2.js
new file mode 100644
index 000000000..a79cfffde
--- /dev/null
+++ b/js/src/tests/test262/intl402/ch13/13.2/13.2.1_4_2.js
@@ -0,0 +1,13 @@
+// Copyright 2013 Mozilla Corporation. All rights reserved.
+// This code is governed by the license found in the LICENSE file.
+
+/**
+ * @description Tests that Number.prototype.toLocaleString uses the standard
+ * built-in Intl.NumberFormat constructor.
+ * @author Norbert Lindenberg
+ */
+
+$INCLUDE("testIntl.js");
+
+taintDataProperty(Intl, "NumberFormat");
+(0.0).toLocaleString();
diff --git a/js/src/tests/test262/intl402/ch13/13.2/13.2.1_5.js b/js/src/tests/test262/intl402/ch13/13.2/13.2.1_5.js
new file mode 100644
index 000000000..eb953b64d
--- /dev/null
+++ b/js/src/tests/test262/intl402/ch13/13.2/13.2.1_5.js
@@ -0,0 +1,41 @@
+// Copyright 2012 Mozilla Corporation. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @description Tests that Number.prototype.toLocaleString produces the same results as Intl.NumberFormat.
+ * @author Norbert Lindenberg
+ */
+
+$INCLUDE("testIntl.js");
+
+var numbers = [0, -0, 1, -1, 5.5, 123, -123, -123.45, 123.44501, 0.001234,
+ -0.00000000123, 0.00000000000000000000000000000123, 1.2, 0.0000000012344501,
+ 123445.01, 12344501000000000000000000000000000, -12344501000000000000000000000000000,
+ Infinity, -Infinity, NaN];
+var locales = [undefined, ["de"], ["th-u-nu-thai"], ["en"], ["ja-u-nu-jpanfin"], ["ar-u-nu-arab"]];
+var options = [
+ undefined,
+ {style: "percent"},
+ {style: "currency", currency: "EUR", currencyDisplay: "symbol"},
+ {style: "currency", currency: "IQD", currencyDisplay: "symbol"},
+ {style: "currency", currency: "KMF", currencyDisplay: "symbol"},
+ {style: "currency", currency: "CLF", currencyDisplay: "symbol"},
+ {useGrouping: false, minimumIntegerDigits: 3, minimumFractionDigits: 1, maximumFractionDigits: 3}
+];
+
+locales.forEach(function (locales) {
+ options.forEach(function (options) {
+ var referenceNumberFormat = new Intl.NumberFormat(locales, options);
+ var referenceFormatted = numbers.map(referenceNumberFormat.format);
+
+ var formatted = numbers.map(function (a) { return a.toLocaleString(locales, options); });
+ try {
+ testArraysAreSame(referenceFormatted, formatted);
+ } catch (e) {
+ e.message += " (Testing with locales " + locales + "; options " +
+ (options ? JSON.stringify(options) : options) + ".)";
+ throw e;
+ }
+ });
+});
+
diff --git a/js/src/tests/test262/intl402/ch13/13.2/13.2.1_L15.js b/js/src/tests/test262/intl402/ch13/13.2/13.2.1_L15.js
new file mode 100644
index 000000000..8b53f7496
--- /dev/null
+++ b/js/src/tests/test262/intl402/ch13/13.2/13.2.1_L15.js
@@ -0,0 +1,14 @@
+// Copyright 2012 Mozilla Corporation. All rights reserved.
+// This code is governed by the license found in the LICENSE file.
+
+/**
+ * @description Tests that Number.prototype.toLocaleString
+ * meets the requirements for built-in objects defined by the introduction of
+ * chapter 15 of the ECMAScript Language Specification.
+ * @author Norbert Lindenberg
+ */
+
+$INCLUDE("testBuiltInObject.js");
+
+testBuiltInObject(Number.prototype.toLocaleString, true, false, [], 0);
+
diff --git a/js/src/tests/test262/intl402/ch13/13.2/browser.js b/js/src/tests/test262/intl402/ch13/13.2/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/intl402/ch13/13.2/browser.js
diff --git a/js/src/tests/test262/intl402/ch13/13.2/shell.js b/js/src/tests/test262/intl402/ch13/13.2/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/intl402/ch13/13.2/shell.js
diff --git a/js/src/tests/test262/intl402/ch13/13.3/13.3.0_1.js b/js/src/tests/test262/intl402/ch13/13.3/13.3.0_1.js
new file mode 100644
index 000000000..0f2902162
--- /dev/null
+++ b/js/src/tests/test262/intl402/ch13/13.3/13.3.0_1.js
@@ -0,0 +1,32 @@
+// Copyright 2012 Mozilla Corporation. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @description Tests that Date.prototype.toLocaleString & Co. handle "this time value" correctly.
+ * @author Norbert Lindenberg
+ */
+
+var functions = {
+ toLocaleString: Date.prototype.toLocaleString,
+ toLocaleDateString: Date.prototype.toLocaleDateString,
+ toLocaleTimeString: Date.prototype.toLocaleTimeString
+};
+var invalidValues = [undefined, null, 5, "5", false, {valueOf: function () { return 5; }}];
+
+Object.getOwnPropertyNames(functions).forEach(function (p) {
+ var f = functions[p];
+ invalidValues.forEach(function (value) {
+ var error;
+ try {
+ var result = f.call(value);
+ } catch (e) {
+ error = e;
+ }
+ if (error === undefined) {
+ $ERROR("Date.prototype." + p + " did not reject this = " + value + ".");
+ } else if (error.name !== "TypeError") {
+ $ERROR("Date.prototype." + p + " rejected this = " + value + " with wrong error " + error.name + ".");
+ }
+ });
+});
+
diff --git a/js/src/tests/test262/intl402/ch13/13.3/13.3.0_2.js b/js/src/tests/test262/intl402/ch13/13.3/13.3.0_2.js
new file mode 100644
index 000000000..7d5f32fa6
--- /dev/null
+++ b/js/src/tests/test262/intl402/ch13/13.3/13.3.0_2.js
@@ -0,0 +1,26 @@
+// Copyright 2012 Mozilla Corporation. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @description Tests that Date.prototype.toLocaleString & Co. handle non-finite values correctly.
+ * @author Norbert Lindenberg
+ */
+
+var functions = {
+ toLocaleString: Date.prototype.toLocaleString,
+ toLocaleDateString: Date.prototype.toLocaleDateString,
+ toLocaleTimeString: Date.prototype.toLocaleTimeString
+};
+var invalidValues = [NaN, Infinity, -Infinity];
+
+Object.getOwnPropertyNames(functions).forEach(function (p) {
+ var f = functions[p];
+ invalidValues.forEach(function (value) {
+ var result = f.call(new Date(value));
+ if (result !== "Invalid Date") {
+ $ERROR("Date.prototype." + p + " did not return \"Invalid Date\" for " +
+ value + " – got " + result + " instead.");
+ }
+ });
+});
+
diff --git a/js/src/tests/test262/intl402/ch13/13.3/13.3.0_6_1.js b/js/src/tests/test262/intl402/ch13/13.3/13.3.0_6_1.js
new file mode 100644
index 000000000..c97b240b4
--- /dev/null
+++ b/js/src/tests/test262/intl402/ch13/13.3/13.3.0_6_1.js
@@ -0,0 +1,74 @@
+// Copyright 2012 Mozilla Corporation. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @description Tests that Date.prototype.toLocaleString & Co. throws the same exceptions as Intl.DateTimeFormat.
+ * @author Norbert Lindenberg
+ */
+
+var functions = {
+ toLocaleString: Date.prototype.toLocaleString,
+ toLocaleDateString: Date.prototype.toLocaleDateString,
+ toLocaleTimeString: Date.prototype.toLocaleTimeString
+};
+var locales = [null, [NaN], ["i"], ["de_DE"]];
+var options = [
+ {localeMatcher: null},
+ {timeZone: "invalid"},
+ {hour: "long"},
+ {formatMatcher: "invalid"}
+];
+
+Object.getOwnPropertyNames(functions).forEach(function (p) {
+ var f = functions[p];
+ locales.forEach(function (locales) {
+ var referenceError, error;
+ try {
+ var format = new Intl.DateTimeFormat(locales);
+ } catch (e) {
+ referenceError = e;
+ }
+ if (referenceError === undefined) {
+ $ERROR("Internal error: Expected exception was not thrown by Intl.DateTimeFormat for locales " + locales + ".");
+ }
+
+ try {
+ var result = f.call(new Date(), locales);
+ } catch (e) {
+ error = e;
+ }
+ if (error === undefined) {
+ $ERROR("Date.prototype." + p + " didn't throw exception for locales " + locales + ".");
+ } else if (error.name !== referenceError.name) {
+ $ERROR("Date.prototype." + p + " threw exception " + error.name +
+ " for locales " + locales + "; expected " + referenceError.name + ".");
+ }
+ });
+
+ options.forEach(function (options) {
+ var referenceError, error;
+ try {
+ var format = new Intl.DateTimeFormat([], options);
+ } catch (e) {
+ referenceError = e;
+ }
+ if (referenceError === undefined) {
+ $ERROR("Internal error: Expected exception was not thrown by Intl.DateTimeFormat for options " +
+ JSON.stringify(options) + ".");
+ }
+
+ try {
+ var result = f.call(new Date(), [], options);
+ } catch (e) {
+ error = e;
+ }
+ if (error === undefined) {
+ $ERROR("Date.prototype." + p + " didn't throw exception for options " +
+ JSON.stringify(options) + ".");
+ } else if (error.name !== referenceError.name) {
+ $ERROR("Date.prototype." + p + " threw exception " + error.name +
+ " for options " + JSON.stringify(options) + "; expected " + referenceError.name + ".");
+ }
+ });
+});
+
diff --git a/js/src/tests/test262/intl402/ch13/13.3/13.3.0_6_2.js b/js/src/tests/test262/intl402/ch13/13.3/13.3.0_6_2.js
new file mode 100644
index 000000000..dcce05906
--- /dev/null
+++ b/js/src/tests/test262/intl402/ch13/13.3/13.3.0_6_2.js
@@ -0,0 +1,15 @@
+// Copyright 2013 Mozilla Corporation. All rights reserved.
+// This code is governed by the license found in the LICENSE file.
+
+/**
+ * @description Tests that Date.prototype.toLocaleString & Co. use the standard
+ * built-in Intl.DateTimeFormat constructor.
+ * @author Norbert Lindenberg
+ */
+
+$INCLUDE("testIntl.js");
+
+taintDataProperty(Intl, "DateTimeFormat");
+new Date().toLocaleString();
+new Date().toLocaleDateString();
+new Date().toLocaleTimeString();
diff --git a/js/src/tests/test262/intl402/ch13/13.3/13.3.0_7.js b/js/src/tests/test262/intl402/ch13/13.3/13.3.0_7.js
new file mode 100644
index 000000000..fe7c9271d
--- /dev/null
+++ b/js/src/tests/test262/intl402/ch13/13.3/13.3.0_7.js
@@ -0,0 +1,58 @@
+// Copyright 2012 Mozilla Corporation. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @description Tests that Date.prototype.toLocaleString & Co. produces the same results as Intl.DateTimeFormat.
+ * @author Norbert Lindenberg
+ */
+
+$INCLUDE("testIntl.js");
+
+var functions = {
+ toLocaleString: [Date.prototype.toLocaleString,
+ {year: "numeric", month: "numeric", day: "numeric", hour: "numeric", minute: "numeric", second: "numeric"}],
+ toLocaleDateString: [Date.prototype.toLocaleDateString,
+ {year: "numeric", month: "numeric", day: "numeric"}],
+ toLocaleTimeString: [Date.prototype.toLocaleTimeString,
+ {hour: "numeric", minute: "numeric", second: "numeric"}]
+};
+var dates = [new Date(), new Date(0), new Date(Date.parse("1989-11-09T17:57:00Z"))];
+var locales = [undefined, ["de"], ["th-u-ca-gregory-nu-thai"], ["en"], ["ja-u-ca-japanese"], ["ar-u-ca-islamicc-nu-arab"]];
+var options = [
+ undefined,
+ {hour12: false},
+ {month: "long", day: "numeric", hour: "2-digit", minute: "2-digit"}
+];
+
+Object.getOwnPropertyNames(functions).forEach(function (p) {
+ var f = functions[p][0];
+ var defaults = functions[p][1];
+ locales.forEach(function (locales) {
+ options.forEach(function (options) {
+ var constructorOptions = options;
+ if (options === undefined) {
+ constructorOptions = defaults;
+ } else if (options.day === undefined) {
+ // for simplicity, our options above have either both date and time or neither
+ constructorOptions = Object.create(defaults);
+ for (var prop in options) {
+ if (options.hasOwnProperty(prop)) {
+ constructorOptions[prop] = options[prop];
+ }
+ }
+ }
+ var referenceDateTimeFormat = new Intl.DateTimeFormat(locales, constructorOptions);
+ var referenceFormatted = dates.map(referenceDateTimeFormat.format);
+
+ var formatted = dates.map(function (a) { return f.call(a, locales, options); });
+ try {
+ testArraysAreSame(referenceFormatted, formatted);
+ } catch (e) {
+ e.message += " (Testing with locales " + locales + "; options " +
+ (options ? JSON.stringify(options) : options) + ".)";
+ throw e;
+ }
+ });
+ });
+});
+
diff --git a/js/src/tests/test262/intl402/ch13/13.3/13.3.1_L15.js b/js/src/tests/test262/intl402/ch13/13.3/13.3.1_L15.js
new file mode 100644
index 000000000..a8c697c07
--- /dev/null
+++ b/js/src/tests/test262/intl402/ch13/13.3/13.3.1_L15.js
@@ -0,0 +1,14 @@
+// Copyright 2012 Mozilla Corporation. All rights reserved.
+// This code is governed by the license found in the LICENSE file.
+
+/**
+ * @description Tests that Date.prototype.toLocaleString
+ * meets the requirements for built-in objects defined by the introduction of
+ * chapter 15 of the ECMAScript Language Specification.
+ * @author Norbert Lindenberg
+ */
+
+$INCLUDE("testBuiltInObject.js");
+
+testBuiltInObject(Date.prototype.toLocaleString, true, false, [], 0);
+
diff --git a/js/src/tests/test262/intl402/ch13/13.3/13.3.2_L15.js b/js/src/tests/test262/intl402/ch13/13.3/13.3.2_L15.js
new file mode 100644
index 000000000..5eeed944e
--- /dev/null
+++ b/js/src/tests/test262/intl402/ch13/13.3/13.3.2_L15.js
@@ -0,0 +1,14 @@
+// Copyright 2012 Mozilla Corporation. All rights reserved.
+// This code is governed by the license found in the LICENSE file.
+
+/**
+ * @description Tests that Date.prototype.toLocaleDateString
+ * meets the requirements for built-in objects defined by the introduction of
+ * chapter 15 of the ECMAScript Language Specification.
+ * @author Norbert Lindenberg
+ */
+
+$INCLUDE("testBuiltInObject.js");
+
+testBuiltInObject(Date.prototype.toLocaleDateString, true, false, [], 0);
+
diff --git a/js/src/tests/test262/intl402/ch13/13.3/13.3.3_L15.js b/js/src/tests/test262/intl402/ch13/13.3/13.3.3_L15.js
new file mode 100644
index 000000000..dac7c3513
--- /dev/null
+++ b/js/src/tests/test262/intl402/ch13/13.3/13.3.3_L15.js
@@ -0,0 +1,14 @@
+// Copyright 2012 Mozilla Corporation. All rights reserved.
+// This code is governed by the license found in the LICENSE file.
+
+/**
+ * @description Tests that Date.prototype.toLocaleTimeString
+ * meets the requirements for built-in objects defined by the introduction of
+ * chapter 15 of the ECMAScript Language Specification.
+ * @author Norbert Lindenberg
+ */
+
+$INCLUDE("testBuiltInObject.js");
+
+testBuiltInObject(Date.prototype.toLocaleTimeString, true, false, [], 0);
+
diff --git a/js/src/tests/test262/intl402/ch13/13.3/browser.js b/js/src/tests/test262/intl402/ch13/13.3/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/intl402/ch13/13.3/browser.js
diff --git a/js/src/tests/test262/intl402/ch13/13.3/shell.js b/js/src/tests/test262/intl402/ch13/13.3/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/intl402/ch13/13.3/shell.js
diff --git a/js/src/tests/test262/intl402/ch13/browser.js b/js/src/tests/test262/intl402/ch13/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/intl402/ch13/browser.js
diff --git a/js/src/tests/test262/intl402/ch13/shell.js b/js/src/tests/test262/intl402/ch13/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/intl402/ch13/shell.js
diff --git a/js/src/tests/test262/intl402/shell.js b/js/src/tests/test262/intl402/shell.js
new file mode 100644
index 000000000..2e6826e91
--- /dev/null
+++ b/js/src/tests/test262/intl402/shell.js
@@ -0,0 +1,10 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+/*
+ * Test402 tests all pass unless they throw, and there are no @negative tests.
+ * Once Test262 includes @negative support, and this call in test262-shell.js is
+ * removed, this'll need to be uncommented.
+ */
+//testPassesUnlessItThrows();
diff --git a/js/src/tests/test262/shell.js b/js/src/tests/test262/shell.js
new file mode 100644
index 000000000..b70bb5dbb
--- /dev/null
+++ b/js/src/tests/test262/shell.js
@@ -0,0 +1,940 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+
+//-----------------------------------------------------------------------------
+function compareArray(aExpected, aActual) {
+ if (aActual.length != aExpected.length) {
+ return false;
+ }
+
+ aExpected.sort();
+ aActual.sort();
+
+ var s;
+ for (var i = 0; i < aExpected.length; i++) {
+ if (aActual[i] !== aExpected[i]) {
+ return false;
+ }
+ }
+ return true;
+}
+
+//-----------------------------------------------------------------------------
+function arrayContains(arr, expected) {
+ var found;
+ for (var i = 0; i < expected.length; i++) {
+ found = false;
+ for (var j = 0; j < arr.length; j++) {
+ if (expected[i] === arr[j]) {
+ found = true;
+ break;
+ }
+ }
+ if (!found) {
+ return false;
+ }
+ }
+ return true;
+}
+
+//-----------------------------------------------------------------------------
+var supportsArrayIndexGettersOnArrays = undefined;
+function fnSupportsArrayIndexGettersOnArrays() {
+ if (typeof supportsArrayIndexGettersOnArrays !== "undefined") {
+ return supportsArrayIndexGettersOnArrays;
+ }
+
+ supportsArrayIndexGettersOnArrays = false;
+
+ if (fnExists(Object.defineProperty)) {
+ var arr = [];
+ Object.defineProperty(arr, "0", {
+ get: function() {
+ supportsArrayIndexGettersOnArrays = true;
+ return 0;
+ }
+ });
+ var res = arr[0];
+ }
+
+ return supportsArrayIndexGettersOnArrays;
+}
+
+//-----------------------------------------------------------------------------
+var supportsArrayIndexGettersOnObjects = undefined;
+function fnSupportsArrayIndexGettersOnObjects() {
+ if (typeof supportsArrayIndexGettersOnObjects !== "undefined")
+ return supportsArrayIndexGettersOnObjects;
+
+ supportsArrayIndexGettersOnObjects = false;
+
+ if (fnExists(Object.defineProperty)) {
+ var obj = {};
+ Object.defineProperty(obj, "0", {
+ get: function() {
+ supportsArrayIndexGettersOnObjects = true;
+ return 0;
+ }
+ });
+ var res = obj[0];
+ }
+
+ return supportsArrayIndexGettersOnObjects;
+}
+
+//-----------------------------------------------------------------------------
+function ConvertToFileUrl(pathStr) {
+ return "file:" + pathStr.replace(/\\/g, "/");
+}
+
+//-----------------------------------------------------------------------------
+function fnExists(/*arguments*/) {
+ for (var i = 0; i < arguments.length; i++) {
+ if (typeof (arguments[i]) !== "function") return false;
+ }
+ return true;
+}
+
+//-----------------------------------------------------------------------------
+var __globalObject = Function("return this;")();
+function fnGlobalObject() {
+ return __globalObject;
+}
+
+//-----------------------------------------------------------------------------
+function fnSupportsStrict() {
+ "use strict";
+ try {
+ eval('with ({}) {}');
+ return false;
+ } catch (e) {
+ return true;
+ }
+}
+
+//-----------------------------------------------------------------------------
+//Verify all attributes specified data property of given object:
+//value, writable, enumerable, configurable
+//If all attribute values are expected, return true, otherwise, return false
+function dataPropertyAttributesAreCorrect(obj,
+ name,
+ value,
+ writable,
+ enumerable,
+ configurable) {
+ var attributesCorrect = true;
+
+ if (obj[name] !== value) {
+ if (typeof obj[name] === "number" &&
+ isNaN(obj[name]) &&
+ typeof value === "number" &&
+ isNaN(value)) {
+ // keep empty
+ } else {
+ attributesCorrect = false;
+ }
+ }
+
+ try {
+ if (obj[name] === "oldValue") {
+ obj[name] = "newValue";
+ } else {
+ obj[name] = "OldValue";
+ }
+ } catch (we) {
+ }
+
+ var overwrited = false;
+ if (obj[name] !== value) {
+ if (typeof obj[name] === "number" &&
+ isNaN(obj[name]) &&
+ typeof value === "number" &&
+ isNaN(value)) {
+ // keep empty
+ } else {
+ overwrited = true;
+ }
+ }
+ if (overwrited !== writable) {
+ attributesCorrect = false;
+ }
+
+ var enumerated = false;
+ for (var prop in obj) {
+ if (obj.hasOwnProperty(prop) && prop === name) {
+ enumerated = true;
+ }
+ }
+
+ if (enumerated !== enumerable) {
+ attributesCorrect = false;
+ }
+
+
+ var deleted = false;
+
+ try {
+ delete obj[name];
+ } catch (de) {
+ }
+ if (!obj.hasOwnProperty(name)) {
+ deleted = true;
+ }
+ if (deleted !== configurable) {
+ attributesCorrect = false;
+ }
+
+ return attributesCorrect;
+}
+
+//-----------------------------------------------------------------------------
+//Verify all attributes specified accessor property of given object:
+//get, set, enumerable, configurable
+//If all attribute values are expected, return true, otherwise, return false
+function accessorPropertyAttributesAreCorrect(obj,
+ name,
+ get,
+ set,
+ setVerifyHelpProp,
+ enumerable,
+ configurable) {
+ var attributesCorrect = true;
+
+ if (get !== undefined) {
+ if (obj[name] !== get()) {
+ if (typeof obj[name] === "number" &&
+ isNaN(obj[name]) &&
+ typeof get() === "number" &&
+ isNaN(get())) {
+ // keep empty
+ } else {
+ attributesCorrect = false;
+ }
+ }
+ } else {
+ if (obj[name] !== undefined) {
+ attributesCorrect = false;
+ }
+ }
+
+ try {
+ var desc = Object.getOwnPropertyDescriptor(obj, name);
+ if (typeof desc.set === "undefined") {
+ if (typeof set !== "undefined") {
+ attributesCorrect = false;
+ }
+ } else {
+ obj[name] = "toBeSetValue";
+ if (obj[setVerifyHelpProp] !== "toBeSetValue") {
+ attributesCorrect = false;
+ }
+ }
+ } catch (se) {
+ throw se;
+ }
+
+
+ var enumerated = false;
+ for (var prop in obj) {
+ if (obj.hasOwnProperty(prop) && prop === name) {
+ enumerated = true;
+ }
+ }
+
+ if (enumerated !== enumerable) {
+ attributesCorrect = false;
+ }
+
+
+ var deleted = false;
+ try {
+ delete obj[name];
+ } catch (de) {
+ throw de;
+ }
+ if (!obj.hasOwnProperty(name)) {
+ deleted = true;
+ }
+ if (deleted !== configurable) {
+ attributesCorrect = false;
+ }
+
+ return attributesCorrect;
+}
+
+//-----------------------------------------------------------------------------
+var NotEarlyErrorString = "NotEarlyError";
+var EarlyErrorRePat = "^((?!" + NotEarlyErrorString + ").)*$";
+var NotEarlyError = new Error(NotEarlyErrorString);
+
+//-----------------------------------------------------------------------------
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+function Test262Error(message) {
+ if (message) this.message = message;
+}
+
+Test262Error.prototype.toString = function () {
+ return "Test262 Error: " + this.message;
+};
+
+function testFailed(message) {
+ throw new Test262Error(message);
+}
+
+
+function testPrint(message) {
+
+}
+
+
+//adaptors for Test262 framework
+function $PRINT(message) {
+
+}
+
+function $INCLUDE(message) { }
+function $ERROR(message) {
+ testFailed(message);
+}
+
+function $FAIL(message) {
+ testFailed(message);
+}
+
+
+
+//Sputnik library definitions
+//Ultimately these should be namespaced some how and only made
+//available to tests that explicitly include them.
+//For now, we just define the globally
+
+//math_precision.js
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+function getPrecision(num) {
+ //TODO: Create a table of prec's,
+ // because using Math for testing Math isn't that correct.
+
+ var log2num = Math.log(Math.abs(num)) / Math.LN2;
+ var pernum = Math.ceil(log2num);
+ return (2 * Math.pow(2, -52 + pernum));
+ //return(0);
+}
+
+
+//math_isequal.js
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+var prec;
+function isEqual(num1, num2) {
+ if ((num1 === Infinity) && (num2 === Infinity)) {
+ return (true);
+ }
+ if ((num1 === -Infinity) && (num2 === -Infinity)) {
+ return (true);
+ }
+ prec = getPrecision(Math.min(Math.abs(num1), Math.abs(num2)));
+ return (Math.abs(num1 - num2) <= prec);
+ //return(num1 === num2);
+}
+
+//numeric_conversion.js
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+function ToInteger(p) {
+ var x = Number(p);
+
+ if (isNaN(x)) {
+ return +0;
+ }
+
+ if ((x === +0)
+ || (x === -0)
+ || (x === Number.POSITIVE_INFINITY)
+ || (x === Number.NEGATIVE_INFINITY)) {
+ return x;
+ }
+
+ var sign = (x < 0) ? -1 : 1;
+
+ return (sign * Math.floor(Math.abs(x)));
+}
+
+//Date_constants.js
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+var HoursPerDay = 24;
+var MinutesPerHour = 60;
+var SecondsPerMinute = 60;
+
+var msPerDay = 86400000;
+var msPerSecond = 1000;
+var msPerMinute = 60000;
+var msPerHour = 3600000;
+
+var date_1899_end = -2208988800001;
+var date_1900_start = -2208988800000;
+var date_1969_end = -1;
+var date_1970_start = 0;
+var date_1999_end = 946684799999;
+var date_2000_start = 946684800000;
+var date_2099_end = 4102444799999;
+var date_2100_start = 4102444800000;
+
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+//the following values are normally generated by the sputnik.py driver
+var $LocalTZ,
+ $DST_start_month,
+ $DST_start_sunday,
+ $DST_start_hour,
+ $DST_start_minutes,
+ $DST_end_month,
+ $DST_end_sunday,
+ $DST_end_hour,
+ $DST_end_minutes;
+
+(function () {
+ /**
+ * Finds the first date, starting from |start|, where |predicate|
+ * holds.
+ */
+ var findNearestDateBefore = function(start, predicate) {
+ var current = start;
+ var month = 1000 * 60 * 60 * 24 * 30;
+ for (var step = month; step > 0; step = Math.floor(step / 3)) {
+ if (!predicate(current)) {
+ while (!predicate(current))
+ current = new Date(current.getTime() + step);
+ current = new Date(current.getTime() - step);
+ }
+ }
+ while (!predicate(current)) {
+ current = new Date(current.getTime() + 1);
+ }
+ return current;
+ };
+
+ var juneDate = new Date(2000, 5, 20, 0, 0, 0, 0);
+ var decemberDate = new Date(2000, 11, 20, 0, 0, 0, 0);
+ var juneOffset = juneDate.getTimezoneOffset();
+ var decemberOffset = decemberDate.getTimezoneOffset();
+ var isSouthernHemisphere = (juneOffset > decemberOffset);
+ var winterTime = isSouthernHemisphere ? juneDate : decemberDate;
+ var summerTime = isSouthernHemisphere ? decemberDate : juneDate;
+
+ var dstStart = findNearestDateBefore(winterTime, function (date) {
+ return date.getTimezoneOffset() == summerTime.getTimezoneOffset();
+ });
+ $DST_start_month = dstStart.getMonth();
+ $DST_start_sunday = dstStart.getDate() > 15 ? '"last"' : '"first"';
+ $DST_start_hour = dstStart.getHours();
+ $DST_start_minutes = dstStart.getMinutes();
+
+ var dstEnd = findNearestDateBefore(summerTime, function (date) {
+ return date.getTimezoneOffset() == winterTime.getTimezoneOffset();
+ });
+ $DST_end_month = dstEnd.getMonth();
+ $DST_end_sunday = dstEnd.getDate() > 15 ? '"last"' : '"first"';
+ $DST_end_hour = dstEnd.getHours();
+ $DST_end_minutes = dstEnd.getMinutes();
+
+ return;
+})();
+
+
+//Date.library.js
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+//15.9.1.2 Day Number and Time within Day
+function Day(t) {
+ return Math.floor(t/msPerDay);
+}
+
+function TimeWithinDay(t) {
+ return t%msPerDay;
+}
+
+//15.9.1.3 Year Number
+function DaysInYear(y){
+ if(y%4 != 0) return 365;
+ if(y%4 == 0 && y%100 != 0) return 366;
+ if(y%100 == 0 && y%400 != 0) return 365;
+ if(y%400 == 0) return 366;
+}
+
+function DayFromYear(y) {
+ return (365*(y-1970)
+ + Math.floor((y-1969)/4)
+ - Math.floor((y-1901)/100)
+ + Math.floor((y-1601)/400));
+}
+
+function TimeFromYear(y){
+ return msPerDay*DayFromYear(y);
+}
+
+function YearFromTime(t) {
+ t = Number(t);
+ var sign = ( t < 0 ) ? -1 : 1;
+ var year = ( sign < 0 ) ? 1969 : 1970;
+
+ for(var time = 0;;year += sign){
+ time = TimeFromYear(year);
+
+ if(sign > 0 && time > t){
+ year -= sign;
+ break;
+ }
+ else if(sign < 0 && time <= t){
+ break;
+ }
+ };
+ return year;
+}
+
+function InLeapYear(t){
+ if(DaysInYear(YearFromTime(t)) == 365)
+ return 0;
+
+ if(DaysInYear(YearFromTime(t)) == 366)
+ return 1;
+}
+
+function DayWithinYear(t) {
+ return Day(t)-DayFromYear(YearFromTime(t));
+}
+
+//15.9.1.4 Month Number
+function MonthFromTime(t){
+ var day = DayWithinYear(t);
+ var leap = InLeapYear(t);
+
+ if((0 <= day) && (day < 31)) return 0;
+ if((31 <= day) && (day < (59+leap))) return 1;
+ if(((59+leap) <= day) && (day < (90+leap))) return 2;
+ if(((90+leap) <= day) && (day < (120+leap))) return 3;
+ if(((120+leap) <= day) && (day < (151+leap))) return 4;
+ if(((151+leap) <= day) && (day < (181+leap))) return 5;
+ if(((181+leap) <= day) && (day < (212+leap))) return 6;
+ if(((212+leap) <= day) && (day < (243+leap))) return 7;
+ if(((243+leap) <= day) && (day < (273+leap))) return 8;
+ if(((273+leap) <= day) && (day < (304+leap))) return 9;
+ if(((304+leap) <= day) && (day < (334+leap))) return 10;
+ if(((334+leap) <= day) && (day < (365+leap))) return 11;
+}
+
+//15.9.1.5 Date Number
+function DateFromTime(t) {
+ var day = DayWithinYear(t);
+ var month = MonthFromTime(t);
+ var leap = InLeapYear(t);
+
+ if(month == 0) return day+1;
+ if(month == 1) return day-30;
+ if(month == 2) return day-58-leap;
+ if(month == 3) return day-89-leap;
+ if(month == 4) return day-119-leap;
+ if(month == 5) return day-150-leap;
+ if(month == 6) return day-180-leap;
+ if(month == 7) return day-211-leap;
+ if(month == 8) return day-242-leap;
+ if(month == 9) return day-272-leap;
+ if(month == 10) return day-303-leap;
+ if(month == 11) return day-333-leap;
+}
+
+//15.9.1.6 Week Day
+function WeekDay(t) {
+ var weekday = (Day(t)+4)%7;
+ return (weekday < 0 ? 7+weekday : weekday);
+}
+
+//15.9.1.9 Daylight Saving Time Adjustment
+$LocalTZ = (new Date()).getTimezoneOffset() / -60;
+if (DaylightSavingTA((new Date()).valueOf()) !== 0) {
+ $LocalTZ -= 1;
+}
+var LocalTZA = $LocalTZ*msPerHour;
+
+function DaysInMonth(m, leap) {
+ m = m%12;
+
+ //April, June, Sept, Nov
+ if(m == 3 || m == 5 || m == 8 || m == 10 ) {
+ return 30;
+ }
+
+ //Jan, March, May, July, Aug, Oct, Dec
+ if(m == 0 || m == 2 || m == 4 || m == 6 || m == 7 || m == 9 || m == 11){
+ return 31;
+ }
+
+ //Feb
+ return 28+leap;
+}
+
+function GetSundayInMonth(t, m, count){
+ var year = YearFromTime(t);
+ var tempDate;
+
+ if (count==='"first"') {
+ for (var d=1; d <= DaysInMonth(m, InLeapYear(t)); d++) {
+ tempDate = new Date(year, m, d);
+ if (tempDate.getDay()===0) {
+ return tempDate.valueOf();
+ }
+ }
+ } else if(count==='"last"') {
+ for (var d=DaysInMonth(m, InLeapYear(t)); d>0; d--) {
+ tempDate = new Date(year, m, d);
+ if (tempDate.getDay()===0) {
+ return tempDate.valueOf();
+ }
+ }
+ }
+ throw new Error("Unsupported 'count' arg:" + count);
+}
+/*
+function GetSundayInMonth(t, m, count){
+ var year = YearFromTime(t);
+ var leap = InLeapYear(t);
+ var day = 0;
+
+ if(m >= 1) day += DaysInMonth(0, leap);
+ if(m >= 2) day += DaysInMonth(1, leap);
+ if(m >= 3) day += DaysInMonth(2, leap);
+ if(m >= 4) day += DaysInMonth(3, leap);
+ if(m >= 5) day += DaysInMonth(4, leap);
+ if(m >= 6) day += DaysInMonth(5, leap);
+ if(m >= 7) day += DaysInMonth(6, leap);
+ if(m >= 8) day += DaysInMonth(7, leap);
+ if(m >= 9) day += DaysInMonth(8, leap);
+ if(m >= 10) day += DaysInMonth(9, leap);
+ if(m >= 11) day += DaysInMonth(10, leap);
+
+ var month_start = TimeFromYear(year)+day*msPerDay;
+ var sunday = 0;
+
+ if(count === "last"){
+ for(var last_sunday = month_start+DaysInMonth(m, leap)*msPerDay;
+ WeekDay(last_sunday)>0;
+ last_sunday -= msPerDay
+ ){};
+ sunday = last_sunday;
+ }
+ else {
+ for(var first_sunday = month_start;
+ WeekDay(first_sunday)>0;
+ first_sunday += msPerDay
+ ){};
+ sunday = first_sunday+7*msPerDay*(count-1);
+ }
+
+ return sunday;
+}*/
+
+function DaylightSavingTA(t) {
+// t = t-LocalTZA;
+
+ var DST_start = GetSundayInMonth(t, $DST_start_month, $DST_start_sunday) +
+ $DST_start_hour*msPerHour +
+ $DST_start_minutes*msPerMinute;
+
+ var k = new Date(DST_start);
+
+ var DST_end = GetSundayInMonth(t, $DST_end_month, $DST_end_sunday) +
+ $DST_end_hour*msPerHour +
+ $DST_end_minutes*msPerMinute;
+
+ if ( t >= DST_start && t < DST_end ) {
+ return msPerHour;
+ } else {
+ return 0;
+ }
+}
+
+//15.9.1.9 Local Time
+function LocalTime(t){
+ return t+LocalTZA+DaylightSavingTA(t);
+}
+
+function UTC(t) {
+ return t-LocalTZA-DaylightSavingTA(t-LocalTZA);
+}
+
+//15.9.1.10 Hours, Minutes, Second, and Milliseconds
+function HourFromTime(t){
+ return Math.floor(t/msPerHour)%HoursPerDay;
+}
+
+function MinFromTime(t){
+ return Math.floor(t/msPerMinute)%MinutesPerHour;
+}
+
+function SecFromTime(t){
+ return Math.floor(t/msPerSecond)%SecondsPerMinute;
+}
+
+function msFromTime(t){
+ return t%msPerSecond;
+}
+
+//15.9.1.11 MakeTime (hour, min, sec, ms)
+function MakeTime(hour, min, sec, ms){
+ if ( !isFinite(hour) || !isFinite(min) || !isFinite(sec) || !isFinite(ms)) {
+ return Number.NaN;
+ }
+
+ hour = ToInteger(hour);
+ min = ToInteger(min);
+ sec = ToInteger(sec);
+ ms = ToInteger(ms);
+
+ return ((hour*msPerHour) + (min*msPerMinute) + (sec*msPerSecond) + ms);
+}
+
+//15.9.1.12 MakeDay (year, month, date)
+function MakeDay(year, month, date) {
+ if ( !isFinite(year) || !isFinite(month) || !isFinite(date)) {
+ return Number.NaN;
+ }
+
+ year = ToInteger(year);
+ month = ToInteger(month);
+ date = ToInteger(date );
+
+ var result5 = year + Math.floor(month/12);
+ var result6 = month%12;
+
+ var sign = ( year < 1970 ) ? -1 : 1;
+ var t = ( year < 1970 ) ? 1 : 0;
+ var y = ( year < 1970 ) ? 1969 : 1970;
+
+ if( sign == -1 ){
+ for ( y = 1969; y >= year; y += sign ) {
+ t += sign * DaysInYear(y)*msPerDay;
+ }
+ } else {
+ for ( y = 1970 ; y < year; y += sign ) {
+ t += sign * DaysInYear(y)*msPerDay;
+ }
+ }
+
+ var leap = 0;
+ for ( var m = 0; m < month; m++ ) {
+ //if year is changed, than we need to recalculate leep
+ leap = InLeapYear(t);
+ t += DaysInMonth(m, leap)*msPerDay;
+ }
+
+ if ( YearFromTime(t) != result5 ) {
+ return Number.NaN;
+ }
+ if ( MonthFromTime(t) != result6 ) {
+ return Number.NaN;
+ }
+ if ( DateFromTime(t) != 1 ) {
+ return Number.NaN;
+ }
+
+ return Day(t)+date-1;
+}
+
+//15.9.1.13 MakeDate (day, time)
+function MakeDate( day, time ) {
+ if(!isFinite(day) || !isFinite(time)) {
+ return Number.NaN;
+ }
+
+ return day*msPerDay+time;
+}
+
+//15.9.1.14 TimeClip (time)
+function TimeClip(time) {
+ if(!isFinite(time) || Math.abs(time) > 8.64e15){
+ return Number.NaN;
+ }
+
+ return ToInteger(time);
+}
+
+//Test Functions
+//ConstructDate is considered deprecated, and should not be used directly from
+//test262 tests as it's incredibly sensitive to DST start/end dates that
+//vary with geographic location.
+function ConstructDate(year, month, date, hours, minutes, seconds, ms){
+ /*
+ * 1. Call ToNumber(year)
+ * 2. Call ToNumber(month)
+ * 3. If date is supplied use ToNumber(date); else use 1
+ * 4. If hours is supplied use ToNumber(hours); else use 0
+ * 5. If minutes is supplied use ToNumber(minutes); else use 0
+ * 6. If seconds is supplied use ToNumber(seconds); else use 0
+ * 7. If ms is supplied use ToNumber(ms); else use 0
+ * 8. If Result(1) is not NaN and 0 <= ToInteger(Result(1)) <= 99, Result(8) is
+ * 1900+ToInteger(Result(1)); otherwise, Result(8) is Result(1)
+ * 9. Compute MakeDay(Result(8), Result(2), Result(3))
+ * 10. Compute MakeTime(Result(4), Result(5), Result(6), Result(7))
+ * 11. Compute MakeDate(Result(9), Result(10))
+ * 12. Set the [[Value]] property of the newly constructed object to TimeClip(UTC(Result(11)))
+ */
+ var r1 = Number(year);
+ var r2 = Number(month);
+ var r3 = ((date && arguments.length > 2) ? Number(date) : 1);
+ var r4 = ((hours && arguments.length > 3) ? Number(hours) : 0);
+ var r5 = ((minutes && arguments.length > 4) ? Number(minutes) : 0);
+ var r6 = ((seconds && arguments.length > 5) ? Number(seconds) : 0);
+ var r7 = ((ms && arguments.length > 6) ? Number(ms) : 0);
+
+ var r8 = r1;
+
+ if(!isNaN(r1) && (0 <= ToInteger(r1)) && (ToInteger(r1) <= 99))
+ r8 = 1900+r1;
+
+ var r9 = MakeDay(r8, r2, r3);
+ var r10 = MakeTime(r4, r5, r6, r7);
+ var r11 = MakeDate(r9, r10);
+
+ var retVal = TimeClip(UTC(r11));
+ return retVal;
+}
+
+
+
+/**** Python code for initialize the above constants
+// We may want to replicate the following in JavaScript.
+// However, using JS date operations to generate parameters that are then used to
+// test those some date operations seems unsound. However, it isn't clear if there
+//is a good interoperable alternative.
+
+# Copyright 2009 the Sputnik authors. All rights reserved.
+# This code is governed by the BSD license found in the LICENSE file.
+
+def GetDaylightSavingsTimes():
+# Is the given floating-point time in DST?
+def IsDst(t):
+return time.localtime(t)[-1]
+# Binary search to find an interval between the two times no greater than
+# delta where DST switches, returning the midpoint.
+def FindBetween(start, end, delta):
+while end - start > delta:
+middle = (end + start) / 2
+if IsDst(middle) == IsDst(start):
+start = middle
+else:
+end = middle
+return (start + end) / 2
+now = time.time()
+one_month = (30 * 24 * 60 * 60)
+# First find a date with different daylight savings. To avoid corner cases
+# we try four months before and after today.
+after = now + 4 * one_month
+before = now - 4 * one_month
+if IsDst(now) == IsDst(before) and IsDst(now) == IsDst(after):
+logger.warning("Was unable to determine DST info.")
+return None
+# Determine when the change occurs between now and the date we just found
+# in a different DST.
+if IsDst(now) != IsDst(before):
+first = FindBetween(before, now, 1)
+else:
+first = FindBetween(now, after, 1)
+# Determine when the change occurs between three and nine months from the
+# first.
+second = FindBetween(first + 3 * one_month, first + 9 * one_month, 1)
+# Find out which switch is into and which if out of DST
+if IsDst(first - 1) and not IsDst(first + 1):
+start = second
+end = first
+else:
+start = first
+end = second
+return (start, end)
+
+
+def GetDaylightSavingsAttribs():
+times = GetDaylightSavingsTimes()
+if not times:
+return None
+(start, end) = times
+def DstMonth(t):
+return time.localtime(t)[1] - 1
+def DstHour(t):
+return time.localtime(t - 1)[3] + 1
+def DstSunday(t):
+if time.localtime(t)[2] > 15:
+return "'last'"
+else:
+return "'first'"
+def DstMinutes(t):
+return (time.localtime(t - 1)[4] + 1) % 60
+attribs = { }
+attribs['start_month'] = DstMonth(start)
+attribs['end_month'] = DstMonth(end)
+attribs['start_sunday'] = DstSunday(start)
+attribs['end_sunday'] = DstSunday(end)
+attribs['start_hour'] = DstHour(start)
+attribs['end_hour'] = DstHour(end)
+attribs['start_minutes'] = DstMinutes(start)
+attribs['end_minutes'] = DstMinutes(end)
+return attribs
+
+*********/
+
+//--Test case registration-----------------------------------------------------
+function runTestCase(testcase) {
+ if (testcase() !== true) {
+ $ERROR("Test case returned non-true value!");
+ }
+}
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+/*
+ * The current crop of Test262 test cases that we run are expected to pass
+ * unless they crash or throw. (This isn't true for all Test262 test cases --
+ * for the ones marked @negative the logic is inverted. We'll have to deal with
+ * that concern eventually, but for now we're punting so we can run subsets of
+ * Test262 tests.)
+ */
+testPassesUnlessItThrows();
+
+/*
+ * Test262 function $ERROR throws an error with the message provided. Test262
+ * test cases call it to indicate failure.
+ */
+function $ERROR(msg)
+{
+ throw new Error("Test262 error: " + msg);
+}
+
+/*
+ * Test262 function $INCLUDE loads a file with support functions for the tests.
+ * This function is replaced in browser.js.
+ */
+function $INCLUDE(file)
+{
+ load("supporting/" + file);
+}
+
+/*
+ * Test262 function fnGlobalObject returns the global object.
+ */
+var fnGlobalObject = (function()
+{
+ var global = Function("return this")();
+ return function fnGlobalObject() { return global; };
+})();