summaryrefslogtreecommitdiffstats
path: root/js/src/tests/test262/ch08
diff options
context:
space:
mode:
Diffstat (limited to 'js/src/tests/test262/ch08')
-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
224 files changed, 4559 insertions, 0 deletions
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